于慧媛 杨 光 王勇利
(解放军 91404部队 河北秦皇岛 066001)
黑盒测试充分性分析
于慧媛 杨 光 王勇利
(解放军 91404部队 河北秦皇岛 066001)
黑盒测试 软件测试 充分性
伴随着计算机软件在信息社会中的广泛应用,软件质量问题逐渐成为人们关注的焦点,高质量与高可靠性是软件谋求质量的要求,而软件测试则是这两项要求的重要保障。软件测试已经形成了完整的、系统的测试方法,并且有众多的手工和自动化测试工具支持这些方法。从测试是否针对软件系统内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。其中,软件测试的充分性直接影响着软件的质量。在白盒测试情况下,软件的测试充分性可通过语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖和路径覆盖等方法进行度量,但在黑盒情况下,这些基于程序的覆盖度量方法不再实用,为此提出了基于程序外部特性的测试充分性,即基于功能覆盖的软件测试充分性概念,然而对于一个较复杂的指挥流程型软件,仅仅满足功能覆盖的软件测试充分性是不够的,还应增加强度、性能及安全性扩充测试,综合全面的测试才能够使黑盒测试得到充分测试,使软件质量得以保障。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。在白盒测试情况下,软件的测试充分性可通过语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖和路径覆盖等方法进行度量。
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。因此,黑盒测试是从用户观点出发的测试,已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,目的是发现软件需求或者设计规格说明中的错误。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。相比较白盒测试,黑盒测试则不能采取穷举路径的方法,这既不现实也不科学。首先分析一下,软件最常出现的错误类项:①用户对软件目标级特性不明确;②编程人员对需求规格说明理解不正确;③编程人员对程序控制流程理解存在偏差;④编程人员的不良编程习惯导致编码有错或按键错等。这些错误有些往往通过黑盒测试是无法发现的,在借助自动化工具的同时,采用功能覆盖,及扩充性测试是满足软件测试充分性的有效途径。
在依据程序外部特性的情况下,尤其是嵌入式或复杂指挥流程软件系统情况下,如何保证软件测试的充分性是黑盒测试的一个难题。根据软件需求规格说明中明确规定的软件系统功能,明确软件系统完成功能的准则,是软件测试充分性的保障,并具有指导作用,其作用为,①明确软件测试输入集的类型划分;②明确软件测试输出集结果及出处;③明确软件测试环境搭建的要求;④明确软件测试问题的属性。任何一个软件系统首先必须验证它能够正确运行,其次还必须确认系统正确地满足了用户的需求,这需要黑盒测试。在黑盒测试中,最重要的是要考核软件系统能否按照软件需求规格说明等文档完成其功能。在不同的测试级别中,功能测试的要求与工具也不尽相同。我们这里以第三方测试为例,软件测试的功能要求通常为:①按照相关文档完成设计功能;②对控制流程的正确性、合理性等进行验证。根据不同的测试目的,不同的机构或相同的测试机构都可能出现不同的测试方法,可能是测试不同区域或是对同一区域的不同层次的测试。如果仅根据这两项要求进行功能覆盖性测试,则无法充分地考核软件的质量,经常出现的问题是:①由于测试环境硬件的约束,黑盒测试的输入集无法达到充分性测试的要求:如复杂环境下,但由于硬件装备的限制,无法达到或界定复杂环境,则对于该条件下完成的功能,就存在测试不充分性。②由于软件需求规格说明中软件功能的不明确,导致软件功能存在模糊性,致使软件测试出现丢、漏等功能用例的设计与执行。③由于软件需求规格说明中没有对非法输入集的功能限制要求,所以根据功能覆盖测试,则软件系统的安全性则受到威胁,软件质量也得不到保障。④对于复杂指挥流程型软件而言,其每一层软件系统都会依据各自模块需求规格说明进行设计,其功能覆盖测试需要其它模块及装备的配合,若想做到充分性测试,其输入集则是非常庞大的,对于受时间、经费、人力、物力等都方面因素限制的软件测试,则是无法做到的,这就降低了软件测试覆盖的充分性。虽然基于功能覆盖的充分性测试是非常重要的,但对于软件质量的保证是不充分的,这就需要在功能覆盖的充分性测试的基础上,结合强度、性能及安全性等扩充性测试。
计算机软件是基于计算机系统的一个重要组成部分,软件开发完毕后应与系统中其它成分集成在一起,此时需要进行一系列系统集成和确认测试。系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能政党工作并完成所赋予的任务。下面简单讨论在黑盒测试中,为了使软件测试充,在基于功能覆盖的充分性测试基础上,结合强度、性能及安全性的测试,提高软件测试的覆盖度与充分性。
4.1 强度测试 在黑盒测试情况下,基于程序外部特性,强度测试是考核软件质量的有效手段之一,强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如:⑴把输入数据速率提高一个数量级,确定输入功能将如何响应;⑵设计需要占用最大存储量或其它资源的测试用例进行测试;⑶设计出在虚拟存储管理机制中引起"颠簸"的测试用例进行测试;⑷设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试。强度测试的重点就在于由针对性的进行软件功能的考核,例如:①分布式系统的软件配置项负载测试:对分布式系统的软件配置项,通过模拟用户活动的方式测试其对于用户请求的响应时间,请求执行时间、负载能力等要素,实现某些真实操作环境下难以实现的并发操作。②性能的强度测试:在提供要求处理的信息量超过设计允许的最大值、数据传输能力的饱和、存储范围 (如缓冲区、表格区和临时信息区)超过额定大小的能力情况下,进行计算传输数据功能是否正常。③降级能力强度测试:在有可能硬件失效而在设计上又允许降级运行的系统,对每种可能的降级方式都加以验证。在降级的测试环境下,验证软件对硬件失效处理的正确性,包括回到正常运行方式的能力。④长时间连续运行测试:强度测试的时间长度,根据软件的安全关键程度和系统的使命要求而定,不同的软件系统其工作时间的要求不同,往往一些存储空间不足或分系统之间不协调的问题就会暴露出来。
4.2 性能测试 性能测试是要检查系统是否满足在需求说明书中规定的性能。这种测试常常与强度测试结合进行,需要事先对被测软件提出性能指标,如传输连接的最长时限、传输的错误率、计算的精度、记录的精度、响应的时限和恢复时限等。特别是对于实时系统或嵌入式系统。性能测试有时与强度测试相结合,经常需要其他软硬件的配套支持。对于实时和嵌入式系统,软件部分即使满足功能要求,也未必能够满足性能要求,虽然从单元测试起,每一测试步骤都包含性能测试,但只有当系统真正集成之后,在真实环境中才能全面、可靠地测试运行性能系统性能测试是为了完成这一任务,基于流程的测试虽然可以覆盖到每个单元的功能,但是对于计算判断类的小单元,则未必测试完成。在实施黑盒测试时又分为客户端的测试和服务器端的性能测试。客户端的测试主要关注应用的业务逻辑,用户界面,功能测试等;服务器端的测试主要关注服务器的性能,衡量系统的响应时间、事务处理速度和其他时间敏感的需求。在应用系统最终被交付之前保证这两方面的测试没有缺陷。
4.3 安全性测试 无论进行哪种或哪一级别的软件测试,都需要从软件的整体去考虑软件系统在应用过程中的安全性问题,安全性测试检查系统对非法侵入的防范能力。安全性测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如,①想方设法截取或破译口令;②专门定做软件破坏系统的保护机制;③故意导致系统失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据,推导所需信息等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。对于复杂指挥流程型软件而言,软件的复杂程度越高,所潜在的安全隐患则越高,不同的编程人员对于安全防范的编程方式及策略略有不同,针对不同的安全防护模式,要有针对性地补充测试。在软件设计开发过程中,往往用户在软件需求规格说明中对于非法越界或高强度等操作没有明确说明,这时编程人员的经验则直接影响着软件安全性能,及软件所应具备的安全防护功能。如果,依据软件需求规格说明中没有明确针对安全使用的说明及要求,则按照功能覆盖的充分性测试会遗漏掉软件系统中的部分程序。增加安全性测试有助于黑盒充分性测试。
本文针对黑盒测试中软件测试覆盖度充分性进行了分析,根据实际操作应用,总结并提出了针对复杂指挥流程型软件的高度充分性测试。对于黑盒测试的充分性,不同级别的软件在采取“功能 +性能 +安全”的测试策略时,还应增加其它类型的扩展性测试方法。
[1] 虞 翊,吴芳美.黑箱条件下的软件测试充分性与揭错能力分析[J].计算机工程,2001,(6):75
[2] 阿蒙工作室.软件测试综合资料库 http://www.vchome.net 2003年9月5日
[3] 李春霞.黑盒测试方法探析[J].甘肃高师学报,2009,14(2):31
(2010-05-13 收稿)(陈 迁 编辑)
T P311.1
A
1008-6633(2010)04-503-03