12.03 Testing
#blackbox #whitebox #testing #SEPM #unittests
- Software testing is a crucial task in software development
- Testing is a key part of the Verification and Validation Process
- Verification: Are we building the product right
- Validation: Are we building the right product
- Testing is a method of validation called Dynamic Testing
- Testing provides the last opportunity to find bugs and assess quality
- This requires us to have a good approach towards software testing
- It can be viewed as a spiral model
- where testing progresses through different levels
| Testing |
|---|
| UNIT TESTING |
| INTEGRATION TESTING |
| VALIDATION TESTING |
| SYSTEM TESTING |
Unit Testing
- This level focuses on verifying the smallest unit of software design such as a module (unit).
- It is whitebox (Means the internal structure and code are visibile to testers) oriented
- It involves exercising specific paths within a modules control strucuture
- module interfaces, local data structures, boundary conditions, error handling
- Can be parrallelized for multiple compontents
Integration Testing
- After Unit testing when all the compontents are being put together is when Integration comes into play
- Integration testing makes sure that all modules are working together based on the design from the unit tested components
- Incremental Integration: where the program is built and tested in small increments is preferred over big-bang approach
- Top Down Integration: which starts with the main control module and integrates submodules
- Bottom Up Integration: which starts with the lowest level components and combines them into clusters tested with drivers
- Regression Testing: Whenever a new module is added in integration we run a subset of tests again to make sure nothing that previous worked has stopped working
- Smoke Testing: This is an agile fuckery bro. "An integration testing approach often used for shrink wrapped software serving as a pacing mechanism it involves integratin software components into a build and conducting tests daily to expose errors early"
- Alpha Beta Testing
- alpha: Coduncted at developer's site by a customer under controlled conditions
- Beta: Conducted at customers site by end-users in a live environment
- Mostly Black-box (Testers can only see external functionality and not the actual code) testing techniques are used
Validation Testing
- After integration testing validation testing does the following:
- Make sure the software meets functional behavioral and performance requirements
- Focuses on validation requirements established during software requirements analysis
- again blackbox tested
- valdation succeeds when the software fucntions as reasonably expected by the customer
System Testing
- Final level where the combined system (hardware, people, databases) are tested as a whole
- Verify all elements work as intended and required performance is met
- Security testing, Stress testing, Performance Testing (cook pls)