Test command produces "Extra" errors

Not at all. If it were totally normal, it would normally happen, right? It’s rather hard to even force this.
Have you read through the issue?

Meaning what exactly? In the GUI, I think you get a red popup for an error, and yellow for a warning.
Some people (maybe including you IIRC) have opinions on levels. Some would like fewer warnings.

My own testing while researching to write the issue was a command line run. I don’t have old output.
I set up a fancier error by editing dindex file dblock index, fixing DB size and hash, and running test.

Running commandline entry
Finished!

            
  Listing remote folder ...
  Downloading file (647 bytes) ...
  Downloading file (647 bytes) ...
  Downloading file (694 bytes) ...
duplicati-i82e64e6790274843a13be40f297e66fc.dindex.zip: 2 errors
	Missing: 06CMxdyOi3kfKwq1k4XDtubnkvVDmN5/0AvCmK6+Tt8=
	Extra: 16CMxdyOi3kfKwq1k4XDtubnkvVDmN5/0AvCmK6+Tt8=

Return code: 3

I think the low return codes (maybe below 100) are not errors. I forget the exact return code scheme.

In the GUI, I ran Verify manually. The job has full-remote-verification on, and the Complete log said:

            {
  "MainOperation": "Test",
  "VerificationsActualLength": 3,
  "Verifications": [
    {
      "Key": "duplicati-20220427T113152Z.dlist.zip",
      "Value": []
    },
    {
      "Key": "duplicati-i82e64e6790274843a13be40f297e66fc.dindex.zip",
      "Value": [
        {
          "Key": "Missing",
          "Value": "06CMxdyOi3kfKwq1k4XDtubnkvVDmN5/0AvCmK6+Tt8="
        },
        {
          "Key": "Extra",
          "Value": "16CMxdyOi3kfKwq1k4XDtubnkvVDmN5/0AvCmK6+Tt8="
        }
      ]
    },
    {
      "Key": "duplicati-ba728e4517ca44f3193a344c400daabd8.dblock.zip",
      "Value": []
    }
  ],
  "ParsedResult": "Success",
  "Version": "2.0.6.102 (2.0.6.102_canary_2022-04-06)",
  "EndTime": "2022-04-27T11:40:57.5454052Z",
  "BeginTime": "2022-04-27T11:40:56.7553437Z",
  "Duration": "00:00:00.7900615",
  "MessagesActualLength": 9,
  "WarningsActualLength": 0,
  "ErrorsActualLength": 0,
  "Messages": [
    "2022-04-27 07:40:56 -04 - [Information-Duplicati.Library.Main.Controller-StartingOperation]: The operation Test has started",
    "2022-04-27 07:40:56 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Started:  ()",
    "2022-04-27 07:40:56 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Completed:  (3 bytes)",
    "2022-04-27 07:40:57 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Get - Started: duplicati-20220427T113152Z.dlist.zip (647 bytes)",
    "2022-04-27 07:40:57 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Get - Completed: duplicati-20220427T113152Z.dlist.zip (647 bytes)",
    "2022-04-27 07:40:57 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Get - Started: duplicati-i82e64e6790274843a13be40f297e66fc.dindex.zip (647 bytes)",
    "2022-04-27 07:40:57 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Get - Completed: duplicati-i82e64e6790274843a13be40f297e66fc.dindex.zip (647 bytes)",
    "2022-04-27 07:40:57 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Get - Started: duplicati-ba728e4517ca44f3193a344c400daabd8.dblock.zip (694 bytes)",
    "2022-04-27 07:40:57 -04 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Get - Completed: duplicati-ba728e4517ca44f3193a344c400daabd8.dblock.zip (694 bytes)"
  ],
  "Warnings": [],
  "Errors": [],
  "BackendStatistics": {
    "RemoteCalls": 4,
    "BytesUploaded": 0,
    "BytesDownloaded": 1988,
    "FilesUploaded": 0,
    "FilesDownloaded": 3,
    "FilesDeleted": 0,
    "FoldersCreated": 0,
    "RetryAttempts": 0,
    "UnknownFileSize": 0,
    "UnknownFileCount": 0,
    "KnownFileCount": 3,
    "KnownFileSize": 1988,
    "LastBackupDate": "2022-04-27T07:31:52-04:00",
    "BackupListCount": 1,
    "TotalQuotaSpace": 999618043904,
    "FreeQuotaSpace": 129548185600,
    "AssignedQuotaSpace": -1,
    "ReportedQuotaError": false,
    "ReportedQuotaWarning": false,
    "MainOperation": "Test",
    "ParsedResult": "Success",
    "Version": "2.0.6.102 (2.0.6.102_canary_2022-04-06)",
    "EndTime": "0001-01-01T00:00:00",
    "BeginTime": "2022-04-27T11:40:56.7553437Z",
    "Duration": "00:00:00",
    "MessagesActualLength": 0,
    "WarningsActualLength": 0,
    "ErrorsActualLength": 0,
    "Messages": null,
    "Warnings": null,
    "Errors": null
  }
}

but there were no popups in the GUI, and the above not-user-friendly JSON looks happy with result.
Running a backup winds up the same way. These in my view are under-reporting the Missing block.

It’s not clear exactly what you would have liked if there was only an Extra, or if this really affects you.
The return code 3 affects my testing because it’s noise that I need to look at manually and not worry.

Likely a script could examine, but I didn’t write that yet. Detailed studies are more work, and I’m not positive Duplicati is doing a detailed study. It might just be reporting that it got some miscomparison.

Anyone who wants to dig into the code might start looking at the TestVolumeInternals code in file:
https://github.com/duplicati/duplicati/blob/master/Duplicati/Library/Main/Operation/TestHandler.cs

The possible enumerations (and some commentary about what they are meant for) might be below: