0% found this document useful (0 votes)
66 views35 pages

01.let's Start!

The document discusses various software testing concepts and approaches. It defines software testing, provides examples of recent software failures to motivate testing, and describes different testing goals, principles, phases, and types including unit testing, integration testing, black box testing, white box testing, and test-driven development. It also discusses who performs testing and the benefits of testing such as cost-effectiveness, security, quality, and customer satisfaction.

Uploaded by

sycb2xktn4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views35 pages

01.let's Start!

The document discusses various software testing concepts and approaches. It defines software testing, provides examples of recent software failures to motivate testing, and describes different testing goals, principles, phases, and types including unit testing, integration testing, black box testing, white box testing, and test-driven development. It also discusses who performs testing and the benefits of testing such as cost-effectiveness, security, quality, and customer satisfaction.

Uploaded by

sycb2xktn4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

Let’s Start!

‫لر ِح ِيم‬ ‫ه‬


ٰ ‫ٱلر ْحم ِن ٱ‬ ‫ه‬
ٰ ‫' ِب ْس ِم‬
ٰ ِ‫ٱَّلل‬
PMIT 6111: Software Testing and Quality Assurance
Why we need to test software?
• Pfizer vaccine rollout delays
• Tesla Autopilot crashes
• Southwest Airlines Flight cancellations
• Cloudflare outage
• Zoom security breach
• Facebook outage
• Microsoft Exchange hack
• Read the full story here:
https://www.linkedin.com/pulse/most-recent-major-qa-failures-qaiser-abbas
What Testing Shows

Errors/bugs/defects
Requirements conformance
Performance
An indication of
quality

3
What is Software Testing?
• As per ANSI/IEEE 1059, Testing in Software Engineering is a process of evaluating
a software product to find whether the current software product meets the
required conditions or not. The testing process involves evaluating the features of
the software product for requirements in terms of any missing requirements,
bugs or errors, security, reliability and performance.
• Testing is a process of finding defects or errors and confirming user requirements.
Program testing goals
• To demonstrate to the developer and the customer that the software meets its
requirements.
• For custom software, this means that there should be at least one test for every requirement in the
requirements document.
• For generic software products, it means that there should be tests for all of the system features,
plus combinations of these features, that will be incorporated in the product release.
• To discover error or the situations in which the behavior of the software is incorrect,
undesirable or does not conform to its specification.
• Defect testing is concerned with rooting out undesirable system behavior such as
• system crashes
• unwanted interactions with other systems
• incorrect computations
• data corruption.

5
Principles of Testing
1. Testing Shows the Presence of Defects, Not Their Absence
2. Exhaustive Testing is Impossible
3. Early Testing Saves Time and Money
4. Defects Cluster Together -- approximately 80% of the problems are
found in 20% of the modules.
5. Beware of Pesticide Paradox
6. Testing is Context-dependent
7. Absence-of-errors is a Fallacy

6
V&V
Verification Validation
Verification addresses the concern: "Are you Validation addresses the concern: "Are you
building it right?" building the right thing?"
Ensures that the software system meets all the Ensures that the functionalities meet the
functionality. intended behavior.
Verification takes place first and includes the Validation occurs after verification and mainly
checking for documentation, code, etc. involves the checking of the overall product.
Done by developers. Done by testers.
It has static activities, as it includes collecting
It has dynamic activities, as it includes executing
reviews, walkthroughs, and inspections to verify a
the software against the requirements.
software.

It is an objective process and no subjective It is a subjective process and involves subjective


decision should be needed to verify a software. decisions on how well a software works.
7
Requirement Analysis

Software Design

Development
Coding
Phases
Testing

Maintenance
8
Waterfall vs agile

9
https://agilemanifesto.org/

10
A ‘prescribing
medication’ story

11
Examples of task cards for
prescribing medication

12
Test case description for dose
checking

13
Test-first development
• Writing tests before code clarifies the requirements to be
implemented.

• Tests are written as programs rather than data so that they can be
executed automatically. The test includes a check that it has executed
correctly.
• Usually relies on a testing framework such as JUNIT.

• All previous and new tests are run automatically when new
functionality is added, thus checking that the new functionality has
not introduced errors.
14
Test-driven development
• Test-driven development (TDD) is an approach to program development in which
you inter-leave testing and code development.
• Tests are written before code and ‘passing’ the tests is the critical driver of
development.
• You develop code incrementally, along with a test for that increment. You don’t
move on to the next increment until the code that you have developed passes its
test.
• TDD was introduced as part of agile methods such as Extreme Programming.
However, it can also be used in plan-driven development processes.

15
Test-driven development

16
TDD process activities
• Start by identifying the increment of functionality that is required. This should
normally be small and implementable in a few lines of code.
• Write a test for this functionality and implement this as an automated test.
• Run the test, along with all other tests that have been implemented. Initially, you
have not implemented the functionality so the new test will fail.
• Implement the functionality and re-run the test.
• Once all tests run successfully, you move on to implementing the next chunk of
functionality.

17
Agile Testing Strategies

18
Who Tests the Software?

