testing theories & methodologies
TRANSCRIPT
The Agile Attitude
*
*
*Scrum / Agile
*Large Scale Transformation
*Team
*Management / Leadership
*Agile Testing / Test Automation
*…
Software testing
-is an empirical
-technical
-investigation
-conducted to provide stakeholders
-with information
-about the quality
-of the product or service under test
Quality
* is value
* to some person
— Gerald Weinberg
*Note the inherent subjectivity
*Note that different stakeholders will perceive the same
product as having different levels of quality
* Testers look for different things
–for different stakeholders. . . .
To know how to test something, you
must understand who the stakeholders
are and how they can be affected by
the product or system under test.
*
• Users
• Programmers whose code interacts with this code
• Maintenance programmers
• Technical writers
• Trainers
• Tech support staff
• Translators
• Marketers
• Investors
Stakeholders (Examples)
*
How well software is
designed
How well the software
conforms to that design
*
Software Product Quality
Conformance to requirements or program specification
Scalability
Correctness
Completeness
Absence of bugs
Fault-tolerance Extensibility
Maintainability
Documentation
Source Code Quality
Readability
Ease of maintenance, testing, debugging, fixing, modification and portability
Low complexity
Low resource consumption : memory, CPU
Number of compilation or lint warnings
Robust input validation and error handling, established by software fault injection
*
Testing Method
White Box Testing
• API Testing
• Code Coverage
• Fault Injection
• Mutation Testing
• Static Testing
Black Box Testing
• Equivalence Partitioning
• Boundary Value Analysis
• All-Pairs Testing
• Fuzz Testing
• Model-Based Testing
• Traceability Matrix
• Exploratory Testing
• Specification-Based Testing
Grey Box Testing
Testing Level
•Unit Testing
•Integration Testing
•System Testing
•System Integration Testing
•Regression Testing
•Acceptance Testing
•Alpha Testing
•Bata Testing
Non-Functional Testing
Performance Testing & Load Testing
Stability Testing
Usability Testing
Security Testing
Internationalization and Localization
Destructive Testing
*
Software can fulfill the objective function
The performance under certain workload
Software can continuously function well in or above
acceptable period
Easy to use and understand
Prevent system intrusion by hackers
Robustness while software failed
*
Easy to maintain
Easy to debug
Easy to fix bug
Easy to modify
Readable
Complexity
Error handling
*Scrum-Based
*
*
*Identify User Role
*E.g. In user-centered design,
fictional Personas are created to
represent the archetypal end
users
*Describe the Story
*E.g. the Condition of Satisfaction
* i.e. Acceptance Tests
*
* i.e. Scrum Backlog Grooming
* Product Owner, Team, Scrum Master
* Clarify User Stories
*Generate Acceptance Tests
*
*Detect
*Data Reference errors
*Data-Declaration errors
*Computation errors
*Comparison errors
*Control-Flow errors
* Interface errors
* Input / Output errors
*
*Automated test execution, e.g.
*Acceptance Testing : Robotframework
*Unit Testing : xUnit
*Frequent test execution, e.g. Hudson
*Code quality measurement, e.g. Sonar
*Thanks!
Xu Yi
Twitter : kaverjody
mailto:[email protected]
http://damianji.spaces.live.com/
http://www.linkedin.com/in/kaveri
“Consultant, Agile Development” @ Nokia Siemens Networks
Scrum / Agile Coaching, Agile Testing & Test Automation