-
White-Box and Black-Box Testing
-
Black-Box Testing:
- A method of software testing that examines the functionality of an application without peering into its internal structures or workings.
- This method of test can be applied to virtually every level of software testing: unit, integration, system and acceptance.
- It is sometimes referred to as specification-based testing.
-
White-Box Testing:
- aka Clear Box Testing, Glass Box Testing, Transparent Box Testing, and Structural Testing
- A method of testing software that tests internal structures or workings of an application, instead of its functionality, as is done with Black-Box Testing.
- An internal system perspective is used to design test cases. The tester chooses inputs to exercise paths through the code and determine the expected outputs.
- White-box testing can be applied at the unit, integration and system levels of the software testing process. It tests paths within a unit, paths between units during integration, and between subsystems during a system-level test.
- Though this method of test design can uncover many errors or problems, it has the potential to miss unimplemented parts of the specification, or missing requirements.
-
Sandbox:
- A testing environment that isolates untested code changes from the production environment or repository.
- Sandboxing protects live environments from changes that could be (intentionally or unintentionally) damaging, or difficult to revert.
- Sandboxes replicate at least the minimal environmental variables needed to test the code in development.
-
Model Validation and Verification
-
Model Validation
- Ensures that software produced by a development effort is meeting its intended business requirements.
-
Model Verification
- Verify that the software functions properly
- Load (Stress) Testing
-
Static and Dynamic Code Analysis
-
Static Code Analysis:
- Code is analyzed without being executed, either visually or with the aid of automated tools. Static code analysis is meant to locate major code flaws.
-
Dynamic Code Analysis:
- Code is analyzed through testing (execution). This locates minor defects and vulnerabilities that otherwise would not be seen.
-
Synthetic Transactions:
- Scripted sets of inputs given to code when the testers know what output the code should produce for each input.
-
Fuzz Testing (Fuzzing):
- A quality assurance technique used to discover coding errors and security loopholes in software, operating systems or networks. It involves inputting massive amounts of random data, called fuzz, to the test subject in an attempt to make it crash.