I upload the sketch on the board and let it run for a while, if I disconnect the board from the pc at time (for example) 16:50:10, wait 5 minutes and then reconnect it to the pc, the time that I see on the serial monitor is not 16:55:12, but it's 16:50:12.
So I suppose that the RTC module only keeps date and time, but it doesn't continues to update them even if it has a battery to function when Arduino doesn't have supply.
Is my rtc faulty or (more probably) I'm not properly using it?
if you are powered by USB and you disconnect, then the Arduino stops.
Once you plug it back in, setup() is executed again and depending on how well the rtc.isrunning() flag is managed by your RTC (it checks the Clock Halt bit in register 0) you are at risk of overwriting the time with the compile time
can you add a Serial.println() when you do the adjust() to see if you go through this?
You have to enable the module to get it to run. Also your time set will reset to compile time and lag real time.
Both issues are why there is a sync, so the time can be set and at the synchronization time, counting begins.
Lemme rummage for similar start code.
//
// Fire up RTC
//
rtc.writeProtect(false); //Gotta unlock before letting it run
rtc.halt(false); //Let clock run
//
Great. Next thing to confirm is that the battery voltage is to use a multimeter and confirm the voltage is actually present at the VBat pin of the chip.