0% found this document useful (0 votes)
22 views

PMIT 6111 Lecture 1 Introduction to SDLC

PMIT 6111 Lecture 1 Introduction to SDLC
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

PMIT 6111 Lecture 1 Introduction to SDLC

PMIT 6111 Lecture 1 Introduction to SDLC
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 37

PMIT 6111

Software Testing and Quality Assurance

Lecture 01
INTRODUCTION

by
Md. Mahmudur Rahman
Lecturer
Institute of Information Technology
Why we need to test software?
•Vaccine rollout delays
•Tesla Autopilot crashes
•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
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.
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
Verification & Validation
Verification Validation
Verification addresses the concern: "Are Validation addresses the concern: "Are
you building it right?" you 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 Validation occurs after verification and
the checking for documentation, code, etc. mainly 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
reviews, walkthroughs, and inspections to executing the software against the
verify a software. requirements.

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


decision should be needed to verify a subjective decisions on how well a software
software. works.
7
E-commerce Website Testing
Verification:
1.Requirement Analysis: Review the business requirements for
the e-commerce website, such as user registration, product
search, and payment processing.
2.Design Review: Evaluate the system design documents to
ensure they meet the specified requirements. This includes
reviewing database schema, user interface designs, and
system architecture.
3.Code Walkthrough: Conduct code walkthroughs with the
development team to check for adherence to coding standards
and identify potential issues early in the development phase.
4.Inspection: Perform inspections of the test cases and test
plans to ensure they cover all the requirements and are
designed correctly.

8
E-commerce Website Testing
Validation:
1.Functional Testing: Execute functional tests to verify that the
website meets the specified requirements. This includes
testing user registration, product search, and payment
processing functionalities.
2.System Testing: Conduct system testing to validate that the
entire e-commerce system works as expected in an integrated
environment.
3.User Acceptance Testing (UAT): Involve end-users to
validate that the website meets their business needs and is
user-friendly.
4.Performance Testing: Validate the performance of the
website under various load conditions to ensure it can handle
expected traffic.

9
Software
Development
Phases
Waterfall vs Agile

Two popular methods for organizing projects


11
A ‘prescribing medication’ story
11
Examples of task cards for prescribing medication
12
Test case description for dose checking
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.

16
Test-driven development
• Test-driven development (TDD) is an approach to program
development in which you interleave testing and code development.
• Interleaving is a paired test that evaluates user preference between
two connected systems.

• 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.

17
Test-driven development

18
TDD process activities
• Start by identifying the increment of functionality that is required.
This should normally be small & implementable in a few lines of
code.
• Write a test for this functionality and implement as an automated
test.

• Run the test, along with all other tests that have been implemented.
Initially, if you havent implemented the functionality 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.
Agile Testing Strategies
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
Who Tests the Software?
1. Software Tester
2. Software Developer
3. Project Lead/Manager
4. End User
5. 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
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.
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, also known as clear box or glass box testing, is a method of
testing software where the internal structure, design, and implementation
of the software are examined. This testing approach requires knowledge of
the internal workings of the application, which differentiates it from black box
testing where the focus is only on the functionality.
❖ 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.
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.
• Black box testing focuses on the functionality of the
application without examining its internal code or structure.
The tester interacts with the system's user interface by
providing inputs and examining the outputs without knowing
how and where the inputs are worked upon.

28
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.
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.

30
Tips of Testing

• Think -- before you act to correct


• Use tools to gain additional insight
• If you’re at an standoff, get help from someone else
• Once you correct the bug, use regression testing to uncover
any side effects
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/
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