测试阶段过程中需要进行测试文档评审和缺陷管理,这不仅可以提高测试效率,而且在项目管理中项目经理可以根据缺陷收敛趋势平衡产品质量、项目进度与成本三者关系。在测试用例设计时,需要关注逆向测试用例和可靠性测试用例的设计,这样会更加有效地发现产品中隐藏的缺陷,从而提高产品质量。
0 序言
在线分析仪器又称过程分析仪器,是指直接安装在工艺流程中,对被测介质的组成成分或物性参数进行自动连续分析的一类仪器。为了拓展在线分析仪器的市场,一些公司开始研发或改进相应的在线分析仪器产品。
若使新开发或改进的分析仪器能够在用户现场长期、可靠地运行,除了通过前期的技术预研、设计开发及技术评审等方法保证,还需要通过产品测试对产品的功能、性能、可靠性等方面进行验证,以保证产品质量。目前,在线分析仪器在用户现场暴露出的问题主要集中在软件bug、器件失效、EMC 问题、测量受环境温度影响等。根据Pareto 原则,产品中所有缺陷并不是都可以在测试中发现。但是其中的一些问题,如软件部分bug 和测量受环境影响等一些缺陷可以在测试阶段通过加强测试发现并改进,这不仅需要加强测试人员的质量意识,更需要加深测试人员对测试理论知识的理解和测试技术的掌握。
1 测试基本理论
1.1 测试职责
在线分析仪器测试人员角色根据负责产品模块的类别不同,分可以分为软件测试人员、硬件测试人员、产品测试人员和可靠性测试人员及认证测试人员等。软件测试人员主要负责软件黑盒测试,硬件测试人员主要负责硬件单元测试和硬件与软件的集成测试。可靠性测试人员负责产品可靠性方面的测试,主要有环境测试和寿命测试等,认证测试人员则主要负责产品的CMC 认证、防爆认证等型式试验相关检测项目的测试。产品测试人员的主要职责是协助单元测试和集成测试,执行系统测试、一致性测试和用户测试等,协助分析、解决测试问题。当然不同公司的组织架构会不同,测试人员职责的划分也会不相同。目前,大多分析仪器公司软件测试、硬件测试及可靠性测试主要由产品测试人员完成。
1.2 测试定义
Glenford J.Myers 在《The Art of Software Testing》中从心理学和经济学两方面对测试的定义和测试原则进行了基本的阐述,在该书中测试是指是为了发现错误而执行程序的过程。
目前,对于测试的定义,不同的人对其描述也略有不同。1993 年,IEEE 提出的软件工程标准术语中,将软件测试定义为:使用人工或自动手段来运行或评价某个系统或系统部件的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果和实际结果之间的差别。尽管不同人对测试定义存在差异,然而不同的定义均明确了测试应该是以查找缺陷为目标的一种过程。
1.3 测试目的
测试的目的不仅是为了发现产品缺陷,而且通过分析缺陷分布特征和缺陷产生原因可以帮助项目经理改进当前开发过程中的一些问题。同时,通过缺陷分析也能帮助我们设计出有针对性的测试用例,提高测试有效性。测试理想目标是达到“产品零缺陷”,即使测试过程中没有发现任何缺陷,该过程的测试也具有意义,完整的测试是评价产品质量的有效手段。
1.4 缺陷收敛度
关于缺陷管理的理论研究起步比较晚,发展远未成熟。参考CMM5 中定义规范和目前在线分析仪器行业特点,将产品缺陷按照严重程度分为四级:致命、严重、一般和建议。
通过测试缺陷收敛趋势能够反映被测试产品的质量变化情况,不仅可以辅助项目经理进行决策,而且也可以做为产品发布的一个重要参考,测试缺陷收敛度评估示例图见图1.在线分析仪器的测试缺陷收敛度可以从以下三个方面进行评估。
1)缺陷累计发现数;
2)各阶段缺陷提交数;
3)缺陷遗留数。
测试缺陷累计发现数趋于稳定和各阶段缺陷提交数趋近于0,表示产品质量相对比较稳定,但是并不代表产品质量好。缺陷遗留数趋势曲线下跌的时候,表示产品质量有所改进,缺陷遗留数趋势曲线逐渐上升时,表示产品质量在持续恶化。缺陷遗留数收敛趋势曲线越趋近于0,产品质量越好。
2 测试方法
根据测试人员对被测对象的了解程度来划分,测试用例设计方法可分为白盒测试和黑盒测试。
白盒测试:又称为结构测试或逻辑驱动测试,必须知道软件或产品内部工作过程,通过测试来检测其内部是否按照需求、设计正常运行。通过逻辑覆盖、路径覆盖等方式选择测试用例,可以用测试覆盖率评价测试用例。在线分析仪器一般在单元测试阶段中软件测试和硬件测试采用白盒测试方法,主要验证软件流程、软件算法是否满足需求和硬件信号链路是否正确等。
黑盒测试:又称数据驱动测试或功能测试,是针对软件或产品的功能需求进行测试。通过测试来检测每个功能是否符合需求,不考虑其内部的逻辑结构。下面介绍几种在线分析仪器测试中常用的几种黑盒测试方法。
2.1 等价类划分法
测试人员应该首先了解并掌握的功能测试相关技术是等价类划分,理解这种技术的用法十分重要,因为它是很多其它软件测试技术和途径的基础。等价类是某个输入域的集合,在这个集合中每个输入条件都是等效的,如果其中一个的输入条件不能发现产品或软件缺陷,那么集合中其它输入条件进行测试时也不会发现缺陷。等价类分为有效等价类和无效等价类,有效等价类就是由对产品规格说明有意义的、合理的输入数据所构成的集合;无效等价类就是对产品的规格说明不合理的或无意义的输入数据所构成的集合,设计测试用例时需要同时考虑这两种等价类。
2.2 边界值分析法
从长期的测试工作经验得知,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。使用边界值分析方法设计测试用例,首先应该确定边界情况,输入等价类与输出等价类的边界,是应该着重测试的边界情况。边界值分析方法的基本思想是,选取正好等于、刚刚小于或刚刚大于边界的值作为测试数据,而不是选取等价类中的典型值或者任意值作为测试数据。在测试过程中,考虑了边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率。
2.3 因果图法
等价类划分和边界值分析的测试方法,主要考虑单一输入条件,但是不考虑各个输入条件之间的相互制约关系,也不考虑输入条件的各种组合情况。如果考虑使用一种适合于描述多种输入条件的组合,产生多个相应动作的测试方法,可以使用因果图,因果图法适用于多种条件的组合、相应产生多个结果的情况。在较为复杂的情况下,这个测试方法能有效地帮助我们检查多种条件组合下的输出是否正确,并且设计出高效、非冗余的测试用例。
2.4 错误推测法
错误推测法,基于经验和直觉推测产品中可能存在的各种错误,从而有针对性的设计测试用例的方法。错误推测方法的基本思想是,根据以往的工作经验推测出产品中所有可能存在的错误和容易发生错误的特殊情况,根据他们选择测试方法和设计测试用例。
当然,还有其他一些测试方法可以在测试用例设计中使用,如:正交设计法、特殊值法、流程分析法和组合设计法等。各种测试方法各有所长,应该针对产品的具体需求,选择合适的测试方法,设计高效的测试用例,有效地将产品中隐藏的缺陷揭露出来。 3 测试流程
根据在线分析仪器的自身特性和测试阶段的先后顺序,测试流程主要包括单元测试、集成测试、系统测试、用户测试、试生产测试和量产测试,测试流程图见图2.单元测试一般采用白盒测试,以单元模块的详细设计文档为依据,对开发模块内部功能、逻辑进行测试。集成测试以各级子系统概要设计文档为依据,对经过单元测试的模块进行组合测试,所测试的内容主要包括单元间的接口,单元集成后的功能及样机的风险项目测试等。系统测试是主要根据产品包需求和产品相关标准,验证其满足要求所规定的功能、性能、兼容性、可靠性等方面的特性。用户测试包含α测试和β 测试,主要以事先确定的技术协议为依据,主要对可安装性、可维护性、主要功能、主要性能等进行验证,以保证产品达到可以交付使用的状态。试生产测试对开发产品进行小批量的试生产,对产品的生产物料采购、制造、检验等工艺环节进行验证,以确保产品能顺利进行批量生产。量产测试由研发测试部门对量产产品进行抽测,主要是对产品的稳定性、可靠性等长周期测试项目以及在前面阶段出现缺陷较多的功能、性能项目等进行的测试。
在线分析仪器在某一阶段下的测试工作过程可以参考图3进行,测试人员首先进行测试需求分析,尽早了解被测仪器。通过分析测试需求了解测试规模、复杂程度与可能存在的风险等,测试需求越详细,测试人员便会对所测产品越了解和对所要进行的测试任务越清晰,这样便会更有把握保证质量与进度。测试需求是测试计划的基础与重点,测试计划是为了测试某个产品而制定的计划,测试计划应包括:产品概述、测试需求说明、测试资源配置、风险分析和测试周期等。
测试用例设计的目的是将系统需求具体化,提取测试需求,通过可测试的方法对每个功能点进行描述。测试用例的要素应该完整,包含用例编号、用例版本、编制人员、编制日期、测试目的、测试资源、预期结果和测试步骤等。测试用例设计时一定要关注测试步骤的可操作性和数据的具体量化指标。
在线分析仪器测试环节中避免执行测试之前不编写测试方案和测试方案未经过评审直接执行测试,尤其对于长周期、高成本和高优先级的项目测试。测试方案中需要体现出测试策略、测试样机数量、测试资源、测试安排和测试用例等。目前一些公司产品的软件测试大多倾向于正向测试,故在测试方案编写时需要多考虑设计逆向测试用例。在测试之前需要安排好测试资源,并且分析测试工装、设备的测量不确定度及误差。
执行测试时先测试仪器核心功能,然后进入性能测试阶段,再进行软件测试(可以提前开始),最后进行可靠性测试。在线分析仪器测试工作中一个非常重要的工作是可靠性测试,往往在可靠性测试工作中会暴露出产品一些致命、严重设计缺陷,在项目开发中往往也是在该测试阶段项目延期率持续增加。可靠性测试分类方法较多,常规的分类方法主要有:环境测试、寿命测试、筛选测试、现场使用测试和鉴定测试五大类。目前,在线分析仪器可靠性测试中主要进行环境测试和寿命测试,其他三类可靠性测试还不够深入。环境试验是考核产品在各种环境(温度、振动、冲击、潮热、盐雾、低气压等)条件下的适应能力,一般会根据产品包需求适当放宽范围进行测试。寿命试验是研究产品寿命特征和失效规律的测试方法,将产品放在特定的试验条件下考察其失效随时间变化特征。在线分析仪器在一些应用场合下条件恶劣,不仅样气中存在高浓度粉尘、腐蚀性气体,而且有时安装位置存在高频率振动等,在这样恶劣的应用环境下尤其需要关注产品的可靠性。
测试报告一般是测试阶段最后的输出文档,一份详细的测试报告应该包含足够的信息,如缺陷统计、遗留问题分析、产品质量评估等。测试报告中出现问题较多的是:测试项目不完整、缺陷问题分析不够深入、语言不够简练通俗。对于长周期的测试,应在每个测试阶段完成后编写测试报告,以免长时间后遗漏重要的测试细节。
4 结论
在线分析仪器的测试是保证产品质量一项非常重要的工作,测试人员需要掌握丰富的测试理论知识和测试技术,合理设计测试用例才能有效地发现产品中隐藏的缺陷,尤其软件中的逆向测试用例和产品可靠性测试用例的设计。在实际的工作中发现在线分析仪器系统测试阶段过程,通过逆向测试用例和可靠性测试用例发现的缺陷数比例的确很高。随着测试技术的发展,越来越多的测试方法会被应用在分析仪器行业中,这将有效地提高测试效率和产品质量。