Subscribe by Email


Showing posts with label Visibility. Show all posts
Showing posts with label Visibility. Show all posts

Thursday, September 23, 2010

Two heuristics of Software testing : Visibility and Control

Software testability is how easily, completely and conveniently a computer program can be tested. Software engineers design a computer product, system or program keeping in mind the product testability. Good programmers are willing to do things that will help the testing process and a checklist of possible design points, features and so on can be useful in negotiating with them.
Visibility has already been discussed.

Control refers to our ability to provide inputs and reach states in the software under test. The features to improve controllability are:
- Test Points: Allows the data to be inspected, inserted or modified at points in the software. It is especially useful for data-flow applications. In addition, a pipe and filters architecture provides many opportunities for test points.

- Custom User Interface Controls: Custom UI controls often raise serious testability problems with GUI test drivers. Ensuring testability usually requires adding methods to report necessary information, customizing test tools to make use of these methods, getting a tool expert to advise developers on testability and to build the required support and asking the third party control vendors regarding support by test tools.

- Test Interfaces: Interfaces may be provided specifically for testing e.g. Excel and Xconq etc.Existing interfaces may be able to support significant testing e.g. InstallShield, AutoCad, Tivoli etc.

- Fault Injection: Error seeding, instrumenting low level input/output code to simulate errors makes it much easier to test error handling. It can be handled at both system and application level.

- Installation and Setup: Testers should be notified when installation has completed successfully. They should be able to verify installation, pro grammatically create sample records and run multiple clients, daemons or servers on a single machine.


Wednesday, September 22, 2010

Two heuristics of Software testing : Visibility and Control

Software testability is how easily, completely and conveniently a computer program can be tested. Software engineers design a computer product, system or program keeping in mind the product testability. Good programmers are willing to do things that will help the testing process and a checklist of possible design points, features and so on can be useful in negotiating with them.
Visibility will be discussed in this section.

The two main heuristics of software testing are :
Visibility:
Visibility is our ability to observe the states and outputs of the software under test. The features to improve the visibility are :
- Access to code: Developers must provide full access(source code, infrastructure, etc) to testers. The code, change records and design documents should be provided to the testing team. The testing team should read and understand the code.
- Event Logging: The events to log include user events, system milestones, error handling and complete transactions. The logs may be stored in files, ring buffers in memory and/or serial ports.
- Error detection mechanisms: Data integrity checking and system level error detection are useful error detection mechanisms. In addition, assertions and probes with the following features are really helpful:
+ Code is added to detect internal errors.
+ Assertions abort an error.
+ Probes log errors.
+ Design by contract theory : It requires assertions be defined for functions. Preconditions apply to input and violations implicate calling functions while post-conditions apply to outputs and violations implicate called functions.
- Resource Monitoring: Memory usage should be monitored to find memory leaks. States of running methods, threads or processes should be watched. In addition, the configuration values should be dumped. Resource monitoring is of particular concern in applications where the load on the application in real time is estimated to be considerable.


Facebook activity