What if there isn't enough time for thorough testing?
Use risk analysis to determine where testing should be focused.
Since it's rarely possible to test every possible aspect of an application, every possible combination of events, every dependency, or everything that could go wrong, risk analysis is appropriate to most software development projects. This requires judgement skills, common sense, and experience. (If warranted, formal methods are also available.) Considerations can include:
- Which functionality is most important to the project's intended purpose?
- Which functionality is most visible to the user?
- Which functionality has the largest safety impact?
- Which functionality has the largest financial impact on users?
- Which aspects of the application are most important to the customer?
- Which aspects of the application can be tested early in the development cycle?
- Which parts of the code are most complex, and thus most subject to errors?
- Which parts of the application were developed in rush or panic mode?
- Which aspects of similar/related previous projects caused problems?
- Which aspects of similar/related previous projects had large maintenance expenses?
- Which parts of the requirements and design are unclear or poorly thought out?
- What do the developers think are the highest-risk aspects of the application?
- What kinds of problems would cause the worst publicity?
- What kinds of problems would cause the most customer service complaints?
- What kinds of tests could easily cover multiple functionalities?
- Which tests will have the best high-risk-coverage to time-required ratio?
使用风险分析来决定对哪些模块进行重点测试。
由于很少有可能测试一个应用程序的所有部分,事件的每个可能组合,每个部分都能可能有错误。所以引入风险分析对于软件开发项目是合适的。这需要判断能力、敏锐的感觉和经验。(如何允许,也可以采用正式的方法来评估)考虑以下方面:
1、对项目的主要用途来说,哪些功能模块是最重要?
2、哪些功能模块用户最经常使用?
3、哪些功能模块最需要考虑安全?
4、哪些功能模块对用户的金融交易影响最大?
5、对客户来说,应用程序的哪些方面最重要?
6、在软件生命周期中应用程序的哪些部分已经被测试了?
7、哪些代码最复杂,最有可能隐藏错误?
8、应用程序中的哪些部分是在着急或紧急情况下完成的?
9、以前的软件与本软件相似的/相关的项目哪些方面引起问题最多?
10、以前的软件与本软件相似的/相关的项目哪些方面有比较多的维护费用?
11、考虑软件的需求和设计中哪些部分不清晰或比较差?
12、开发人员认为应用程序中风险最高的方面是哪些方面?
13、什么类型的问题将引起最坏的影响?
14、什么类型的问题将引起最多的客户严重抱怨?
15、什么类型的测试最容易测试多个功能模块?
16、什么测试具有最好的风险系数和所需时间比?