chkdsk /r will do sector reads and if the disk reports an error, the file system will try to recover the information on the sector and move it to a good sector; but almost always the disk will not report an error even if the sector has read problems, so long as ECC corrects the error.
So I personally would not use chkdsk /r - this feature predates firmware managing disk sectors logically.
What you want to use is the SMART extended test, which will mark faulty LBA's, and then you can attempt to recover the data on them if you want. Only during a persistently failing write operation will the firmware remove the sector from use (i.e. it no longer has an LBA). This is why it's wise to zero drives periodically, as during a that write operation, any persistent write failure will prompt the drive firmware to remove such sectors from use.
It's faster and more effective to use the ATA Secure Erase feature, which will zero even reserved sectors (ones without LBAs, either bad sectors removed from use or never used sectors).