李小荣,疏志年
(1.合肥工业大学 计算机与信息学院,安徽 合肥 230009;2.巢湖学院 计算机与信息工程学院 安徽 巢湖 238000)
软件黑盒测试用例设计方法的研究
李小荣1,2,疏志年2
(1.合肥工业大学 计算机与信息学院,安徽 合肥 230009;2.巢湖学院 计算机与信息工程学院 安徽 巢湖 238000)
在经济全球化、社会信息化的时代,软件产业有效促进所有领域和行业的信息化建设进程.在信息时代,国家、企业和个人对软件质量的要求在不断提高,软件测试作为软件质量保障的重要手段之一越来越受重视.本文对黑盒测试技术进行了介绍和分析,笔者运用相关方法对软件进行了黑盒测试并取得初步成效.
软件测试;测试用例;黑盒测试;等类划分;边界值分析
目前,社会信息化进程深入我们生活中的所有领域,软件虚拟化信息,高度集中资源和服务,是信息技术产业当之无愧的核心.好的软件能为用户节省资源、提高工作效率、提高市场竞争力,而差的软件运行可能不符合用户的要求或难以正式运营,存在巨大的安全隐患,泄露公司重要机密,甚至导致用户方破产,所以国家、企业和个人对软件质量的要求在不断提高,作为软件质量保障的重要手段之一的软件测试的重要性和必要性越来越明显[1].
一个特定软件由多个子系统组成,如高校教务管理软件一般包括有教学计划管理子系统、师资管理子系统、学生信息管理子系统、教材管理子系统、排课子系统、成绩管理子系统和其他多个子系统;每个子系统下包含若干个功能模块,如教材管理子系统下包括有教材基本信息管理模块、教师教材计划模块、教材订购模块、教材入库模块、教材出库模块、教材回库模块、数据统计/打印模块等.正如盖房后建筑方需要初步检验、购房者需要验房一样,软件编码后开发方需要进行一系列测试以初步检查其是否能如预设正常工作,是否能满足用户的需要,是否存在安全隐患,此后用户方进行验收,这些操作在软件产业内被称作软件测试.
软件测试无法做到穷尽测试,因为软件测试时即要输入合理的数据检验其是否能实现所要求的功能和性能、也要考虑输入不合理的数据检验其容错能力和是否能正确拒绝不应该做的事情.就常用的用户登陆模块而言,所有合理、不合理的数据是无穷尽的,无法列举和记录,且穷尽测试就时间而言显然用户就无法接受.由于穷尽测试既费时又无意义且不可能实现,为在最短时间、最小代价、最高效率的达到最佳测试效果,开发方就必须在测试之初精心设计测试用例[3].
测试用例是为特定的目标而准备的一组执行前提条件、输入数据以及预期结果,用以测试某个程序执行路径是否如设想那样进行或核实其是否满足某个特定功能或性能上的需求.在测试用例的构成和目的中可见测试用例设计效果将会影响软件测试的质量和成败,是软件测试工作的重心[4].设计测试用例时须同时考虑的因素有完整性、正确性、一致性、可理解性、可执行性、可复用性等.
本文所研究的黑盒测试又称功能测试,是站在用户视角进行的测试,一般用于测试较晚期;此时,程序的内部逻辑结构和实现处理过程不可见,外界只知道它应提供的功能或此程序输入与对应的预期的输出结果,测试员依据需求规格说明书和软件设计说明书设计测试用例,通过测试来检测每个功能和性能是否符合用户方需求[2].
在开始具体测试之前设计好测试用例有以下优点:不同阶段不同类型的测试用例可以规范测试计划、成为测试工作的依据;有针对性的测试用例相当于“有的放矢”、使测试重点突出,可避免测试的盲目性;测试用例的执行进程记录有助于测试员的工作量的核算和跟踪;测试用例和测试结果的妥善保存有助于交叉测试、回归测试,可提高软件的测试效率进并促进软件构件的可重用性;用户方可进行测试用例和测试结果记录的查阅,从侧面了解软件产品的质量,从中选择用户关注重点进行验收测试.
3.1 等价类划分
等价类划分法是依据软件开发文档和产品文档把被测程序的所有可能性输入数据划分成若干个数据等价类(包含有效等价类和无效等价类),假定类中每个数据对揭露程序错误来说是等效的,故可选用一个数据可以代表一类数据,据此设计测试用例.使用等价类划分法设计测试用例的步骤:(1)按软件开发文档和产品文档划分等价类,并为每一个等价类编号(注意:每个等价类的编号唯一);(2)选取测试用例:设计一个新的测试用例使其尽可能多地覆盖尚未被覆盖的有效等价类(如某测试用例同时满足数据类型、数据长度、数据范围等的要求),重复这一步骤直到所有有效等价类都被覆盖为止;设计一个新的测试用例,使其覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止[2].
以高校教务管理系统中成绩管理子系统下的成绩录入模块内的正常成绩录入功能为例,由任课教师在期末时登陆web子系统,可录入所带班级对应科目的成绩.最终总评成绩由平时成绩、实验成绩、期中成绩、期末成绩按教学大纲制定的比例(四项比例的总和为100%)共同自动生成;成绩保存前要设置好各部分成绩及总评成绩的类型:百分制、等级制(优秀、良好、中等、合格、不合格),录入部分成绩后可选择“保存”,全部成绩录入完成并检查无误后点击“提交”按钮,提交确认过后的学生成绩任课教师无权修改.若以百分制录入平时成绩,则有效等价类为[0,100],无效等价类有两个,(-∞,0)、(100,+∞),可取75、-5、1000作为测试用例;若以等级制录入平时成绩,则有五个与等级制规定所对应的有效等价类,此外所有数据均属无效等价类.
3.2 边界值分析法
此法是对等价类划分方法的补充,大量测试和应用实践证明,开发员容易在信息域的边界处理上出现差错(如:“>=0”误写为“>0”),且输出数据的边界也有可能处理错误需要测试检查,针对边界附近而非等价类内部的单个值设计测试用例,可以排查出更多的错误,测试效率更高[2].等价类划分法主要针对输入数据划分等价类,在选取测试用例时,是在数据类内部任选一个数据或一个典型值作为测试数据;边界值分析法既考虑输入数据,又综合考虑输出数据的情况并对其划分有效、无效等价类,并在等价类的边界上选择至少三个数据作为测试数据:正好等于边界值、稍小于或稍大于边界值,若再完备一些,可再在边界上往外扩展一个数据进行测试.
延用成绩录入模块中以百分制录入平时成绩为例比较两者的区别:有效等价类为[0,100],等类划分法选用一个典型值如“60”作为测试数据;而边界值分析法在此区域内选择“0、1,50、99、100”作为测试用例.
3.3 因果图法
前两种方法着重于单一条件的考虑,但软件处理的实际问题的结果经常与多个条件的取值相关(如高校借书处理结果与借阅者身份、借阅者是否有书超期、已借书籍的数量、书籍是否被他人预约、书籍类型等相关;游客去旅行社享受的折扣与游客的身份、年龄、预定的线路、旅游的季节等相关),因果图法是对等价类的扩展,又被形象地称为“等价类组合判定表”,适用于处理结果与多种条件取值相关时的测试用例的设计[2].
因果图是分析程序规格说明中的相关描述,将输入条件视为“因”,把程序状态的改变或输出称为“果”,根据描述和相关定义画从因到果的网络图,然后转换为判定表,并为判定表中每一列设计一个测试用例.
判定表又叫决策表,可用于详细设计阶段的算法描述,也可用于辅助测试,它能把与结果相关的多个条件各种可能的取值组合有序列举,较其他方法简易,且可避免遗漏.在详细设计阶段描述程序处理算法时判定表分为四个部分:左上角列出问题相关的所有条件,左下角列出可能采取的行动;右上角是相关条件所有取值组合构成的矩阵,右下角列出各种取值组合下应采取的动作;测试阶段所用判定表相对于设计阶段而言在最底下多下一行“测试用例”,即针对每一列条例取值组合设计一个典型值进行测试.
3.4 错误推测法
错误推测法是基于以往经验和测试员的和直觉,列举出被测程序中可能出现的错误和容易产生错误所在,有针对性的设计测试用例[2].
以成绩录入模块设计测试用例为例,成绩录入时要设置好的各部分成绩的比例设置可能就许多,再加上部分成绩类型与总评成绩类型,输入的各总部分具体成绩,输出的总评结果,就此单个功能的测试,有效输入的组合数非常巨大.我们以经验判断,在成绩等级的边缘处理容易出错.由于成绩输入可限定有效数据范围,一般不会出错,而总评等级结果是由分数转换而来,结果未知,因此我们侧重在等级评定的边缘处设计测试用例.如:设置输入数据平时成绩、实验成绩、期中成绩、期末成绩四者录入均为百分制,输出结果总评成绩为等级制,且前四部分成绩在构成总评时的比例为“30%:20%:0%,50%”.测试结果表明,成绩输入正常,但总评结果为等级边界时,总评显示为百分制,如89,而非预期结果“良好”.
由在软件本身的复杂性、软件应用环境的复杂性、时代软硬件技术限制、无法完全摆脱手工开发及等原因,软件出错无法杜绝.为在软件正式交付用户投入使用之前和在软件造成的事故发生之前尽可能多的发现和改正潜在错误,有效提高软件的质量和可靠性,支持企业和国家的信息化建设,软件测试必不可少,信息时代对软件测试用例设计方法的研究没有终点[5].
〔1〕赵子军.新一代信息技术产业标准化明确“新风向”[J].中国标准化,2013(08):14-18.
〔2〕吴洁明.软件工程实例教程[M].北京:清华大学出版社,2010.284-332.
〔3〕王立新.软件测试数据的高效生成及测试方法研究[D].东华大学,2011.
〔4〕芮素娟.可复用测试用例研究[J].电脑知识与技术,2013:3308-3310.
〔5〕蔡建平.软件测试实验指导教程[M].北京:清华大学出版社,2009.1-44.
TP311.5
A
1673-260X(2014)03-0026-02