您的当前位置:首页正文

软件测试技术的探讨

2021-07-26 来源:客趣旅游网
维普资讯 http://www.cqvip.com 2006年第9期 福建 电脑 43 软件测试技术的探讨 夏侯贽 .钟【摘海 (1.江西信息应用职业技术学院江西南昌330043 2.南昌大学经济与管理学院江西南昌330047) 要】:软件测试是一门重要的、具有广泛应用的学科。本文探讨软件测试的若干关键技术,包括测试原则、基本测试 方法、测试过程等。 【关键词】:软件测试,白盒测试,黑盒测试 0.引言 随着计算机技术的迅速发展和越来越广泛深入地应用于国 民经济及社会生活的各个方面.随着软件系统的规模和复杂性 与日俱增.软件中存在的缺陷和故障造成的各类损失也大大增 加。甚至会带来灾难性的后果。软件的质量问题已成为所有使用 软件和开发软件的人们关注的焦点。在软件开发活动涉及到的 一系列过程中,人们采取了许多保证软件产品质量的措施。但是 由于软件产品本身无形态,它是复杂的、知识高度密集的逻辑产 品。故错误仍不可避免。因此,在整个软件开发活动中应该采用 有效的软件测试,它是保证软件质量、提高软件可靠性的重要手 段。 软件测试是为了发现错误而执行程序的过程.或者说.软件 测试是根据软件开发各阶段的规格说明和程序的内部结构而精 心设计一批测试用例(即输人数据及其预期的输出结果1,并利用 这些测试用例去运行程序,以发现错误的过程.所以,软件测试 的目标是想以最少的时间和人力系统地找出软件中潜在的各种 错误和缺陷。如果我们成功地实施了测试。就能够发现软件中的 错误。测试的附带收获是,它能够证明软件的功能和性能与需求 说明相符合。此外,实施测试收集到的测试结果数据为可靠性分 析提供了依据。测试不能表明软件中不存在错误,它只能说明软 件中存在错误。 1.黑盒测试和白盒测试 按照软件测试用例的设计方法而论.软件测试可以分为黑 盒测试和白盒测试法。 黑盒测试不考虑程序的内部逻辑结构和内部特性.只依据 程序的需求规格说明书.检查程序的功能是否符合它的功能说 明.黑盒测试又称功能测试方法.它检验程序能否与功能要求完 全一致.在设计测试用例时,只考虑软件的功能要求,不涉及程序 的内部结构和实现细节.由黑盒测试所产生的测试用例应能检 验程序的全部功能.黑盒测试可发现不正确的或漏掉的功能、接 口错误、数据结构或外部数据库访问中的错误、性能错误、初始 化或终止错误.黑盒测试的具体技术方法主要包括边界值分析 法、等价类划分法、因果图法、决策表法等。 白盒测试是利用程序内部的逻辑结构及有关信息.设计或 选择测试用例.对程序所有逻辑路径进行测试.白盒测试又称结 构测试方法.它从程序结构出发设计测试用例.白盒测试的测试 用例用于检查模块中的独立路径:检查每个逻辑判定的真假两 种情况:检查每个循环变量的初值、中间值和终值:检查程序的内 部数据结构是否有效.通过自盒测试可发现程序中的逻辑错误 和不正确的假设或条件、没预料到的意外路径、语法检查未发现 的印刷或书写错误.白盒测试的主要方法有程序结构分析、逻辑 覆盖、基本路径测试等。 不论是黑盒测试.还是白盒测试.都不可能把所有可能的输 人数据都拿来进行所谓的穷举测试 因为可能的测试输入数据 数目往往达到天文数字.所以为了提高测试效率.就必须精心设 计测试用例.着重考虑那些易于发现错误的数据。 2.测试步骤 软件测试过程一般按四个步骤进行,即单元测试、集成测 试、确认测试和系统测试。 软件开发过程是一个自顶向下,逐步细化的过程,而测试过 程则是依相反的顺序安排的自底向上,逐步集成的过程。低一级 测试为上一级测试准备条件。首先对每一个程序模块进行单元 测试,消除程序模块内部在逻辑上和功能上的错误和缺陷。再对 照软件设计进行集成测试,检测和排除子系统(或系统)结构上 的错误。随后进行确认测试,确认测试是要检查已实现的软件是 否满足了需求规格说明书中确定了的各种需求以及软件配置是 否完全正确。最后从系统全体出发,运行系统,检验已确认了的 软件能否与系统的其它部分(比如硬件、数据库及操作人员)协 调工作。 3.静态测试和动态测试 通常业界将软件测试方法从是否需要执行被测软件的角 度.可分为静态测试和动态测试 静态测试是指不利用计算机运行被测程序,也就是说,计算 机并不真正运行被测程序.仅通过分析或检查源程序的文法静 态测试结构、过程、接口等来检查程序的正确性。静态测试通过 程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参 数、未定义的变量、错用局部变量和全局变量、不适当的循环嵌 套或分支嵌套、死循环、不允许的递归等。 使用人工静态测试可以发现大约I/3—2/3的逻辑设计和编 码错误。但代码中仍会有隐藏的故障无法通过静态测试发现.因 此除了静态测试方法外。还必须通过动态测试进行详细的分析。 动态测试的主要特征是计算机必须真正运行被测试的程序.通 过输入测试用例对其运行情况(即输入与输出的对应关系)进行 分析。达到检测的目的。 4.软件测试的原则 依据软件测试目的。软件测试的原则是: ①应当把”尽早地和不断地进行软件测试”作为软件开发 者的座右铭。 由于软件的复杂性和抽象性.以及软件开发各个阶段的多 样性等.使得开发的每个环节都可能产生错误。所以不应把软件 测试仅仅看作是软件开发的一个独立阶段.而应当把它贯穿到 软件开发的各个阶段中。坚持在软件开发的各个阶段的技术评 审,这样才能在开发过程中尽早发现和预防错误,把出现的错误 克服在早期,杜绝某些发生错误的隐患。 ②测试用例应由测试输入数据和与之对应的预期输出结 果这两部分组成。测试以前应当根据测试的要求选择测试用例 (Test ease),用来检验程序员编制的程序.因此不但需要测试的 输人数据,而且需要针对这些输入数据的预期输出结果。没有预 期结果的测试是不可理喻的。软件缺陷是经过对比而得出来的。 这正如没有标准无法进行度量一样。如果我们事先不知道或是 无法肯定预期的结果,我们必然无法了解测试正确性。这很容易 给人感觉如盲人摸象一般.不少测试人员常常凭借自身的感觉 去评判软件缺陷的发生.其结果往往是把似是而非的东西作为 正确的结果来判断.因此常常出现误测的现象。 (下转第36页) 维普资讯 http://www.cqvip.com 福建电脑 2006年第9期 ,.获取当前进程的叫号・, 在5台联想开天4610 r P4/218 mrad pvm_mytidO; ,.获取当前进程父进程的tid号., G。256 MB/DDR。512Mswap交换 master..tid=pvm_parent0; 分区、80G硬盘1.D—Link品牌 ,.阻塞接收此进程的左、右邻居的t.d号.以及要计算的数据块., 100M以太网交换机. u】【操作 pvm_recv(master_tid.1): 系统下使用文献『61所述方法搭建 pvm_upkint(&lef41,1); PVM环境。如图2。对不同规模的 pvm_upkint(Sn'ig}It,l,1); pvm_upkfloat(&b【o】,m‘n,1); 单精度浮点数方阵进行测试。表 1为5次测试结果的平均值 Slaver 2 Salver 3 ,.根据当前进程有无左、右邻居来判断该进程应该执行什么操作・, 图2基于pvm的1 master /*1.进程有右邻居而没有左邻居.它是进程slave ̄O*/ 和4 sdver结构图 硪一一l ̄&(rlsht!一1)) 时同开情 矩 阵 麓 慎 【f0r0,=0:k;k++) 20o 500 l000 2000 姗 |000 5000 6∞0 ,.计算第0到m一2行・, ¥{亍开情133 ̄67 9.942390 40Jt40535 1637eaOl 368315161 657.T76938 1023 g23426 1490366426 lfor(i=l;i<=m-2;i++) 并行开情1 ̄.674 5373917 16.938291 62.017932 l妣l24l9 73Lg45175 424097079 523.959111 f0哟=ld n一20++) lbti‘n+j]=b[O-D‘n+j】+b【a+1)‘n+j】+b【i‘n+a—1)】+b【i‘n+a+1)】; b【i・n+jl, :l l 加遗 0.Elg23 1383735 2.411137 2.639701 2.E16436 2.删5 2.414125 2 5l96 ,.阻塞接收右邻居salverI发送slaved的第0行(整体的第m行) 表1不同规模方阵的Jacobi迭代时间开销(单位:s) pm_ ̄sh 1); 由表1可以看出,随着矩阵规模的增大。并行计算的优势逐 pvm_upkfloat(&bo 一14ol,na); 步的体现了出来。加速比(串行开销,并行开销)从距阵规模为 ,.计算第rⅡ-l行・, f0 =l;j<=n-2;j++) 20o 20o时的0.851823.(并行计算的开销比使用串行计算的开 l m-1)‘n+j】 (|r卜2)‘n+j】帆rd b【i】+ |r卜1)‘n+0-D]+ 销还大),增加到了6000}6000时的2.845196。 b【(m—1)‘n+a+1)】; 4.结论 b【(rⅡ-1)‘n+jy :l 本文在简单介绍了PVM的接口机制和使用PVM进行程序 ,.将第m—l行的新值发送给它的右邻居Blaverl*/ 设计的一般方法后,在linux环境下构建PVM平台.设计并实现 pvm_initsend(PvmDa ̄Defauh); 了Jacobi迭代算法.最后通过实验验证了程序设计和实现过程 pvm_pkfloat(&b[(m-1)‘n+0】,n,1); pyre_send sh 1);l 的正确性。取得了较理想的加速比。 ,.2.当前进程只有左邻居而没有右邻居沱是进程daver31., i即en!=-1)&&(rls1.---D) 参考文献: I..…‘l 1.陈实等,PVM网络并行计算实现方案,计算机工程,第29卷第15期 /*3.当前进程既有左邻居又有右邻居f它是进程Blaverl或Blayer21・, 20o3年9月. i即en!一1)&&(ri ̄tt—1)) 2.张颖。网络并行计算环境PVM,闽江学院学报,第25卷第5期2004年 {..…‘l lO月. ,.将所有迭代完成后的结果发送给master进程・, 3.刘婕等.求解一类边界问题的最小曲面的敖值并行算法.徽型电脑应 pvm_pkfloat(&b[0 ‘JII’1). 用20o3年第19卷第3期. pyre_send(master_rid,1); 4.http://hi, 1.tlstc.edu.cn//doc/3.plot. /‘释放pvm., 5.陈固良,并行计算一一蛄构.算法.蝙程,高等教育出版社,1999年10月 3.实验结果 第一 ̄L(p202). 串行计算时使用1台联想开天4610 f P4/218 G,256 MBI 6.王小牛等,基于LINUX的Now系统的构建,西北师范大学学报(自 DDR,512Mswap交换分区、80G硬盘)的Linux环境;并行计算时 然科学 ̄L)2002年第01期. (上接第43页) ③程序员应避免检查自己的程序。程序员应尽可能避免测 式、跟踪规程、调试规程。回归测试的规定。以及评价标准等。对 试自己编写的程序.程序开发小组也应尽可能避免测试本小组 于测试计划,要明确规定。不要随意解释。 开发的程序。如果条件允许。最好建立独立的软件测试小组或测 ⑦应当对每一个测试结果做全面检查。有些错误的征兆在 试机构。这是因为基于心理因素。人们不愿意否定自己的工作; 输出实测结果时已经明显地出现了.但是如果不仔细地全面地 此外由于思维定势。也难于发现自己的错误。故这点不能与程序 检查测试结果,就会使这些错误被遗漏掉。所以必须对预期的输 的调试(debuging)相混淆。调试由程序员自己来做可能更有效。 出结果明确定义。对实测的结果仔细分析检查。抓住征兆。暴露 ④在设计测试用例时。应当包括合理的输入条件和不合理 错误。 的输入条件。合理的输入条件是指能验证程序正确的输入条件, ⑧妥善保存测试计划。测试用例,出错统计和最终分析报 不合理的输入条件是指异常的。临界的。可能引起问题异变的输 告。为维护提供方便。 入条件 软件系统处理非法命令的能力必须在测试时受到检验。 5.结语 用不合理的输入条件测试程序时.往往比用合理的输入条件进 软件质量是软件产品的生命之所在.软件测试作为保证软 行测试能发现更多的错误 件质量的手段。在软件开发的整个过程中占有及其重要的位置。 ⑤充分注意测试中的群集现象。在被测程序段中,若发现 提高软件质量势在必行。严格的测试是关键的一环。软件测试作 错误数目多,则残存错误数目也比较多。这种错误群集性现象, 为一门重要的、具有应用价值的科学技术。有待于我们更深入地 已为许多程序的测试实践所证实。根据这个规律。应当对错误群 研究 集的程序段进行重点测试.以提高测试投资的效益。 ( 严格执行测试计划.排除测试的随意性。测试之前应仔 参考文献: 细考虑测试的项目.对每一项测试做出周密的计划,包括被测程 1.贸平.软件测试技术,北京:机械工业出版社,2004 序的功能、输入和输出、测试内容、进度安排、资源要求、测试用 2.徐仁佐、叶傻民。软件工程。武汉:华中科技大学出版社,2000 例的选择、测试的控制方式和过程等。还要包括系统的组装方 

因篇幅问题不能全部显示,请点此查看更多更全内容