Please enable JavaScript.
Coggle requires JavaScript to display documents.
Software Engineering E: Software Testing (Fundamentals/7 Principles of…
Software Engineering E: Software Testing
The
What
&
Why
of Software Testing
Why is testing needed?
to verify software system behaves the way it should
keep software under control so that it does not cause harm
What is software testing?
systematic approach to find and report defects of a software system
once tested and defects are identified, necessary corrections are followed up
Why is software testing more than just error detection?
verify that it behaves as specified
detect errors
validate that what has been specified is what the user wanted
Verifications
checking or testing of items for conformance and consistency by evaluating the results against pre-specified requirements
Error Detection
find errors in software
if there are no errors, the software is deemed acceptable
Validation
validation checks to see if we are building what the customer wants/needs
validation checks to see if we are building that system correctly
Fundamentals/
7 Principles
of Software Testing
Testing shows the presence of bugs
show that problems exist, not that problems do not exist
Exhaustive testing is impossible
feeds all possible data combinations into the software, to ensure that no untested situation can arise once released
number of possible data combinations is forbiddingly high
more effective and efficient for testers to focus on risks and priorities
Early testing
testing ASAP, fix errors as quickly as possible
errors identified late in the development process cost more to resolve
Defect clustering
problems in an item of software tend to cluster around a limited set of modules or areas
once identified, efficient test managers are able to focus testing on the sensitive areas while still searching for errors
The 'Pesticide' Paradox
set of tests that is used repeatedly on the same software product will decrease in efficiacy
using a variety of tests and techniques will expose a range of defects across different areas of the product
Testing is context dependent
same tests should not be applied across the board
different software products have varying requirements, functions and purposes
the higher the probability and impact of damage caused by failed software, the greater the investment in performing software tests
Absence of errors fallacy
no errors does not equal error free
testers should assume that all software contain some faults
Test Levels
Software Defect
mistake in design or code that causes the software system to fail
Testing Levels
Integration Testing
bottom-up
top-down
combination of both
Unit Testing
software development process in which the smallest testable parts of an application, called units, are individually and independently scrutinized for proper operation
Why use unit testing?
individual programmer's responsibility to ensure the code written is working
reduces complexity of the overall system testing as it allows us to focus only on a single component
easier to detect and correct the defects given that only a single component is tested
allows concurrent testing on different components at the same time
System Testing
black box testing technique performed to evaluate the complete system and the system's compliance against specified requirements
tested from end-to-end perspective
When to use system testing?
after integrating all the components of one final system
Acceptance Testing
final phase of testing before the system goes live
carried out by end-users at the user's environment
Test Case Design Techniques
White Box
focus on internal constructs
read program in order to come out with test cases
done by software develepors
Path Testing
Black Box
focus on the functional aspect of the system
does not need access the program in order to come out with test cases
done during user acceptance testing
Use Case testing
Equivalence Partitioning
Boundary Value Analysis
Test Case
describes an input, action or event and an expected response, to determine if a feature of a software application is working correctly
Test Management
focus on other aspects of managing the testing activities
Test Planning
test plan out all the activities for testing in the project so that the efforts and duration can be estimated
Monitoring and Control
track the progress of various test levels and it's activities
Configuration Management
control the versions of each release of the source files throughout the testing process
Incident Management
to have proper workflow to handle incident reports raised throughout the testing process