developer independent tester

Understands the system


Must learn about the system,
but, will test "gently" but, will attempt to break it
and, is driven by "delivery" and, is driven by quality

19
Who Tests the Software?
• Software Tester
• Software Developer
• Project Lead/Manager
• End User
• Different companies have different designations for people who test the software
on the basis of their experience and knowledge such as Software Tester, Software
Quality Assurance Engineer, QA Analyst, etc.
What are the benefits of Software Testing?
• Cost-Effective: It is one of the important advantages of software testing.
Testing any IT project on time helps you to save your money for the long
term. In case if the bugs caught in the earlier stage of software testing, it
costs less to fix.
• Security: It is the most vulnerable and sensitive benefit of software testing.
People are looking for trusted products. It helps in removing risks and
problems earlier.
• Product quality: It is an essential requirement of any software product.
Testing ensures a quality product is delivered to customers.
• Customer Satisfaction: The main aim of any product is to give satisfaction
to their customers. UI/UX Testing ensures the best user experience.
A model of the software testing process

22
White Box Testing
• In white-box testing, the developer will inspect every line of code before handing
it over to the testing team or the concerned test engineers.
• White box testing is also known as open box testing, glass box testing, structural
testing, clear box testing, and transparent box testing.
• Exercise all input and output parameters of each component.
• Exercise all components and all calls (each component is called at least once
and every component is called by all possible callers.)
• Use conditional and iteration testing as in unit testing.

23
Black Box Testing
• Another type of manual testing is black-box testing. In this testing,
the test engineer will analyze the software against requirements,
identify the defects or bug, and sends it back to the development
team.
• The source code is not visible in this testing; that's why it is known
as black-box testing.

24
Types of Software Testing
• Functional Testing
• Unit Testing
• Integration Testing
• Smoke
• UAT ( User Acceptance Testing)
• Localization
• Globalization
• Interoperability
• So on
• Non-Functional Testing or Performance Testing
• Performance
• Endurance
• Load
• Volume
• Scalability
• Usability
• So on
• Maintenance (Regression and Maintenance)
• Regression
• Maintenance
Stages of testing
• Development testing, where the
system is tested during development
to discover bugs and defects.
• Release testing, where a separate
testing team test a complete version
of the system before it is released to
users.
• User testing, where users or potential
users of a system test the system in
their own environment.

26
Gray Box Testing
• Another part of manual testing is Grey box testing. It is a collaboration of black
box and white box testing.
• Since, the grey box testing includes access to internal coding for designing test
cases. Grey box testing is performed by a person who knows coding as well as
testing.
• In other words, we can say that if a single-person team done both white box and
black-box testing, it is considered grey box testing.

27
Automation Testing
• The most significant part of Software testing is Automation testing. It uses specific
tools to automate manual design test cases without any human interference.
• Automation testing is the best way to enhance the efficiency, productivity, and
coverage of Software testing.
• It is used to re-run the test scenarios, which were executed manually, quickly, and
repeatedly.
• In other words, we can say that whenever we are testing an application by using
some tools is known as automation testing.

28
Tips of Testing
• Think -- before you act to correct
• Use tools to gain additional insight
• If you’re at an impasse, get help from someone else
• Once you correct the bug, use regression testing to uncover any side
effects

29
Skills required to become a Software Tester
Technical Skills
• Basic Knowledge of Database
• Basic knowledge of Linux commands
• Knowledge and hands-on experience of a Test Management Tool
• Knowledge and hands-on experience of any Defect Tracking tool
• Knowledge and hands-on experience of Automation tool
• Knowledge of any scripting language like VBScript, JavaScript, C# is always helpful as a tester
if you are looking for a job into automation
Myths of Testing
• Myth 1: Testing is Too Expensive
• Myth 2: Testing is Time-Consuming
• Myth 3: Only Fully Developed Products are Tested
• Myth 4: Complete Testing is Possible
• Myth 5: A Tested Software is Bug-Free
• Myth 6: Missed Defects are due to Testers
• Myth 7: Testers are Responsible for Quality of Product
• Myth 8: Test Automation should be used wherever possible to Reduce Time
• Myth 9: Anyone can Test a Software Application
• Myth 10: A Tester's only Task is to Find Bugs
Certification Exams
1. CAST (Certified Associate in Software Testing)
2. CSQA (Certified Software Quality Analyst Certification)
3. International Software Testing Qualifications Board (ISTQB) Certification
4. Certified Quality Engineer (CQE)
5. Certified Manager of Software Testing (CMST)
6. Certified Software Tester (CSTE)
7. ISTQB Foundation Level (CTFL)
Details: https://www.geeksforgeeks.org/software-testing-certifications/
https://katalon.com/resources-center/blog/automation-testing-tools
Reference
1. Roger S. Pressman, “Software Engineering: A Practitioner’s Approach”, 7th
edition
2. Ian Sommerville, “software Engineering”, 9th edition.
3. https://www.tutorialspoint.com/software_testing/index.htm
4. https://www.guru99.com/software-testing.html

35

You might also like