0% found this document useful (0 votes)
9 views33 pages

Software Testing 1

The document outlines the course 'Software Quality Assurance and Testing,' detailing its objectives, structure, and the importance of software testing in ensuring product quality. It emphasizes the necessity of testing through historical examples of software failures and discusses various testing methodologies and principles. Additionally, it highlights the relationship between software testing and quality assurance, underscoring the role of testing in the software development lifecycle.

Uploaded by

asdfgasdfg063
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)
9 views33 pages

Software Testing 1

The document outlines the course 'Software Quality Assurance and Testing,' detailing its objectives, structure, and the importance of software testing in ensuring product quality. It emphasizes the necessity of testing through historical examples of software failures and discusses various testing methodologies and principles. Additionally, it highlights the relationship between software testing and quality assurance, underscoring the role of testing in the software development lifecycle.

Uploaded by

asdfgasdfg063
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

Software Quality Assurance

and Testing
Chapter 1: Introduction
Contact Information

➢ Email: (No Anonymous Email)


• shijuan@[Link]

➢ Phone: 18487168848
References

Software Testing, second edition, Ron Patton


Grade Composition
Final grade is calculated based on the following weighted components:
Course Objectives
l Objective 1: Develop a profound understanding of software testing concepts,
as well as the objects, purposes, and principles of testing; master the
fundamental principles and standard processes of software testing; and achieve
proficiency in White-Box testing, Black-Box testing, and Unit testing.
l Objective 2: Understand different types of system testing and their respective
processes; comprehend the characteristics of various system tests and
regression testing strategies; master the methods and tools for functional and
regression testing; and gain familiarity with the methodologies and tools for
performance, stress, capacity, security, fault-tolerance, and compatibility
testing.
l Objective 3: Understand the concepts of software automation testing, its
frameworks, and related technical knowledge; comprehend the underlying
principles of automation implementation; and master the practical application
of automated testing tools.
Course Overview
The course Software Quality Assurance and Testing
consists of a total of 54 credit hours.
The breakdown of the course is as follows:
l Theoretical Instruction: 36 credit hours, spanning from
Week 1 to Week 18.
l Experimental Practice: 18 credit hours, spanning from
Week 5 to Week 13.
Theoretical Instruction
Chapter / Lecture Topic Teaching Hours
Lecture 1 Overview of Software Testing 2 Hours
Lecture 2 Basic Concepts of Software Testing 4 Hours
Lecture 3 Software Testing Methodologies 6 Hours
Lecture 4 Software Testing Processes and 2 Hours
Standards
Lecture 5 Unit Testing and Integration Testing 6 Hours
Lecture 6 System Testing 6 Hours
Lecture 7 Acceptance Testing 2 Hours
Lecture 8 Test Automation and Frameworks 8 Hours
Total 36 Hours
Chapter Contents

01 Necessity of Software Testing 02 Why Conduct Software Testing

Relationship between Testing and


03 What is Software Testing 04
Development

Relationship between Testing and Test-Driven Development


05 06
Quality Assurance Concepts
Bug

What is a bug?

What is your understanding of it?


Bug
Bug
Question

Why
Necessity of Software Testing

Disney Compatibility Crisis (1994)


• "The Lion King" multimedia game release
• Tested only on limited PC systems, many users
unable to run properly
• Customer support overwhelmed by angry parents
after Christmas
Intel Pentium Chip Defect (1994)
• Floating-point division defect
• Loss over $400 million for chip
replacement
• Corporate reputation severely damaged
Software Defects = Huge Losses + Reputation Crisis
Catastrophic Consequences: When Life
and Science Meet Defects
Mars Probe Crash Therac-25 Radiation
(1999) Therapy Device (1980s)
• NASA Mars probe crashed during landing • Radiation therapy device software defect
• Landing switch accidentally triggered by • Cancer patients received severe radiation
mechanical vibration overdose
• Data bit error caused thrusters to shut down • Medical accident causing 4 deaths
at 1800m altitude • Flawed concept of software reliability
• Missing integration testing, interface issues depending on user operation
undetected

Critical Domain Software Defects = Life Cost


Software testing in aerospace, medical and other fields is critical to life safety
Formation and Development of Software Testing
Discipline
Separation of Testing First Official Testing Formal Establishment
and Debugging Conference of the Discipline

Software testing begins to be Bill Hetzel organized the first The definition of software
distinguished from debugging, software testing conference in testing is continuously refined,
becoming an independent activity. history at the University of North and it becomes an independent
Carolina. academic discipline.

From Chaos to Standardized Independence - The Birth of Software Testing Discipline


Formation and Development of Software Testing
Discipline
Separation of Testing First Official Testing Formal Establishment
and Debugging Conference of the Discipline

Software testing begins to be Bill Hetzel organized the first The definition of software
distinguished from debugging, software testing conference in testing is continuously refined,
becoming an independent activity. history at the University of North and it becomes an independent
Carolina. academic discipline.

Software testing is a series of activities designed to evaluate


the characteristics or capabilities of a program or software
system and determine whether it meets expected results
Software Testing Positive Thinking

Dr. Bill Hetzel (Representative of Positive Thinking):

Ø Testing attempts to verify that software is "working", that


