转:软件测试分类-按测试技术分

上一篇 / 下一篇  2010-12-28 16:14:05

一般来说分黑盒测试白盒测试。嗯,这里说的都是动态测试。code review, statis analysis这些当然也很重要。

黑盒测试:不考虑具体实现,单从需求上来设计测试样例。
等价类划分:定义输入的类别,每种类别选择一些测试样例
边界值检测:测试输入的边界条件,比如整数值的话通常的边界值有-1,0,1,和最大最小整数值等,当然根据程序的输入限制也有别的边界值。
模糊测试:就是随机修改输入数据的部分值了,其实随机还是很牛的。
组合测试:有的问题要在多个输入参数的组合情况下才会触发,但输入参数多的话所有组合情况会很多,所以就需要对组合做限制,比如做pairwise testing,也就是只考虑参数间的两两组合,更高级点的话可以设定哪些参数间要组合,哪些不用。工具的话可以试试微软的PICT。
基于模型的测试:根据系统模型来生成测试输入和期望结果。可以看看Spec Explorer或者NModel,后者有书。
其他还有因果图之类,没仔细看过了。

白盒测试:根据代码来设计测试样例,常见目标是覆盖尽可能多的代码。
符号执行(symbolic execution): 这种办法是把程序中的所有路径列出来(实际需要对循环之类做限制),对每个路径分析出输入条件上的限制,然后用数学工具求解出输入来。逻辑上很精彩。在单元测试上Microsoft的Pex应该有不少应用了。系统测试上离实用还有很大距离,对c程序有斯坦福的KLEE,对java有nasa的java pathfinder。
缺陷插入(fault injection testing):不知道这应不应该算到白盒测试里。某些异常情况很难触发,比如磁盘写满,网络出错等,这时可以通过写一个假的文件读写函数或网络通讯函数,来快速地有控制地触发这些异常。


TAG:

 

评分:0

我来说两句

Open Toolbar