In this post I ask and answer 5 quick questions about software testing that any software engineer should know. Try to answer the questions before looking at the answers!
1. Why are coding standards and tools like Checkstyle important? Is running Checkstyle an 'expensive' operation?
Coding standards help by enforcing consistency that makes code easier to read and understand across an organization. Enforcing standards saves time by allowing developers to spend more time coding and less time formatting it. Once the standards are agreed upon, tools like Checkstyle can be run often, from a build script, with almost no 'cost'.
2. Why is "exhaustive" testing difficult?
There are too many possible program inputs and outputs to 'exhaustively' prove that a program is "correct".
3. What is equivalence partitioning?
Equivalence partitioning divides all possible input data into classes or partitions that represent each input 'partition', such that testing one value is equivalent to testing all values in that 'partition'. For example, if the input is a number, a test design heuristic might suggest the following test values: typical, empty or null, illegal, minimum, and maximum, too small a value, and too large a value.
4. What type of errors cannot be detected with white-box testing?
Errors of omission, i.e. code that should have been written - missing exception handlers, missing conditional tests, missing tests for validating command line argument formats.
5. What is the difference between validation and verification testing?
Validation testing basically tests that "we are we building the right software to get the job done" and verification testing tests that "we are building it correctly". In addition, validation testing involves the customer, and verification testing involves the code-base.
No comments:
Post a Comment