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
cppcheck
clang (scan-build)
gcc/C11 debugging features
Add checking to version control hooks (cppcheck with Git)
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
Software testing as a career path
Non-technical skills:
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
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
Coverage testing categories:
statement
decision
branch
condition
finite state machine
Integration testing
System testing
Different types of system testing:
Usability Testing - Usability Testing mainly focuses on the user's ease to use the application, flexibility in handling controls and ability of the system to meet its objectives
Load Testing - Load Testing is necessary to know that a software solution will perform under real-life loads.
Regression Testing- - Regression Testing involves testing done to make sure none of the changes made over the course of the development process have caused new bugs. It also makes sure no old bugs appear from the addition of new software modules over time.
Recovery Testing - Recovery testing is done to demonstrate a software solution is reliable, trustworthy and can successfully recoup from possible crashes.
Migration Testing - Migration testing is done to ensure that the software can be moved from older system infrastructures to current system infrastructures without any issues.
Functional Testing - Also known as functional completeness testing, Functional Testing involves trying to think of any possible missing functions. Testers might make a list of additional functionalities that a product could have to improve it during functional testing.
Hardware/Software Testing - IBM refers to Hardware/Software testing as “HW/SW Testing”. This is when the tester focuses his/her attention on the interactions between the hardware and software during system testing.
Sanity vs smoke testing
Regression testing
Non-functional testing
performance
endurance
load
volume
scalability
usability
STUFF
Test documentation
Test scenario vs Test case
Test analysis (test basis)
Requirements traceability matrix (RTM)
Test data generation
Generated:
Manually
Mass copy of data from production to testing environment
Mass copy of test data from legacy client systems
Automated Test Data Generation Tools