Software System Tests vs. Software Verification
Software verification on the other hand is done on the “pull request level” - you write some code and then you stuff like code review and run some CI tests before you merge it to master. That’s software verification in the 62304 sense.
So, for all software requirements for which you already had unit / integration tests, you’re covered. Just ensure that you run them again (and have proof for it!) prior to releasing a new public version of your medical device software.
But some of your software requirements may not be implemented in code. Let’s see how that’s possible.
Two Examples
- Firewall is set up and only ports 80 and 443 are open (security requirement).
- Data is stored in data centers located in Germany (data privacy / GDPR requirement).
Easy. Regulation is all about having documentation which proves something. The actual technical implementation doesn’t have to be elegant (hence all the crappy medical software out there). In this case, we could just take screenshots of the configuration in the AWS / GCP cloud console. Yes, seriously. Of course, you could go ahead and write a test for this, port-scanning your server etc., but just checking the config value would be the more straightforward solution.
Human (Manual) Testing
In any case, your situation is not hopeless.. yet. You can still fall back to human (QA?) testing. In other words, you create a test protocol in which you list the steps which should be performed for each “test”. The tester has to document their results. And, like always, it’s good to have some proof, in this case, screenshots.
This will slow down your release cycle substantially for obvious reasons. So try to automate as much of your testing as possible.
But, in my experience, there always is some human testing involved. You’ll need developers to check configuration values (see prior section). And you’ll need testers to go through some GUI flows which aren’t covered by automatic tests. By the way, those testers can be people from your company, no need to sign an expensive testing lab.
Re-do All Tests After Minor Code Changes?
Putting it Together: Ensure Traceability
Let’s say you have these simplified software requirements (here’s the article on how to write them):
ID |
Software System |
Category |
Description |
|---|---|---|---|
1 |
App |
Functional |
On first launch, show introduction |
2 |
Backend |
Functional |
Login is only possible with valid email and password |
3 |
Backend |
Security |
Data is stored in data centers located in Germany |
These are interesting examples, because the “testing” strategy is different for each of them. The first one will be tested manually, the second one automatically and proof for the third one is a screenshot of the configuration.
I’ve uploaded a complete software system plan template, but for these examples, let’s look at a simplified version. It could look like this;
SR ID refers to the tested software requirement ID.
SR ID |
Description |
Steps |
Expected |
Actual |
Pass? |
|---|---|---|---|---|---|
1 |
Introduction shown on first launch |
1. Install app
|
Intro shown |
Intro shown |
Pass |
2 |
Only correct email/password combination can log in |
1. Execute automated tests |
Tests succeed |
Tests succeed |
Pass |
3 |
Data is stored in data centers located in Germany |
1. Verify configuration |
Config correct |
Config correct |
Pass |
And then, feel free to add attachments as appropriate. For 1., you could add a screenshot, for 2. a log of the test execution and for 3. a screenshot from your cloud console. I suppose the screenshot would be most important for 3. as otherwise there isn’t any proof at all that you checked the configuration.
Which leads us to the question: Do you always need some sort of proof?
Do You Always Need Screenshots Or Proof?
If you want to take make things lean, you could omit proof for automated tests - no need to copy-paste random console output into random documents. As long as your test results are stored somewhere in your CI system and you can retrieve it on-demand if your auditor asks you, you’re fine.
Conclusion: Have Proof and Traceability
- Have proof (test plan + protocol) that all your software requirements are covered by tests.
- You need traceability to show which test covered which requirement.