魏 鑫,安鹏伟,赵 菲,高 米
(北京京航计算通讯研究所,北京 100074)
随着我国武器装备技术的不断发展,嵌入式软件在武器装备上的作用越来越重要,软件的质量和可靠性直接影响武器装备产品的可靠性、实用性和安全性。因此,在软件开发生命周期中进行全面的软件测试至关重要。
从国外发展状况来看,发达国家的软件测试技术发展水平较高,已成为独立的产业,且在整个软件技术发展中占有越来越重要的地位。测试人员的数量比重在不断提升,软件测试自动化水平很高[1]。从国内发展状况来看,我国软件测试技术起步比较晚,与发达国家相比,还存在一定的差距,如对软件测试重视度不足、软件测试专业高端技术人员缺乏、自动化测试水平不高等等。
为了提高软件质量,确保软件的实现满足用户的需求,尤其是性能、接口等方面,采用黑盒测试方法开展软件测试,成为嵌入式软件的重要环节[2-3]。在软件测试过程中,测试用例的设计是最关键的环节。本文重点介绍了黑盒测试技术的由来、原理、特点,从黑盒测试方面研究软件测试的技术和方法,介绍了运用黑盒测试技术生成测试用例的主要方法,并给出该方法在大气数据计算机软件测试中的应用。
黑盒测试是指把待测试程序或系统软件看成一个黑盒子[4],在不知程序内部结构和处理过程的前提下,依靠程序接口进行的测试,从而检查软件功能是否满足软件规格说明的要求,程序是否能接收输入数据并产生正确的输出数据,并保持外部数据的完整性和正确性。因此,黑盒测试又称功能测试或数据驱动测试[5-6]。
黑盒测试又可称为从用户观点和需求出发进行的测试,由于黑盒测试不考虑程序内部结构,只关注软件是否能够根据不同输入给出符合需求规定的输出,所以许多高层的测试(如确认测试、系统测试、验收测试)都采用黑盒测试。
黑盒测试还包含非功能性测试,如性能测试(检查软件各项功能的性能是否达到相应的指标)、强度测试(检查软件在各种极端条件下是否可以正常工作)、安全性测试等。
黑盒测试分为静态和动态两种。静态黑盒测试是不运行待测试软件,只对软件需求规格说明进行文档审查。动态黑盒测试是运行待测试软件,检查其功能的正确性和完整性等。
检查软件需求规格,一方面发现软件需求规格说明中可能存在的问题,另一方面在充分理解软件需求规格说明的基础上,对软件输入进行等价类划分和边界值分析,构建因果图、状态转换图以及输入等,并对系统进行适当的错误猜测,从而进行黑盒测试。
采用黑盒测试设计测试用例的主要方法有:等价类划分方法、边界值分析方法、功能分解方法、错误推测法和因果图分析方法等,下面简单介绍这几种测试方法。
等价类是指某个输入域的集合,在这个集合中每个输入条件都是等效的。等价类划分方法是一种典型的黑盒测试方法,它不考虑程序内部结构,首先根据需求规格说明对输入范围进行划分,把所有可能的输入数据分为若干个互不相交的子集,称为等价类,然后从等价类中选取代表性的数据作为测试用例进行测试[7]。等价类中的元素有共同特征,如果用等价类中一个元素作为测试数据不能发现程序中的故障,那么使用集合中的其他元素进行测试也不能发现故障。
使用等价类划分方法设计测试用例,在分析需求规格说明的基础上划分等价类,列出等价类表。等价类划分有两类:有效等价类和无效等价类。有效等价类指符合需求规格说明,合理的输入数据构成的集合;无效等价类指不合理的输入数据所构成的集合[8]。设计测试用例时,需要同时考虑这两种等价类。因为软件既要接收合理的数据输入,也要能接收非法的数据输入,这样的测试才能确保软件具有更高的可靠性。
边界值分析方法作为等价类划分方法的有效补充,主要针对各种边界情况设计测试用例。边界值分析关注的是输入、输出空间的边界条件,用以选择测试用例。
一些与边界有关的数据类型,一般有数值、数量、速度、位置等。这些数据类型可以考虑几方面特征:最大和最小、最长和最短、最慢和最快、最高和最低、最近和最远等[9]。
边界测试只测试边界线上的数据点是不充分的,一定要考虑临近边界的合法数据,即测试最后一个可能合法的数据,以及刚刚超过边界的非法数据。
错误猜测法基于测试人员的经验和直觉来推测系统软件可能存在的各种缺陷,是有针对性地设计测试用例的方法。错误猜测法的基本原理是利用直觉和经验猜测出错的可能类型,然后编写测试用例脚本来暴露这些缺陷[10]。
因果图法适用于多种输入条件组合的测试方法。因果图法可弥补边界值分析法和等价类划分法中未对输入条件之间的联系、相互组合等进行验证的情况。
当输入条件存在若干可能的组合时,需对这些组合加以考虑,证明测试程序在某种输入组合的情况下能否完成软件需求规格说明规定的要求。该方法可以帮助测试人员按照设计步骤选择高效的测试用例,同时可以检查出程序缺陷[11]。
黑盒测试是发现软件缺陷提高软件质量的一种非常有效的方法,通过黑盒测试能够验证整个软件的功能、性能、安全性等指标是否符合软件需求规格说明中的要求[12-13]。
大气数据计算机属于大气数据系统,通过自身探头采集大气总压、静压等,解算得出气压高度、空速等大气参数。通过外部接口将解算的数据发送给主控计算机、惯导等系统并接收主控计算机系统发送的加温指令等信息,并向采集记录设备发送数据信息。
大气数据计算机软件属于嵌入式软件,在大气数据计算机软件的黑盒测试过程中采用上述测试方法设计测试用例,不仅可以突出重点,提高效率,发现问题,且实用快捷,能够缩短测试周期。
大气数据计算机软件在大气数据计算机上运行,通过综合测试设备模拟记录设备、惯导、主控计算机等数据信息。压力测试仪通过电缆与大气数据计算机连接,AC220V和DC28V电源分别给综合测试设备和大气数据计算机提供电源,如图1所示。大气数据计算机软件的配置项测试环境主要以其设计开发环境的硬件和软件为基础构建,所有测试组件均根据测试用例的要求设计,以构建出接近真实的软件运行外部环境。该配置项环境主要完成功能需求测试和非功能需求测试。
上电自检测主要采用等价类划分的方法设计测试用例。根据上电自检测的功能要求,主要对传感器特征数据的有效性等各项功能进行检查。选取正常等价类和无效等价类的方法对上电自检测进行设计,设计6个测试用例,具体测试用例如表1所示。
表1 上电自检测采用等价类划分方法设计用例
又如,大气数据计算机软件对采集的数据进行限幅。在验证软件对采集和接收的数据进行限幅时,采用等价类划分的方法设计用例,根据限定的幅值,对采集的数据按照有效等价类和无效等价类设计测试用例,选取代表性数据作为测试用例,既保证了测试覆盖全面,又提高了测试效率。具体的测试用例如表2所示。
表2 等价类划分法设计采集数据限幅功能测试用例
等价类划分法是一种科学有效的方法,该方法将无限的输入空间简化为小规模的有效集合,避免盲目或随机选取输入数据的不完整性和覆盖的不全面性。在大气数据计算机软件功能测试和接口测试中设计出完整的测试用例,减少不必要的测试用例,大大减少工作量,有效提高测试效率。
大气数据计算机软件在动态测试时,有许多数据临界处理需要采用边界值分析方法进行测试用例设计。对静压温度电压测试采用了边界值分析法,设计了至少6个测试用例,如表3所示。
表3 边界值分析方法设计用例
在大气数据计算机软件测试中,涉及数据临界处理的功能测试,均使用了边界值分析法,实际测试发现,边界值分析法很容易发现程序的缺陷,提高了测试效率和软件质量。
利用错误推测法在大气数据计算机软件测试中设计了很多行之有效的测试用例。例如:对要求输入数字的地方,设计输入字母、空格等的测试用例;对只接受正数的地方,设计输入负数的测试用例;对要求输入范围的数据,如对范围在[-999,999]内,设计特殊数据0等的测试用例;对经纬度数据测试设计测试用例时,设计输入90、180、270等的测试用例。实际执行上述测试用例,发现了不少问题,有的问题还导致了程序异常退出,因此采用错误推测法设计测试用例是非常有效的。
采用因果图方法设计用户界面登录的测试用例,有3个组合项,账号、密码、登录确认按钮。在测试时,采用因果图的方法,整理出3个正常输入条件和3个异常输入条件,进而画出因果图(见图2),然后从因果图导出判定表(见表4),最后从判定表导出测试用例(见表5)。
1234567原因输入6~10位自然数账号1100000点击登录按钮1111111输入6~16密码(非空、非保留字、非功能键、非汉字)1010000输入<6或>10的账号0000101账号为空、空格、负数、小数、英文字母、特殊字符、编程中转义字符0000010密码为空、空格、<6位或>16位、保留字、汉字、功能键0000001结果正确登录1000000错误提示0111111
表5 从判定表导出测试用例
通过黑盒测试技术在大气数据计算机软件测试中的实践,总结出黑盒测试方法选择测试策略如下:
首先,进行等价类划分,包括输入条件和输出条件的等价类划分,将无限测试变成有限测试,是减少测试工作量和提高测试效率最有效的方法。
其次,在任何情况下都必须使用边界值分析方法,用这种方法设计出的测试用例发现程序错误的能力最强。
然后,用错误推测法追加一些测试用例,该方法需要依靠测试人员的智慧和经验。
最后,如果软件功能中含有输入条件的组合情况,选用因果图法和判定表驱动法,以保证覆盖充分全面。
黑盒测试不是基于无知的测试,它意味着产品内部知识在测试中不起重要作用,重点强调有关软件的用户和环境知识,大气数据计算机软件这种嵌入式系统具有很强的专用性和硬件依赖性。本文重点以黑盒测试技术的等价类划分法、边界值分析方法和因果图法为研究内容,以大气数据计算机软件作为测试实践,从用户角度阐述输入数据和输出数据的关系,验证黑盒测试技术方法对软件的功能、非功能需求测试的正确性。技术研究和测试结果表明,采用等价类划方法、边界值分析方法和因果图法与传统测试方法相比,节省大量人力,提高动态测试效率,发现大量软件缺陷,有效提高了软件质量,具有较好的推广价值。