赵鸿剑 梁 毅
(中国药科大学国际医药商学院,江苏南京210009)
在科学技术迅速发展的今天,计算机系统在各行各业中扮演着越来越重要的角色,其在医药行业中的应用同样如此。从最初简单的办公辅助作用,到如今渗透到设计、采购、生产、仓储、运输、销售等整个医药供应链的每个环节,人们通过利用计算机系统强大的性能,有力推动了医药行业的快速发展壮大。然而,在享受计算机系统提供便利的同时,人们也应该清楚地认识到,计算机系统的广泛应用实际上对使用者提出了更高的要求,一方面操作者需要具有较多的相关知识储备以及完善的培训资历,以操控不同类型的计算机系统;另一方面,要求使用者或者该系统的设计者能够及时发现并纠正隐藏在系统中的问题,避免给企业造成巨大的损失。
由于各个企业的专业人员的配备情况不同,对于计算机系统知识的掌握程度也不尽相同,特别是对于一些中小型医药企业来说,完成计算机系统的验证相对要困难一些。一般来说,计算机系统主要包括硬件和软件2个部分。计算机系统的验证实质上是一种基本的核实活动,关注的重点在于识别和纠正缺陷,同时证明该系统能够满足要求。
与计算机硬件部分的验证不同,软件部分的验证更多地要考虑功能测试和需求测试。针对我国医药企业很少配备专门的计算机系统验证人才的情况,本文就计算机系统中较为重要的软件系统的测试提供一些思路,以供探讨。
首先应该了解什么是测试,可以简单地理解测试就是找错误,具体是指发现并指出软件(包含软件经过建模、需求、设计等阶段所产生的大量输出工件)中存在的缺陷的过程。这个过程指明和标注了问题存在的正确位置,详细记录导致问题出现的操作步骤,并及时储存当时的错误状态,以上组合在一起便于能够准确再现测试后存在的问题。
通常在软件测试中一般分为2类:黑盒测试和白盒测试。
黑盒测试,也称功能测试或数据驱动测试,顾名思义是将被测程序当作一个不知道内容的黑盒子,在已知产品所应具有的功能的基础上,通过测试来检测每个功能是否能够正常使用,是一种从用户观点出发的测试方法。
白盒测试,也称结构测试或逻辑驱动测试,测试人员知道产品内部工作过程后,通过测试来检测产品内部动作是否按照规格说明书的要求来运行,目的在于检验程序的每条通路是否按照要求正常工作,而较少考虑它的功能。由于此种测试深入到了代码级别,对代码知识掌握程度的要求比较高,这种测试主要以代码开发人员为主。
由于黑盒测试相对于白盒测试来说,更加注重对于软件功能方面的测试,而且着重考虑了用户需求,因此对于中小型医药企业来说,将其引入软件验证中更为符合实际情况。
黑盒测试根据其定义,可将其特点归纳如下:
(1)测试人员不需要了解程序内部的代码与实现;
(2)测试用例设计不依赖于系统内部的设计与实现;
(3)测试用例设计基于功能的定义和用户需求(URS);
(4)从用户角度出发进行测试,比较容易知道用户的需求和用户会遇到的问题;
(5)关注于测试数据的选择和测试结果的分析;
(6)对测试人员的编程技术要求不高;
(7)在自动化测试时较为方便;
(8)不易发现代码部分的缺陷。
对于医药企业来说,采用黑盒测试的目的主要是在已知配置软件所应具有的功能基础上,进行如下检查:
(1)检查程序功能能否满足用户需求(URS),程序是否按照规格说明书的规定正常使用,测试各个功能是否有遗漏,检测性能等特性要求是否满足,关键质量属性控制是否全部覆盖;
(2)检测人机交互是否存在错误,检测数据结构或外部数据库访问是否错误,程序是否能当地接受输入数据并产生正确的输出结果,同时保持外部信息(如数据库或文件)的完整性;
(3)检测程序初始化和终止条件是否存在错误。
根据黑盒测试的目的,我们大致将黑盒测试所能测试出的主要错误类型归纳为:不正确或遗漏的功能;接口、界面错误;性能错误;数据结构或外部数据访问错误;初始化或终止条件错误等,当然在实际验证工作中需要根据具体情况来确定。
黑盒测试更多地从用户角度出发去考察问题,例如界面的实用性、系统的稳定性等。在实际操作过程中,往往存在着入手简单、做好较难的问题。因此在利用黑盒测试进行软件验证之前,需要侧重考虑以下几个问题:
(1)如何测试功能的有效性;
(2)何种类型的输入会产生好的测试用例;
(3)系统是否对特定的输入值尤其敏感;
(4)如何分隔数据类的边界;
(5)系统能够承受何种数据率和数据量;
(6)特定类型的数据组合会对系统产生何种影响。
虽然理论上在利用黑盒测试方法发现程序中的错误时,必须把所有可能的输入值和输出值作为测试数据进行考查,以检查程序是否能够产生正确结果,但这是不实际的,即便是医药企业使用的简单软件,其包含测试点的数量也很多,排列组合后的数值更为巨大,因此穷举测试数量太多无法完成,只能在大量潜在数据中,选取其中一部分代表值作为测试用例。
实际操作中,黑盒测试通常有等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动分析法、场景设计法等。由于等价类划分法是最为常见的,也是极为重要的黑盒测试方法,因此下面就此种方法展开介绍。
等价类划分方法将不能穷举的测试过程进行了合理的分类,从而保证设计出来的测试用例具有完整性和代表性。简单地说,等价类划分法是把所有可能的输入数据,即程序的输入域划分为若干个等价类(子集),然后从每个子集中选取少数具有代表性的数据作为测试用例。在该子集中,各个输入数据对于发现程序中的错误都是等效的,它们具有等价特性,也就是说测试某等价类的代表值即等效于这一类其他值的测试。
采用等价类划分方法设计测试用例通常分为2步进行,首先确定等价类,列出等价类表,然后确定测试用例。而等价类也分为2种情况,其中对软件的用户需求(URS)而言,是有意义的、合理的输入数据所组成的集合为有效等价类。通过有效等价类来检验程序是否实现了用户需求中设定的功能和性能。相反,对软件的用户需求(URS)来说,是无意义的、不合理的输入数据所构成的集合,即为无效等价类。利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格要求的地方。
在设计测试用例时,需要同时考虑这2种等价类,因为软件不仅需要能接受既定的合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有较高的可靠性。苏亚丽描述了标准等价类和健壮等价类的划分方法和原则,而崔应霞等则提出了新的算法,使得在保证各组合覆盖率的基础上减少了运行的次数,降低了测试的负担。
在此基础上,下面以一个软件的登录系统为例来介绍这一方法。
在用户需求的说明中需要输入的内容包括用户名、用户密码、用户类型,有2个按钮分别为“登陆”和“取消”。当用户ID不存在、密码输入错误或用户类型不匹配时,自动跳出错误提示。系统是不允许用户重复登陆的。
首先,分析用户需求(URS)(表1)中给出的和隐含的对输入条件的要求限制;然后,列出等价类表(包括有效等价类和无效等价类)(表2);最后,设计测试用例(表3)。
表1 用户需求
表2 等价类表
表3 测试用例
在医药行业中对于计算机系统进行验证是一项集技术、管理与法规为一体的要求很高的工作,必须严格按照规定的程序来进行,并留下完整详细的记录。本文对黑盒测试在软件验证过程中的使用方法进行了系统的介绍,并以某软件的登陆系统做了简单的示范。
纵观国内外,计算机系统在医药行业中的使用普及率不断提高,可以预见在不久的将来,计算机系统验证将成为一项符合法规要求的常规性操作。因此,只有掌握更多的计算机系统的有效知识,才是做好计算机系统验证工作的根本所在。
[1]ISPE指南[S]
[2]张海藩.软件工程导论[M].北京:清华大学出版社,2000
[3]苏亚丽.黑盒测试之等价类划分[J].玉溪师范学院学报,2009,25(8)
[4]崔应霞,李龙澍.基于输入输出关系的综合黑盒测试方法[J].计算机工程与设计,2007,28(23)
[5]梁毅.新版GMP教程[M].北京:中国医药科技出版社,2011