is, to verify the correctness of software function execution.

Ø The purpose of testing is to verify whether software


meets predefined requirements

Ø Testing activities are based on people's assumptions or


expected results, referring to requirement definitions
and software design outcomes.
Software Testing Reverse Thinking

Dr. Glenford J. Myers (Representative of Reverse Thinking):

Ø Testing is the process of program execution aimed at


discovering defects
Ø Testing is to prove that programs have errors, not to prove
that programs are error-free
Ø A good test case is one that can discover previously
undiscovered defects
Ø A successful test is one that discovers previously undiscovered
defects
Testing Mindset Clash: Verification vs. Falsification
Verification School: Falsification School:
Bill Hetzel Glenford Myers
1973-1983 1979

Testing builds confidence by Testing is the process of executing


verifying software runs as expected programs to discover errors

• Prove software is correct • Assume software always has errors


• Verify requirements are met • Reverse thinking to find defects
• Build user confidence • Successful testing = Finding problems

Core Value: Reverse thinking drives testers to actively seek system weaknesses
Testing Mindset Clash: Verification vs. Falsification

Positive Evaluate the characteristics or Run all software functions


Thinking- capabilities of a program or in the designed environment
Verify software system and determine whether until all pass
works normally expected results are achieved
Software
Testing
Reverse Find error-prone areas and
Testing is the execution process
Thinking- system weak points, attempt
of a program or system to
Assume to break the system until no
discover errors
software has problems are found
errors
Definition of Software Testing

IEEE Definition:
Ø The process of using manual or automated means to run
or test a software system, with the purpose of verifying
whether the tested system meets specified requirements or
clarifying the differences between expected and actual
results.
Definition of Software Testing

Software testing is a whole composed of "Verification"


and "Validation" activities

Ø “Verification” is to check whether the software has


correctly implemented the system functions and
features defined in the product specification

Ø “Validation” is the activity to confirm whether the


developed software meets the real needs of users
Other Perspectives on Software Testing
Ø Software testing is considered an activity to assess potential various
quality risks in software systems. Exhaustive testing is impossible;
Risk Assessment testing is a sampling activity where risks always exist. Risk-based testing
Perspective emphasizes monitoring the entire software development process,
discovering and reporting problems promptly to reduce risks of adverse
customer impact.
Ø Economic perspective of testing is to achieve the highest software
product quality at the lowest cost. The economic perspective also requires
Economic Benefit software testing to start as early as possible; the earlier defects are found,
Perspective
the less rework is needed, and the smaller the losses. Testing is
meaningful only when testing cost < losses caused by defects.
Why Conduct Software Testing?

Key Step in Quality Assurance


Software testing is a key step in software quality assurance

Post-coding fix cost = 10x pre-coding cost


Post-delivery fix cost = 10x pre-delivery cost

Economic
Defects Are Inevitable
Considerations
Regardless of technologies
and methods used, errors will The earlier defects are found,
still exist in software the lower the development cost

International renowned IT companies spend over 50% of R&D budget on testing


The Value of Software Testing

Ø Comprehensive Quality Assessment


Obtain comprehensive and objective information regarding product quality.
Ø Issue Identification & Resolution
Discover problems and urge their resolution to improve overall product quality.
Ø Continuous Feedback & Risk Mitigation
Provide ongoing quality feedback and reveal quality risks in a timely manner.
This helps control project risks and improves the quality of builds.
Ø Defect Analysis & Prevention
Analyze defects to identify patterns, which assists in future defect prevention.
Principles of Software Testing

Ø Testing shows the presence of defects


Ø Exhaustive testing is impossible
Ø Early testing
Ø Defect clustering (2/8 Principle)
Ø Pesticide Paradox
Ø Testing is context dependent
Ø Absence-of- defects fallacy
The Relationship Between Testing and Development:
A V-Model Perspective
Requirements Analysis Acceptance Testing
and Definition

System Design System Non-Functional


Characteristics Verification
Functional Testing
Detailed Functional
Build Process Design Verification Process
Coding Unit Testing

• 需求验证 ↔ 验收测试
• 系统架构设计验证 ↔ 系统非功能性测试
• 产品详细设计验证 ↔ 功能测试
• 代码验证 ↔ 单元测试和集成测试
测试贯穿软件全生命周期
Software Quality Assurance (SQA)

Software Quality Assurance (SQA) activities are a systematic


engineering process that verifies whether software conforms to
standards through planned reviews and audits of software
products. By coordinating, reviewing, and tracking, SQA gathers
useful information and generates analytical results to guide the
software process.
Relationship between SQA and
Software Testing?
SQA vs. Software Testing

Ø SQA guides and supervises the planning and execution of


software testing, ensures that test results are objective, accurate,
and effective, and assists in the improvement of testing
processes.
Ø Software testing is one of the important means of SQA,
providing the necessary data to serve as an objective basis for
quality evaluation.
l SQA is a management activity.
l Testing is a technical activity.
Summary

Ø Why carry out software testing activities?


Ø What is software testing?
Ø Principles of software testing ?
Ø Relationship between software testing and development ?
Ø Relationship between software testing and quality assurance
(SQA) ?

You might also like