武昭宇,张月琴,阎 华
(太原理工大学 信息化管理与建设中心,太原 030024)
软件测试方法的研究与应用
武昭宇,张月琴,阎 华
(太原理工大学 信息化管理与建设中心,太原 030024)
对软件需求规格说明书的静态测试方法、基于路径的白盒测试方法和黑盒测试方法进行了讨论和研究。针对图形软件的测试提出一种可视化测试方法,并给出了以印刷电路版图为例进行测试的处理算法和操作步骤;通过实际案例“数字档案系统”说明软件需求规格说明书测试方法和基于路径测试方法的应用。该研究对于软件开发和测试人员在选择和应用测试方法时提供一定的参考和帮助。
软件质量;软件测试;需求规格说明;基本路径;决策表;可视化
软件质量问题由来已久,软件测试的目的是尽可能早和尽可能多的寻找软件中存在的错误和缺陷。软件测试作为软件工程学科的分支之一,由于起步较晚,重视不够,并且涉及的知识面也比较广,如程序找错、图论应用、软件质量保证、软件管理以及软件复杂性度量等,因此从软件测试理论和现有的测试方法、技术和工具等来看都满足不了现在软件开发的实际要求。只有对软件应用的所有运行环境、执行路径、语句、以及判断分支等进行完全测试才能确保软件测试的彻底性,但完全测试用例数和时间都是一个天文数字。想要遍历所有的执行路径一般是很难做到,即使所有的路径都测试过了,覆盖率几乎达到100%,但软件在某种特定环境下仍然可能出错。因此要在短时间内较好的完成测试必须收集资料,仔细研究,精心设计测试用例,掌握好测试度。
科学的测试是贯穿在整个软件开发生命周期的测试,所以应该突破对故有测试的理解,着眼于软件开发的整个生命周期,分析软件开发过程中可能会出现的一些错误和错误源。特别注意编码之前各个开发阶段的测试工作,以此保证软件的质量。
软件测试方法主要分为两种:静态测试和动态测试。在测试过程中,测试人员可将静态测试和动态测试同时交叉使用,尽早来发现软件中的错误和缺陷。静态测试方法是采用人工测试和计算机辅助静态分析来查找软件中的错误和缺陷,并不在计算机上实际运行被测程序。对模块的源代码进行分析、研读、走查,对软件产品的需求和设计规格说明书的评审、对代码的复审等,是静态测试中检验软件质量常用方法。静态测试的查错和分析功能是其他方法所不能替代的。
动态测试方法是通过真正运行被测程序来发现软件中的错误和缺陷,从而来检验软件的运行过程中是否符合期望要求或者运行结果是否正确。一般意义上的测试大多数指动态测试。传统意义上的动态测试分为两种:白盒方法和黑盒方法。白盒方法是能够看清楚事物的内部,即了解被测软件产品的内部结构和运行机制来处理和解决问题;黑盒方法是把事物看成一个整体,来测试产品的外部功能。下面对几种常用而又典型的软件测试方法进行讨论与研究。
1.1 软件需求规格说明书测试方法
传统软件开发中的瀑布模型,把需求和测试划分为两个不同的阶段,而且相距较远,认为在软件需求分析阶段,测试还没有开始,随着软件系统规模和复杂性的不断扩大,这个观点得到了纠正。DOROTHY[1]指出,在软件的需求分析阶段,测试就开始介入的话,能够使得软件的需求分析更加详尽。需求分析的越详尽,到软件验收时功能性错误会越少[2]。
对于软件需求规格说明书(Software Requirement Specfication,SRS)的测试并没有一个系统的方法,一般采用静态测试方法。为了提高软件的质量,可以采用比较严谨的没有二义性的形式化方法来完成SRS,对于形式化的SRS即可采用形式化的测试方法。形式化方法的基础是数学和逻辑学,其结果语义清晰,无二义性[3]。但目前大部分人为了简单方便则采用一种半形式化方法即自然语言和逻辑模型(数据流图、数据字典)或用例模型(用例图)来描述,因此错误难免。衡量SRS质量的标准是准确、全面、适宜的描述用户的功能需求和非功能需求。对于半形式化方法描述SRS,主要采用静态测试方法即:正式的会议评审和非正式的面对面讨论、走查等方法来发现与用户需求不一致、描述不完整、不正确、不清楚及书写不规范等错误。
1.2 基本路径测试方法
基本路径测试方法是在程序控制流图的基础上,通过对程序控制流图分析和判断来计算环路复杂性,导出基本路径集中的独立路径条数,然后根据独立路径条数来设计测试用例。设计出的测试用例能保证被测程序的路径至少能通过一次,即每条可执行语句至少被执行一次。 基本路径测试方法是一种白盒测试方法[4]。
环路复杂性是定量度量程序逻辑复杂度的一种尺度[5]。从程序的环路复杂性可以计算出程序中基本路径集中的独立路径条数。这是确定被测程序中每一条语句至少被执行一次所必须的最大测试用例数。根据独立路径条数来设计测试用例,设计出的测试用例要保证基本路径集中的每一条路径必须要执行一次。
独立路径是指至少引入被测程序的一个新的可执行语句集或者一个新的条件路径。一条独立路径至少应该包含有一条在其它独立路径中从未有过的边的路径[6]。由独立路径组成的基本路径集合并不唯一,但每条路径是唯一的。对于给定的程序流程控制图,可以得到不同的基本路径集合。
1.3 决策表测试方法
决策表测试方法是一种黑盒测试方法也称功能测试法[7]。决策表也叫判定表,通常判定表在需求分析阶段可以描述数据流图中的加工逻辑,也可以在详细设计阶段对模块的算法和数据结构进行描述,同时还是一种动态的功能测试方法。决策表是从输入条件的完全组合来满足测试的覆盖率要求,具有很严格的逻辑性,所以在所有功能测试方法中,基于决策表的测试用例设计方法是最严格的,测试用例具有很高的完整性。比较适合描述不同条件集合下采取行动的若干组合情况,即对各个条件的组合进行分析,从而设计测试用例来覆盖各种组合。决策表可以清晰地表明复杂的逻辑关系。一张决策表由4部分组成[8]:左上部是条件桩,列出被测程序所有的条件类别;右上部是条件项,表示条件桩中所有条件可能取值的组合;左下部是动作桩,表示所要执行的操作即结果列表;右下部是动作项,列出在条件项(各种取值)组合情况下应该采取的动作。在决策表中贯穿条件项和动作项的一列就是一条规则。
1.4 可视化测试方法
可视化测试方法的基本思想是将某图形软件处理以前的数据以及设计规则和处理以后的结果转化成一种图形进行对比,这样可以很快做出正确、直观的判别方法。为保证充分利用有限的屏幕显示任意复杂的图形,在实际中要认真考虑图形的大小和形状与屏幕之间的对应关系,通过鼠标操作对任一窗口的某一部分图形进行还原和放大处理,并可以自动调整该图形显示窗口的上下左右位置,使放大以后的图形在比较窗口内保持一致。窗口放大除了考虑放大比例外,还必须考虑窗口内的图形放大以后仍然在屏幕的视区之内,放大比例有纵向与横向两种,总的放大比例为:
以印刷电路版图为例进行测试,其处理算法为:
1) 先设图形在x,y方向最大的外轮廓尺寸为mx和my;
2) 比较外轮廓尺寸在x轴方向和y轴方向的宽度mx和my的大小关系,以确定屏幕显示区域上下左右划分及最大限度地利用显示屏来显示更多的图形数据信息的图形框。具体操作步骤如下:
a.Ifmx b.Ifmxmy则把屏幕分为上下两个显示区域,即为横图在显示窗口的设置; c. 把设计规则及图形软件处理前、后的数据文件转换到对应的图形显示窗口,然后再选择可视区域内的图形进行比较、放大和测试,进而来测试图形软件的质量。 2.1 “数字档案系统”概述 数字档案系统是某校数字校园信息门户软件中其中一个比较复杂的子系统,功能多、安全性要求高。数字档案系统主要包括信息管理和系统管理,其中系统管理包括权限管理(角色管理、用户管理)和信息配置管理(代码库、教师信息类管理);信息管理包括:教师综合查询、组织机构、学历学位和职务职级等。 这些功能相对独立又相互联系,必须进行认真细致的需求分析、评审、设计测试用例、执行测试用例、错误缺陷报告,为了避免测试中产生新的更严重的错误则要进行回归测试,使软件质量不断提高。 2.2 “数字档案系统系统(SRS)”需求规格说明书的测试 对于软件需求规格说明书(SRS)的测试属于静态测试[9],评审SRS是软件测试基础性工作且是最重要的活动之一。如果没有需求评审,那么在测试执行阶段就会发现比较严重的缺陷,还有不少缺陷会留到产品发布之后,那么产品质量就会明显下降[10]。如图1所示,在需求分析阶段如果有良好的需求评审,产品从测试阶段直到递交给用户缺陷数量会越来越少;但如果没有进行需求评审,到了测试执行阶段就会发现多而严重的缺陷。缺陷发现的越晚系统成本越高,质量就越低。 图1 需求评审对缺陷分布的影响Fig.1 Influence of demand assessment on the distribution of defects 本系统采用正式的评审会议和非正式的面对面讨论、走查相结合形式完成用户需求文档的评审。 某一次正式评审会议的记录如下。 参加人有:1位主持人,4位作者,5位专家,1位咨询顾问,2位具体操作人员,2位记录员。开始时间为14∶50,结束时间为17∶35 .评审文档的规模为42页;会议前发现问题29个,会议中发现问题7个,合计问题36个。主要功能性需求问题记录:a.系统没有分享功能;b.检索功能太简单,只有关键词和标题;c.没有用户反馈功能;d.缺少在线咨询、留言板等等。另外还有一些非功能性问题,比如,全校教工同时报岗,每秒能接受多少人安全登录;大负载高峰期情况下系统响应时间如何。这些在本系统的SRS中描述不清楚。 会议最后咨询顾问对一些问题做了点评。 1) 对问题的描述要注意,不要有二义性,要问题准确,位置准确; 2) 不在一个问题上花费太多的时间; 3) 不讨论个人对一些描述风格的偏好; 4) 立项时最好能确定参与项目的评审专家; 5) 大家要心平气和的讨论问题。 通过以上对数字档案系统SRS的静态测试总结出以下几点,供同行参考。 1) 灵活应用正式评审和非正式评审,两种形式相结合使用; 2) 精心挑选评审员。各个层次的人员都要有,但不易太多; 3) 功能性需求和非功能性需求要分层次评审; 4) 为了降低需求返工的风险,可以采用分阶段评审办法,最好在需求形成的过程中进行分阶段评审; 5) 建立标准的评审流程,做好评审后的跟踪工作。 2.3 “数字档案系统”模块的测试 下面是该系统中一个简单模块的被测代码。 Procedure exp(a,b:real; varx,y:real); Begin If (a>1 ANDb=0) then x=x/a; end if if (a=2 ORx>1)then x=x+1; end if; y=a+b; end; 对于系统模块的测试一般由开发人员执行,主要采用白盒方法,根据前面介绍的基本路径测试技术生成测试用例的方法如下: 1) 根据被测代码导出对应的程序流程控制图,如图2所示。 图2 程序流程控制图Fig.2 Program flow and program control chart 2) 依据程序流程控制图计算环形复杂度。环形复杂度的计算方法有3种,一是可以通过程序流程控制图的边数和节点数计算;二是通过程序流程控制图的判断节点个数进行计算;三是通过程序流程控制图的区域数目来计算。对于给定的程序流程控制图的环形复杂度的值为环形复杂度边数减去节点数加2或者判断节点个数加1或者程序控制流图区域的数目。区域是由节点和边围成的面积。要注意的是计算区域数目时要包括控制流图外部并没有被包围进来的区域,即实际区域加1.本例采用判断节点个数来计算。被测代码的程序流程控制图有两个判断节点1和3再加1则得到该程序流程控制图的环形复杂度为3. 3) 根据流程控制图的环形复杂度确定程序的独立路径数,通过以上分析和计算其环形复杂度为3,因此共有3条独立路径。下面给出一组3条独立路径: 路径1:1—3—5 路径2:1—2—3—5 路径3:1—2—3—4—5 1—3—4—5不是独立路径,因为没有新的边加入。 4) 设计测试用例,确保基本路径集中每一条路径被执行一次。只要测试用例确保基本路径组的执行,就可以说明程序中相应的代码和程序逻辑是正确的。测试用例如表1所示。 表1 测试用例 文中介绍了几种常用而又典型的软件测试方法,最后结合实际案例给出了系统需求规格说明书的测试和基本路径测试方法的应用,希望对软件开发和测试人员在选择测试方法和应用时有一定的启发和帮助。 随着软件开发的不断更新扩大,软件测试方法和技术也在不断变化,新的测试任务还很繁重,像云服务或云计算的测试,物联网的测试等,都需要我们在软件测试实践中不断学习不断提高,在实际应用中不断完善改进测试技术和方法,提高软件质量。 [1] DOROTHY GRAHAM.REQUIREMENTS:Requirements and testing:seven missing-link myths[J].IEEE Software,2002,19(5):15-17. [2] ADITYA P MATHUR.Foundations of software testing[M].北京:机械工业出版社,2011. [3] 刘竹林.软件测试技术与案例实践[M].北京:北京师范大学出版社,2011. [4] 赵磊,伦立军,徐士华.基于软件体系结构测试路径生成方法[J].微电子学与计算机,2008,25(1):177-180. [5] 王铁辰.软件测试从入门到精通[M].北京:电子工业出版社,2010. [6] 高春艳.基本路径测试法的应用[J].开封大学学报,2012,26(2):81. [7] 李金鹏.软件测试技术理论与方法高效率化研究[J].数字技术与应用,2012(2):203. [8] 聂长海.关于软件测试的几点思考[J].计算机科学,2011,38(2):1-3. [9] 陈明.软件测试[M].北京:机械工业出版社,2011. [10] 朱少民.软件测试方法和技术[M].北京:清华大学出版社,2010. (编辑:贾丽红) Study and application of software test method WU Zhaoyu,ZHANG Yueqin,YAN Hua (CenterofInformationManagementandDevelopment,TaiyuanUniversityofTechnology,Taiyuan030024,China) This paper discussed and researehed the static testing method,path-based white-box testing method and black-box testing method for software requirements specification.A visual test method and its application were proposed on testing graphics software.The processing algorithm and operation steps with PCB(Printed Circuit Board) for instance were proposed. Finally, the application of the testing methods based on software requirement specfication and basic path is illustrated by an actual case named “Digital File System”.This research provides some reference and help to the software development and testing personnel in the selection and application of test methods. software quality;software testing;requirement specification;basic path;decision tables;visualization visual 1007-9432(2016)03-0379-05 2015-07-29 山西省科技基础条件平台建设资助项目:基于物联网的城市智慧水务云管理平台(2015091003-0103) 武昭宇(1985-),男,太原人,硕士生,主要从事软件开发与测试研究,(E-mail)wuzhaoyu@tyut.edu.cn 张月琴,教授,主要从事软件开发环境与工具及软件测试研究,(E-mail)zhangyueqin@tyut.edu.cn TP311 A 10.16355/j.cnki.issn1007-9432tyut.2016.03.0192 “数字档案系统”的测试
3 结束语