Three instrumental means of minimizing the risks of technology are system verification, testing and maintenance. Every aspect of a computer system: hardware, software and communications, should be verified and thoroughly tested before the system is used for an electoral event. After successful testing, systems will need regular maintenance to ensure they will perform effectively when they are needed.
The importance of a technology application very likely determines the degree of rigour applied to verifying, testing and maintaining the technology. In the case, for instance, of a crucial electoral function, such as voting, all components of a voting system: hardware, software and communications should be regularly maintained and then verified and thoroughly tested before the system is used for an election.
System verification
For sensitive systems such as an electronic voting system, it is advisable to employ an independent testing office or organization to perform system verification tests, while for any other systems, proper verification and testing procedures can be developed and implemented in-house.
System verification tests or qualification tests may include:
In addition, measures included in a software audit can include:
Once all the components of the system are verified, a report is issued and the necessary measures need to be taken to correct the problems found during the verification exercise. Once the corrections take place another round of verification needs to take place.
System testing
After a system has been verified, it needs to be thoroughly tested to ensure that every component of the system is performing in accordance with the specific requirements and that it is operating as it should including when the wrong functions are requested or the wrong data is introduced.
Testing measures consist of developing a set of test criteria either for the entire system or for specific hardware, software and communications components. For an important and sensitive system such as an electronic voting system, a structured system testing program may be established to ensure that all aspects of the system are thoroughly tested.
Testing measures that could be followed include:
Test measures for hardware may include:
§ applying “non-operating” tests to ensure that equipment can stand up to expected levels of physical handling
§ testing “hard wired” code in hardware (firmware) to ensure its logical correctness and that appropriate standards are followed
Tests for software components also include:
§ testing all programs to ensure its logical correctness and that appropriate design, development and implementation standards have been followed
§ conducting “load tests”, simulating as close as possible a variety of “real life” conditions using or exceeding the amounts of data that could be expected in an actual situation
§ verifying that integrity of data is maintained throughout its required manipulation
System maintenance
After systems have been verified, tested and implemented, they must continue to be maintained to ensure that they continue to perform correctly and that they can adapt to new requirements if needed.
Ongoing monitoring or testing of systems may need to be systematised to ensure that maintenance needs are identified and met when necessary. Where systems are for extended use, a mechanism can be put in place to monitor feedback from users as another means to determine the need for maintenance and modification.
Maintenance routines vary depending on the type and complexity of the technology. Many items come with a maintenance schedule or program recommended by the manufacturer or supplier. For some hardware and software, maintenance is provided by the manufacturer or supplier as part of the purchase agreement.
Where modifications to hardware, software and/or communications are made as a result of maintenance or upgrades, it may be necessary to conduct further rounds of system verification and testing to ensure that requirements meet the same or updated specifications.
