在上“黑盒测试综合策略”这个主菜之前,先来两个开胃菜,一起来温习基础知识。
1.黑盒测试发现的错误类型
黑盒测试注重于软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。黑盒测试试图发现以下类型的错误:
1)功能错误或遗漏;
2)界面错误;
3)数据结构或外部数据库访问错误;
4)性能错误;
5)初始化和终止错误。
2.黑盒测试各方法使用场景举例
分别以具体的例子来说明黑盒测试常见用例设计方法在测试工作中的应用。
1)等价类:把程序的输入域划分成若干部门,然后从每个部分中选取少数代表性数据作为测试用例。应用场景:用户登陆,非法帐号与合法帐号。
2)边界值:输入、输出范围的边界。应用场景:列表分页;日期校验。
3)错误推测:基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。应用场景:客户做了某个业务撤销或回滚后,又重新发起业务;2个及以上业务模块间,交互的部分。
4)判定表:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。应用场景:多条件的组合查询;日期校验。
5)因果图:用图解的方法表示输入的各种组合关系,写出判定表,从而设计相应的测试用例。通常输入、输出之间存在依赖关系。应用场景:动态按钮,例如根据行记录的状态显示不同的操作按钮,且各按钮要打开各自对应的页面。
6)正交试验法:用“正交表”来安排和分析多因素试验的一种数理统计方法。应用场景:输入控件较多的新增、修改页面;参数配置。
7)场景分析法:用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。应用场景:对于业务流清晰的系统。如客户缴费流程。基本流、分支流、异常流、验证流。
8)功能图法:使用功能图(如:“状态迁移图”、“流程图”、“菜单树”)形象地表示程序的功能说明,并机械地生成功能图的测试用例。应用场景:黑盒意义上的,对功能或系统水平上实现逻辑覆盖和路径测试。
3.黑盒测试综合策略
G.J.Myers提出:
(1)使用各种测试方法的综合策略
在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强。
必要时用等价类划分方法补充一些测试用例。
用错误推测法再追加一些测试用例。
对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。
(2)测试用例的设计步骤
根据设计规格构造基本功能测试用例;
边界值测试用例;
状态转换测试用例;
错误猜测测试用例;
异常测试用例;
性能测试用例;
压力测试用例。
(3)优化测试用例的方法
利用设计测试用例的8种方法不断的对测试用例进行分解与合并;
采用遗传算法理论进化测试用例;
在测试时利用发散思维构造测试用例。
测试需求完成以后,可以根据测试需求设计测试用例。要保证测试用例能够全面覆盖测试需求,要包含所有的情况。测试用例设计上划分为单功能测试用例和场景测试设计,单功能测试覆盖需求中的功能点,场景测试覆盖需求中的业务逻辑。在设计测试用例的时候,可以使用多种测试用例设计方法。
首先进行等价类划分,包括输入条件和输出条件的等价类划分,合理设置有效等价类和无效等价类,这是减少工作量和提高测试效率最有效的方法。
必须使用边界值分析,经验表明,这种方法设计出的用例能发现很多程序错误。
可以使用错误推测法追加一些测试用例,这需要依靠智慧和经验。
对照程序逻辑检查已设计出的测试用例的逻辑覆盖度,如果没有达到覆盖标准应当再补充足够的测试用例。
如果程序的功能说明中含有输入条件的组合情况,一开始就可选因果图和判定表驱动法。
对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。
对于业务流清晰的系统,可以利用场景法贯穿整个测试方案过程,在案例中综合使用各种测试方法。
当测试用例设计完成后,要组织测试用例的评审,这样可以吸取别人的意见,减少遗漏,补全测试用例。
4.实践心得
等价类划分是理论层面的测试方法,测试用例组合缩减的同时,虽然满足了软件测试需求,但同时也带来了测试不完全;
针对测试不完全的风险,工作的重点集中体现在对需求、业务的理解,对产品功能的仔细推敲,只有这样,才能准确的划分等价类;
不同的测试人员存在业务理解与测试经验的差异,对等价区间的划分难免存在不同,实践认为只要是对测试对象做到足够覆盖就满足要求了,至于对于等价区间分类,取值、用例覆盖的流程性与科学性可逐步完善;
其实写用例,除了书上说的几种设计方法,每个人也有自己偏好的套路。比如某些人喜欢先用边界再用等价,有些人喜欢先等价后用边界,这些套路都是没有大的区别的,只是个人的逻辑思维方式不同而已;
一个经过实践的套路:确定测试目标(其实就是确定测试用例的粒度)——提取测试元素——分类(其实就是一个整体的等价法)——针对各类进行分析(主要还是使用等价和边界)——正交表生成用例(因果图和判定表也是经常使用的方法)——根据实际测试环境情况删除部分case——增加错误推断和性能测试用例——使用场景法验证覆盖率——生成初步测试用例报告——同行评审——归档。