Please enable JavaScript.
Coggle requires JavaScript to display documents.
Software Testing - Coggle Diagram
Software Testing
Test Design Techniques
Identifying and designing test cases
Phases of Test Development
Quality risk analysis
input
project plans
product requirements
system design specification
High-level test design
Low-level test design
implementation
What is a Quality or Product Risk?
Risk
Product Risk aka Quality Risk
Risk Based Testing
Test Case Coverage
Tips for Risk Analysis
How can we analyse Quality Risks?
Categories of test design techniques
Types
Specification-based (black-box)
Common Elements
formal or informal models
specify for solve problem
specify software / its component
Test cases derived
systematically from models
Example
Equivalence partitioning and boundary value analysis
State transition diagrams
Decision tables
Structure-based (white-box)
Common Elements
system structure
derive test cases
code and design
extent of structural coverage
measured for existing other test cases
Further test cases
derived systematically
Examples
Branch coverage
Statement coverage
Experience-based
Examples
Attacks
Exploratory
Checklists
Common elements
knowledge & experience
Specification-based (black-box) techniques
Equivalence Partitioning
Boundary Value Analysis
Use Cases / Scenario Tests
Introduction
Design various cases that reflect challenging real-world uses of the product
Some object-oriented design methodologies include use cases
easy source of tests
Decision Tables
More Complex Decision Tables
Police System Decision Tables
Business rules
Structure-based (white-box) techniques
Fundamentals
Steps
Code Coverage
Levels
Statement coverage
execute every statement
Branch coverage
Condition coverage
Multiple condition coverage
Modified condition decision coverage
Loop Coverage
statement coverage cannot imply branch coverage
Test Design Tools
McCabe Cyclomatic Complexity
Basic paths and tests
Experience-based techniques
based on tester
Experience
similar technologies
similar applications
Skill and intuition
Common Experience-Based Approaches
Guided by
Dynamic Test Strategies
Advantages
find bugs effectively
resists pesticide paradox
lightweight record-keeping
fun and creative
good checks
prepared test
use structural techniques
use behavioural techniques
Disadvantages
Gappy coverage
Difficult to estimate
No bug prevention
Extensive debriefing & discussion
Not all testers have the necessary level of skills and experiences
Choosing test techniques
Factors
Level and type of risk
Type of system
Regulatory standards
Customer or contractual requirements
Test objectives
find more defects
required more different techniques
Time and Budget
Development life cycle
Knowledge of testers
Previous experience on finding defects types
Documentation available
Test Case Detail and Precision
Finite-State Models (State Transition Diagram)
Introduction
systems
Respond to current event & condition
Fundamental of Testing
General testing principles
Essential skills and good practices in testing
Why testing is necessary?
Bugs everywhere
environmental risks
control industrial processes
control power plants
control factories
control automobiles
other risk (people, societies, states)
lost jobs
lost missions
lost lives
lost rights
wars
Business risks
damaged reputation for quality
high or unpredictable maintenance costs
failure in production
lawsuit
Lack of confidence in system
problem discovered late
Unexpected delays in release cycles
problems discovered late
Bugs
make errors/mistakes
Requirements & design specifications
code
business logic
user interface
Documentation
electronics
hard copy
executed defective code
failure occur
Reasons
mistake
time pressure
complexity
code
infrastructure
problem
fallibility 易犯错误
analyst
other individual contributor
programmer
technologies
changing
meshing
interaction between a few systems
environmental conditions
excessive heat of the system
cause
memory
CPU
storage
misuse of the software
deliberate
accidental
dissatisfaction 不满 with system quality
if the failure visible to
users
other stakeholders
customers
What does "Quality" mean?
How testing manage quality risks?
higher confidence level
possing test
Conformance to requirements
requires the system to work as specified in document
Fitness for use
user determines the quality
Fundamental test process
What is testing?
Code of ethics
Test Management
Test Organisation
Spectrum of Independence
Reason for independence
Test Team's Mission
make sure
Test/quality control
Quality assurance
Independence Considerations
Roles
Test planning and estimation
Configuration management - testware
Test progress monitoring and control
Risk and testing - project risk
Defect management
Testing throughout the Software Development Lifecycle
Testing is the Context of a Software Development Lifecycle
SDLC
abstract, high-level representation for software development process
Models
Sequential development models
waterfall model
Benefits
Flaws
V model
Flaws
Stages
incremental development model
Unified Process
iterative development models
spiral model
System Integration
Risks
Area
options
IEEE 12207 Software Process Standard
Supporting processes
Organisational life cycle processes
Scope
limitations
purpose
compliance
application
tailoring
CMMI (Capability Maturity Model Integration) Process Maturity
Level
Initial
Managed
Defined
Optimising
Quantitatively managed
Impact
Characteristics of good testing
Verification & Validation
Verification
done with requirements
Validation
done without requirements
Test levels
Test types
Testing as a Driver for Software Development
described by more detailed software development methods and Agile practices
Examples
Acceptance test-driven development (ATDD)
test-driven development (TDD)
Maintenance Testing
Static Techniques
Introduction
Static Tools
Static Testing
test process
Review process
Tool for static analysis
Test Tool