This is an old revision of the document!
Overview
Condensation of software testing tutorial here.
STUFF
General points
- Use library routines as much as possible.
- Use REGEX parsers to validate input, this forces you to clarify valid input.
- Library packages frequently come with userspace demo programs.
- Emphasize libraries to identify dependencies.
- Static analyzers
- gcc/C11 debugging features
- -Wall
- extensions and attributes
Tools to automate testing
- Selenium
- QTP
- Jmeter
- Loadrunner
- TestLink
- Quality Center (ALM)
Testing Fundamentals
What is software testing?
Verification of Application Under Test (AUT).
Types:
- functional
- unit
- integration
- smoke
- user acceptance (UAT)
- interoperability
- non-functional
- performance
- endurance
- load
- volume
- scalability
- usability
- maintenance
- regression
- maintenance
Software testing as a career path
Non-technical skills:
- analytical
- communication
- time management/organizational
Technical skills:
- database/SQL
- test management tools
- defect tracking tools
- automation tools
7 software testing principles
- Exhaustive testing is generally not possible.
- Defect clustering (most defects clustered in small number of modules)
- Pesticide paradox (same tests gradually become ineffective)
- Presence of defects
- Absence of error
- Early testing
- Testing is context dependent
V model
- SDLC: Software development life cycle
- STLC: Software test life cycle
- V Model: combination of the above
STLC - Software testing life cycle
Each phase has entry criteria and exit criteria:
- Requirements analysis
- functional vs non-functional
- Test planning
- Test case development
- Environment setup
- Test execution
- Test cycle closure
Types of testing
Manual testing
- acceptance
- integration
- system
- unit
- white vs black box
Automation testing
Why?
- Manual Testing of all workflows, all fields, all negative scenarios is time and money consuming
- It is difficult to test for multilingual sites manually
- Automation does not require Human intervention. You can run automated test unattended (overnight)
- Automation increases the speed of test execution
- Automation helps increase Test Coverage
- Manual Testing can become boring and hence error-prone.
Stuff that can be automated:
- Smoke Testing
- Unit Testing
- Integration Testing
- Functional Testing
- Keyword Testing
- Regression Testing
- Data Driven Testing
- Black Box Testing
Automation vs manual
Unit testing
- isolate a section of code and verify its correctness
Coverage testing categories:
- statement
- decision
- branch
- condition
- finite state machine