软件测试--目标维度
软件测试重要概念的理解:
Aspect 1: Validation vs. Verification
Verification testing :(校验测试:实现是否符合设计)
定义:evaluates software to determine whether theproducts of a given development phase satisfy the conditions imposed at the start of that phase.
1an internal process.
2Unit, integration, and system testing are all verification testing.
Validation testing :(验证测试:系统是否符合用户要求)
定义:evaluate software during or at the end of the development process to determine whether it really addresses what the customers need.
Acceptance testing is validation testing.
Aspect 2: Static vs. Dynamic
Static testing:(静态测试)
定义:a form of software testing where the software isn't actually used.
静态测试的类型:
1Peer Reviews:The programmer shows her/his code to one or two other programmers or testers who act as reviewers and receive casual comments.
2Walkthroughs:The programmer presents her/his source code to a small group (five or more) of programmers and testers.
3Inspections: The presenter or reader isn't the original programmer. The other participants are called inspectors.
静态测试找到的错误类型:Faults Detected in Static Testing
1 Violation of coding standard
2 Data declaration errors: improperly declaring or using variables or constants
3 Data reference errors: using a variable, constant, array, string, structure, or class that hasn't been properly declared or initialized.
4 Computation errors: bad math
5 Comparison errors: boundary condition problems
6 Control flow errors: loops and other control constructs in the language not behaving as expected.
7 Subroutine parameter errors: incorrect passing of data to and from software subroutines.
8 Input or output errors:the specified format of the data
Dynamic testing:
定义: examine the software by running it
Unit, integration, system, and acceptance testing are dynamic testing.
Aspect 3: The Level of Testing
1Unit testing:
定义:tests individual module to determine whether they correctly implement what specified by the software design.
关注范围:Concentrates on the internal processing logic and data structures of a module (e.g. method or class)
1 Module input/output
2 Local data structures
3 Boundary conditions
4 Basis paths
5 Exception handling
单元测试检测到的错误:
Misunderstood or incorrect arithmetic precedence
Mixed mode operations (e.g., int, float, char)
Incorrect initialization of values
Precision inaccuracy and round-off errors
Incorrect symbolic representation of an expression (e.g. int vs. float)
Comparison of different data types
Incorrect logical operators or precedence
Expectation of equality when precision error makes equality unlikely (using == with float types)
Incorrect comparison of variables
Improper or nonexistent loop termination
Failure to exit when divergent iteration is encountered
Improperly modified loop variables
Boundary value violations
Exception condition processing is incorrect
2 Integration testing:
定义:tests the interfaces of modules and their interaction through these modules.
关注范围:Test all interfaces between modules and the interaction of modules
集成测试类型:Types of Integration Testing
Con:
• Tests the most important sub-system (user interface) last
• Drivers needed
Pro
• No stubs needed
• Useful for integration testing of the following systems
• Object-oriented systems
• Real-time systems
• Systems with strict performance requirements.
Pro
Test cases can be defined in terms of the functionality of the system (functional requirements)
No drivers needed
Cons
Writing stubs is difficult: Stubs must allow all possible conditions to be tested.
Large number of stubs may be required, especially if the lowest level of the system contains many methods.
Some interfaces are not tested separately.
Top and Bottom Layer Tests can be done in parallel
Problem: Does not test the individual subsystems and their interfaces thoroughly before integration
Solution: Modified sandwich testing strategy
Test in parallel:
• Middle layer with drivers and stubs
• Top layer with stubs
• Bottom layer with drivers
Test in parallel:
• Top layer accessing middle layer (top layer replacesdrivers)
• Bottom accessed by middle layer (bottom layer
replaces stubs).
6Continuous testing
定义:assumes an agile development process that deploys continuous build (持续集成)
3系统测试 System testing
定义:conducted on a complete, integrated system to test the system's compliance with its specified requirements.
4Acceptance testing
定义: done by the customers to validate whether the software really provides what they need.
测试类型:
1Alpha testing :is conducted at the developer’s site by customers
2Beta testing :is conducted at customer’s site by customers
软件测试目标:
1 Functional testing: verify that the software performs and functions correctly according to the functionality requirements
2 Non-functional testing: verify the non-functional requirements of the software, such as reliability, performance
Non-functional testing 包括:Recovery testing、Security testing、Load testing、Stress testing、Usability testing
软件测试的方法:
负责软件测试的人员:
1Developer testing:white-box testing
2QA team testing: black-box testing
3 User testing:
Regression testing (回归测试)
定义:re-executes test cases that have already been conducted to ensure that changes to the software do not introduce unintended behavior.
Smoke testing (冒烟测试)
定义:is a special kind of regression testing that is executed immediately after the whole system is built.
软件测试重要概念的理解:
Aspect 1: Validation vs. Verification
Verification testing :(校验测试:实现是否符合设计)
定义:evaluates software to determine whether theproducts of a given development phase satisfy the conditions imposed at the start of that phase.
1an internal process.
2Unit, integration, and system testing are all verification testing.
Validation testing :(验证测试:系统是否符合用户要求)
定义:evaluate software during or at the end of the development process to determine whether it really addresses what the customers need.
Acceptance testing is validation testing.
Aspect 2: Static vs. Dynamic
Static testing:(静态测试)
定义:a form of software testing where the software isn't actually used.
静态测试的类型:
1Peer Reviews:The programmer shows her/his code to one or two other programmers or testers who act as reviewers and receive casual comments.
2Walkthroughs:The programmer presents her/his source code to a small group (five or more) of programmers and testers.
3Inspections: The presenter or reader isn't the original programmer. The other participants are called inspectors.
静态测试找到的错误类型:Faults Detected in Static Testing
1 Violation of coding standard
2 Data declaration errors: improperly declaring or using variables or constants
3 Data reference errors: using a variable, constant, array, string, structure, or class that hasn't been properly declared or initialized.
4 Computation errors: bad math
5 Comparison errors: boundary condition problems
6 Control flow errors: loops and other control constructs in the language not behaving as expected.
7 Subroutine parameter errors: incorrect passing of data to and from software subroutines.
8 Input or output errors:the specified format of the data
Dynamic testing:
定义: examine the software by running it
Unit, integration, system, and acceptance testing are dynamic testing.
Aspect 3: The Level of Testing
1Unit testing:
定义:tests individual module to determine whether they correctly implement what specified by the software design.
关注范围:Concentrates on the internal processing logic and data structures of a module (e.g. method or class)
1 Module input/output
2 Local data structures
3 Boundary conditions
4 Basis paths
5 Exception handling
单元测试检测到的错误:
Misunderstood or incorrect arithmetic precedence
Mixed mode operations (e.g., int, float, char)
Incorrect initialization of values
Precision inaccuracy and round-off errors
Incorrect symbolic representation of an expression (e.g. int vs. float)
Comparison of different data types
Incorrect logical operators or precedence
Expectation of equality when precision error makes equality unlikely (using == with float types)
Incorrect comparison of variables
Improper or nonexistent loop termination
Failure to exit when divergent iteration is encountered
Improperly modified loop variables
Boundary value violations
Exception condition processing is incorrect
2 Integration testing:
定义:tests the interfaces of modules and their interaction through these modules.
关注范围:Test all interfaces between modules and the interaction of modules
集成测试类型:Types of Integration Testing
1Big-Bang
2Bottom-up
Con:
• Tests the most important sub-system (user interface) last
• Drivers needed
Pro
• No stubs needed
• Useful for integration testing of the following systems
• Object-oriented systems
• Real-time systems
• Systems with strict performance requirements.
3Top-down
Pro
Test cases can be defined in terms of the functionality of the system (functional requirements)
No drivers needed
Cons
Writing stubs is difficult: Stubs must allow all possible conditions to be tested.
Large number of stubs may be required, especially if the lowest level of the system contains many methods.
Some interfaces are not tested separately.
4Sandwich
Top and Bottom Layer Tests can be done in parallel
Problem: Does not test the individual subsystems and their interfaces thoroughly before integration
Solution: Modified sandwich testing strategy
5Modified Sandwich
• Middle layer with drivers and stubs
• Top layer with stubs
• Bottom layer with drivers
Test in parallel:
• Top layer accessing middle layer (top layer replacesdrivers)
• Bottom accessed by middle layer (bottom layer
replaces stubs).
6Continuous testing
定义:assumes an agile development process that deploys continuous build (持续集成)
3系统测试 System testing
定义:conducted on a complete, integrated system to test the system's compliance with its specified requirements.
4Acceptance testing
定义: done by the customers to validate whether the software really provides what they need.
测试类型:
1Alpha testing :is conducted at the developer’s site by customers
2Beta testing :is conducted at customer’s site by customers
软件测试目标:
1 Functional testing: verify that the software performs and functions correctly according to the functionality requirements
2 Non-functional testing: verify the non-functional requirements of the software, such as reliability, performance
Non-functional testing 包括:Recovery testing、Security testing、Load testing、Stress testing、Usability testing
软件测试的方法:
1White-box testing: a method of software testing that examines the internal structures or workings of the software.
2Black-box testing: a method of software testing that examines the behavior of an application without peering into its internal structures or workings.
3Model-based testing: a special kind of black-box testing that is based on a rigorous (typically formal) model of the expected software behavior.
负责软件测试的人员:
1Developer testing:white-box testing
2QA team testing: black-box testing
3 User testing:
Regression testing (回归测试)
定义:re-executes test cases that have already been conducted to ensure that changes to the software do not introduce unintended behavior.
Smoke testing (冒烟测试)
定义:is a special kind of regression testing that is executed immediately after the whole system is built.