2、非功能测试
如果从非功能测试角度来考察测试架构,其和软件开发的架构更为贴近,两者在技术要求上是一致、相通的。非功能测试要追溯到设计阶段,软件设计是前提,设计不好,实现得再好可能也无济于事。所以,非功能测试可以看做由两大部分组成。
1)设计验证:这是纸上谈兵,针对系统设计说明书进行评审,发现设计的缺陷,因可防患于未然而显得更为重要。这也是和开发人员在思路上的辩论,针锋相对地提问,通过讨论甚至辩论来发现问题。
2)系统验证:将设计付诸于实施,针对建成后的系统进行验证,以确定系统是否达到设计要求。当然这一步也非常重要,设计得再好,还是要看实际的结果。
对于非功能性测试架构,要在对系统设计和构造理解的基础上来确定测试的具体方法。可以用简单的图来描述,如图2-5 所示。
图2-5 非功能性测试的架构示意图
每一类测试可能需要单独考虑,性能测试和兼容性测试、安全性测试都不一样,不同类型的测试,考虑的着眼点不一样,其方法也不一样,所使用的测试工具也不一样。当然,压力测试、稳定性测试可以和性能测试一起考虑。这里以性能测试为例,其包括如下的关键因素。
1)测试环境:构造和产品实际运行相当的测试环境。
2)关键业务:根据系统的设计和实现,判断可能存在性能风险的业务操作点。
3)负载:根据系统的负载,确定可能受到的最大负载、平均负载等。
4)监控指标:哪些系统资源是有限的而且会产生瓶颈,需要在测试过程中被监控。
5)结果分析:通过对测试结果分析,确定性能问题,并分析造成性能缺陷的根本原因。
分析上面这些因素可知,构造一个良好的性能测试解决方案,关键还是要对系统实现全面了解,特别是对被测试的特性(这里指性能)要理解,能把握外部因素对系统的被测试特性的影响,从而确定系统测试的输入和测试的输出。除此之外,我们还得用技术的办法来模拟负载、监控系统的资源或响应,这实际上就是我们经常讲的建模,用逻辑的模型或数学模型来描述实际的物理模型,如图2-6 所示。
图2-6 非功能性测试的建模(系统模拟)
相关链接: