SQE Lecture 6
SQE Lecture 6
SQE Lecture 6
Engineering
Muhammad Usman
Software Testing
“Testing is the process of executing a program or
system with the intent of finding errors.” by
Myers 1979
Software testing is the process of analyzing a
software item to detect the differences between
existing and required conditions (that is, bugs)
and to evaluate the features of the software item
(IEEE, 1986; IEEE, 1990).
PRINCIPLES OF TESTING
Glenford Myers in his book “The Art of Software
Testing” suggested the following testing
principles.
◦ A necessary part of a test case is a definition of the
expected output or result.
◦ A programmer should avoid attempting to test his or her
own program.
◦ Thoroughly inspect the results of each test.
◦ Test cases must be written for input conditions that are
invalid and unexpected, as well as for those that are
valid and expected.
STATIC TESTING APPROACH
Examining a program to see if it does not do what it is
supposed to do is only half the battle; the other half is
seeing whether the program does what it is not supposed to
do.
Do not plan a testing effort under the assumption that no
errors will be found.
The probability of the existence of more errors in a section
of a program is proportional to the number of errors already
found in that section.
Testing is an extremely creative and intellectually
challenging task.
Exhaustive testing is not possible but we can assure that all
conditions have been exercised.
TESTING LIFE CYCLE
GENERIC TESTING PROCESS
Test Planning:
◦ Define a software test plan by specifying a test schedule for a
test process and its activities.
Test Design and Specification:
◦ Conduct software design based well-defined test generation
methods. Specify test cases to achieve a targeted test coverage.
Test Set up:
◦ Testing tools (Environment Set-up)
Test Operation and Execution:
◦ Run test cases manually or automatically
Test Result Analysis and Reporting:
◦ Report software testing results and conduct test result analysis
GENERIC TESTING PROCESS
Problem Reporting:
◦ Report program errors using a systematic solution.
Test Management and Measurement:
◦ Manage software testing activities, control testing schedule,
measure testing complexity and cost.
Test Automation:
◦ Define software test tools
◦ Adopt and use software test tools
◦ Write software test scripts and facility
Test Configuration Management
◦ Manage and maintain different versions of software test suites,
test environment and tools, and documents for various product
versions.
Software Testing Goals
Requirements quality.
◦ SQA must ensure that the software team has properly reviewed the
requirements model to achieve a high level of quality.
Design quality.
◦ Every element of the design model should be assessed by the software team to
ensure that it exhibits high quality and that the design itself conforms to
requirements.
Code quality.
◦ Source code and related work products (e.g., other descriptive information)
must conform to local coding standards and exhibit characteristics that will
facilitate maintainability.
Resource Management
◦ A software team should apply available resources in a way that has the highest
likelihood of achieving a high-quality result.
◦ SQA analyzes the allocation of resources for reviews and testing to assess
whether they are being allocated in the most effective manner.
SQA TEAM
SOFTWARE TESTING LIMITS
Due to the testing time limit, it is impossible to achieve
total confidence.
We can never be sure the specifications are 100% correct.
Test engineers never be sure that they completely
understand a software product.
We never have enough resources to perform software
testing.
We can never be certain that we achieve 100% adequate
software testing.
TESTING METHODS
Manual Testing
Automated Testing
MANUAL TESTING
This type includes the testing of the Software
manually i.e. without using any automated tool.
In this type the tester takes over the role of an end
user and test the software to identify any
unexpected behavior or bug.
Testers use test plan, test cases or test scenarios to
test the software to ensure the completeness of
testing.
MANUAL TESTING
Condition: Manual tests can be used in situations
where the steps cannot be automated, e.g. to
determine Usability Testing: This is an area in
which you need to measure how user-friendly,
efficient, or convenient the software or product is
for the end users. Here, human observation is the
most important factor, so a manual approach is
preferable.
In manual testing Tester will create test cases,
execute test cases, and write bug report manually.
Limitations: Load testing, performance testing.
MANUAL TESTING