190 likes | 202 Views
This guide explores the aspects of quality software such as flexibility, extensibility, correctness, robustness, reliability, safety, and usability. It delves into verification and validation processes, different kinds of testing like unit, integration, system, regression, and acceptance testing, and understanding failures, faults (bugs), errors, and fault failures. It also explains the importance of test cases, test suites, and ideal tests. Additionally, it discusses what to test, the difference between blackbox and whitebox testing, and test criteria for effective software testing practices.
E N D
Aspects of Quality Software • Flexibility • Extensibility • Correctness • Robustness • Reliability • Safety • Usability
Aspects of Quality Software • Flexibility – Applicability in novel contexts • Extensibility • Correctness • Robustness • Reliability • Safety • Usability
Aspects of Quality Software • Flexibility – Applicability in novel contexts • Extensibility – Ability to add functionality • Correctness • Robustness • Reliability • Safety • Usability
Aspects of Quality Software • Flexibility – Applicability in novel contexts • Extensibility – Ability to add functionality • Correctness – Consistency with specs. • Robustness • Reliability • Safety • Usability
Aspects of Quality Software • Flexibility – Applicability in novel contexts • Extensibility – Ability to add functionality • Correctness – Consistency with specs. • Robustness – Resilience to abnormality • Reliability • Safety • Usability
Aspects of Quality Software • Flexibility – Applicability in novel contexts • Extensibility – Ability to add functionality • Correctness – Consistency with specs. • Robustness – Resilience to abnormality • Reliability – Requests handled consistently • Safety • Usability
Aspects of Quality Software • Flexibility – Applicability in novel contexts • Extensibility – Ability to add functionality • Correctness – Consistency with specs. • Robustness – Resilience to abnormality • Reliability – Requests handled consistently • Safety – Avoids dangerous behaviors • Usability
Aspects of Quality Software • Flexibility – Applicability in novel contexts • Extensibility – Ability to add functionality • Correctness – Consistency with specs. • Robustness – Resilience to abnormality • Reliability – Requests handled consistently • Safety – Avoids dangerous behaviors • Usability – Affords its functionality
Verification and Validation • Validation – Are we building the right product? • Verification
Verification and Validation • Validation – Are we building the right product? • Verification – Are we building the product right?
Kinds of Testing • Unit • Integration • System • Regression • Acceptance
/ Things fall apart… • Failures • Faults (a.k.a. bug) • Errors • Fault Failure
What is a Test? • What is a program? • Test Suite – some subset of the inputs. • Test Case – is one particular input. • Ideal Test – a test case where the correctness of the test implies the correctness of the program for all other inputs.
Test this! • 16 digits & up: loss of mathematical precision. • 23 digits & up: can’t see all of the input. • 310 digits & up: input not understood as a number. • 1,000 digits & up: exponentially increasing freeze when navigating to the end of the field by pressing <END>. • 23,829 digits & up: all text in field turns white. • 2,400,000 digits: crash (reproducible).
What you didn’t try input with 2,400,000 digits!? • Seduced by what’s visible. • Think they need a spec that tells them the max. • If they have a spec, they stop when the spec says stop. • Satisfied by the first boundary (16 digits). • Let their fingers do the walking instead of using a program like notepad to generate input. • Use strictly linear lengthening strategy. • Don’t realize the significance of degradation. • Assume it will be too hard and take too long. • Think “No one would do that” (hackers do it)
Exhaustive Testing int sum(int a, int b) {return a + b;}
What to Test? • Blackbox • Based on a functional specification of the software • Scales to different granularity levels • Cannot reveal dataflow errors • Whitebox • Based on the dataflow of the program • Does not scale with granularity levels • Cannot reveal errors due to missing paths • Test Criteria • Whitebox – Cover execution paths • Blackbox – Cover input space