Chapter 1
Chapter 1
Testing overview
Bộ môn: Công nghệ phần mềm
Khoa CNTT – Đại học huflit
Objective
• Help students understanding and perceiving the software testing
concepts
• Understanding & Catching the object, the role, the important of
software testing
• Manipulating the process of Software development and Software
Testing
• Catching overview the formality of test, level test, test types…
Contents
• Concepts of testing
• Test requirements
• Objective & role of software testing
• Principles of software testing
• Manual & Automatic testing
• Software development life cycle vs Software testing life cycle
Software testing concepts
1. Test
2. Check
3. View
4. Review:
5. Inspect
6. Verify
7. Validate:
…
Test Requirements Essentials
The formats can be very different. What they look like is unique to every
company and writer. They are hopefully full of useful information.
• Target Platform
• System Requirements
• A description of the functionality
• Intended Use
• Expected Problem Areas
Test requirements
1. AUT:
2. Functional requirements:
3. Non-functional requirements:
4. Environment requirements
5. Performance requirements
6. System requirements
7. Conformation requirements
Test objectives
• Your objective should not be to verify that the program works correctly because:
• If you can’t test the program completely, you can’t verify that it works correctly.
• The program doesn’t work correctly, so you can’t verify that it does.
• Then as a tester, you fail to reach your goal every time you find an error.
• You’ll be more likely to miss problems than if you want and expect the program
to fail.
The Objective of Testing a Program is to Find Problems.
Test objectives (Cont)
Finding problems is the core of your work. You should want to find as many problems
as possible. The more serious the problem tester find, the better tester is.
• “Testing is an infinite process of comparing the invisible to the ambiguous in order to avoid the
unthinkable happening to the anonymous.” James-Bach
A test that reveals a problem is a success. A test that did not reveal a problem is
(often) a waste of time!
The Purpose of Finding Problems is to Get Them Fixed.
• The best tester is not the one who finds the most bugs or who embarrasses the
most programmers.
The best tester is the one who gets the most bugs fixed.
Benefit of software testing
• Software testing has now become a part of programming
• Improve Your Software
• Cost of fixing the bug can be reduced
• Helps to avoid dangerous situations
• Quality assurance
Principles of software testing
1. Testing shows presence of defects
2. Exhaustive testing is impossible
3. Early testing
4. Defect clustering
5. Pesticide paradox
6. Testing is context dependent
7. Absence of error – fallacy
Principles of software testing(CONT)
Testing Shows Presence of Defects:
• Testing shows the presence of defects in the software. The goal of testing is to
make the software fail. Sufficient testing reduces the presence of defects. In case
testers are unable to find defects after repeated regression testing doesn’t mean that
the software is bug-free.
• Testing talks about the presence of defects and don’t talk about the absence of
defects.
Principles of software testing(CONT)
2. Exhaustive Testing is Impossible:
• Testing all the functionalities using all valid and invalid inputs and preconditions is
known as Exhaustive testing.
Why it’s impossible to achieve Exhaustive Testing?
3. Early Testing:
• Defects detected in early phases of SDLC are less expensive to fix. So conducting early testing
reduces the cost of fixing defects.
Principles of software testing(CONT)
4. Defect Clustering:
• Defect Clustering in software testing means that a small module or functionality contains most of
the bugs or it has the most operational failures.
• As per the Pareto Principle (80-20 Rule), 80% of issues comes from 20% of modules and remaining
20% of issues from remaining 80% of modules. So we do emphasize testing on the 20% of
modules where we face 80% of bugs.
5. Pesticide Paradox:
• Pesticide Paradox in software testing is the process of repeating the same test cases again and again,
eventually, the same test cases will no longer find new bugs. So to overcome this Pesticide Paradox,
it is necessary to review the test cases regularly and add or update them to find more defects.
Principles of software testing(CONT)
6. Testing is Context Dependent:
• Testing approach depends on the context of the software we develop. We do test the software
differently in different contexts. For example, online banking application requires a different
approach of testing compared to an e-commerce site.
7. Absence of Error – Fallacy:
• 99% of bug-free software may still be unusable, if wrong requirements were incorporated into the
software and the software is not addressing the business needs.
• The software which we built not only be a 99% bug-free software but also it must fulfill the business
needs otherwise it will become an unusable software.
Manual testing
MANUAL TESTING is a type of Software Testing where Testers manually execute test
cases without using any automation tools.
Manual Testing is the most primitive of all testing types and helps find bugs in the
software system
Any new application must be manually tested before its testing can be automated. Manual
Testing requires more effort but is necessary to check automation feasibility.
Manual Testing does not require knowledge of any testing tool.
• One of the Software Testing Fundamental is "100% Automation is not possible".
• This makes Manual Testing imperative.
Manual testing(CONT)
Goal of Manual Testing
• The key concept of manual testing is to ensure that the application is error free and it is
working in conformance to the specified functional requirements.
• Test Suites or cases, are designed during the testing phase and should have 100% test
coverage.
• It also makes sure that reported defects are fixed by developers and re-testing has been
performed by testers on the fixed defects.
• Basically, this testing checks the quality of the system and delivers bug-free product to
the customer.
Manual testing(CONT)
Types of Manual Testing:
In fact, any type of software
testing type can be executed
both manually as well using an
automation tool.
Manual testing(CONT)
How to perform Manual Testing
1. Read and understand the software project documentation/guides. Also, study the
Application Under Test (AUT) if available.
2. Draft Test cases that cover all the requirements mentioned in the documentation.
3. Review and baseline the test cases with Team Lead, Client (as applicable)
4. Execute the test cases on the AUT
5. Report bugs.
6. Once bugs are fixed, again execute the failing test cases to verify they pass.
Manual testing(CONT)
Myths of Manual Testing
Myth: Anyone can do manual testing
Fact: Testing requires many skill sets
Myth: Testing ensures 100% defects free product
Fact: Testing attempts to find as many defects as possible. Identifying all possible defects is
impossible.
Myth: Automated testing is more powerful than manual testing
Fact: 100% test automation cannot be done. Manual Testing is also essential
Myth: Testing is easy
Fact: Testing can be extremely challenging. Testing an application for possible use cases with
minimum test cases requires high analytical skills.
Automation Testing
• AUTOMATION TESTING means using an automation tool to execute your test
case suite. On the contrary, Manual Testing is performed by a human sitting in front of
a computer carefully executing the test steps.
• The automation software can also enter test data into the System Under Test, compare
expected and actual results and generate detailed test reports. Test Automation
demands considerable investments of money and resources.
• Successive development cycles will require execution of same test suite repeatedly.
Using a test automation tool, it's possible to record this test suite and re-play it as
required. Once the test suite is automated, no human intervention is required. This
improved ROI of Test Automation. The goal of Automation is to reduce the number
of test cases to be run manually and not to eliminate Manual Testing altogether.
Automation Testing (CONT)
Goal of Automation testing
• Reduce the number of testcases to be run manually and not eliminate manual testing all
together
• 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.
•Q & A