测试流程建设介绍
随着汽车电子行业的快速发展,汽车电子部件的功能日益复杂,用户对部件功能稳定性、安全性、可靠性要求也越来越高。为了满足来自各方的需求,汽车电子产品从硬件形式到软件功能的复杂度不断提升,产品的代码量和模型量也越来越多,出现故障的可能性就越高。质量是企业的立足之本,测试是产品质量的有力保障。测试不单纯是一个发现错误的过程,包含软件质量评价、算法优劣评价、系统鲁棒性评价等一系列的内容。
国际上知名的汽车公司和零部件公司,如bmw、benz、bosch、continental、等均有专门的测试团队、先进的测试技术、成熟的测试流程,为产品质量保驾护航。其中,建立完整的测试流程对于一个专业的测试团队来说尤为重要。
产品开发是一个循序渐进的过程,从计划到策略到实现。软件测试流程是与开发流程一一对应的关系,即按照这种方式来定义我们的测试过程,它根据不同的产品特点和以往的成功经验,定义了从需求到最终产品交付的一整套的测试流程。流程告诉我们该怎么一步一步去验证和测试产品,可能会有那些风险,如何去避免风险等。由于流程来源于成功的经验,因此,按照流程进行开发可以使得我们少走弯路,并有效的提高产品质量,提高用户的满意度。以下从几方面简单介绍下测试流程。
1. 测试基本流程
系统开发方式很多,常见的有:v模式、w模式、h模式等。目前很大部分项目团队都采用v模型,见图1。
.jpg)
图1 v模型
与开发模型v模型相对应的测试流程,也是基于v模型基础上建立的。一般而言:测试流程分为以下几个重要阶段:测试需求分析→测试计划→用例设计→测试环境搭建→测试执行→测试记录→缺陷管理→测试总结。
以上阶段并没有覆盖软件测试过程的所有环节,在测试过程中还要包含测试过程监控、用例评审、代码review、问题讨论等工作。所有的测试工作也不是独立分开的,是相辅相成的关系。所以,只有掌握了测试流程的每个环节,理解了各个环节之间的关系,才能在测试工作中运用自如。
以上阶段并没有覆盖软件测试过程的所有环节,在测试过程中还要包含测试过程监控、用例评审、代码review、问题讨论等工作。所有的测试工作也不是独立分开的,是相辅相成的关系。所以,只有掌握了测试流程的每个环节,理解了各个环节之间的关系,才能在测试工作中运用自如。
2. 测试需求分析
测试需求分析是软件测试过程中一个很重要的环节。测试需求分析直接影响到测试策划工作完成的质量,影响到用例设计是否完整和全面。测试需求分析一般要考虑以下几点:系统需求功能分析、需求和协议一致性分析、法律法规分析。
系统需求功能分析是整个测试需求分析的重要部分,首先要理解需求的描述,分析需求描述是否完整,功能定义是否合理,控制策略实现是否合理。整个分析过程都要有相应的文档记录,并提交给开发人员。这份文档会作为开发人员进行需求修改的依据。同时,测试人员要审核需求和其他技术文档描述的一致性。例如:需求与技术协议、通信矩阵、dfmea等的一致性。另外,产品开发过程中,法律法规和行业标准是必须要遵守的。所以,测试人员在测试需求分析阶段一定要识别需求功能描述是否符合法规的要求。
在测试需求分析阶段,要明确测试对象是整个系统、子系统,还是子系统的某个节点,例如:网关节点。同时,要分析不同测试阶段的测试任务是什么。前期白盒测试阶段,测试对象为网关的软件模块。我们应该识别出哪些模块需要进行单元测试,哪些模块只需要进行走查测试。后期黑盒测试阶段,重点要分析测试环境怎样实现。
3. 测试计划和用例设计
测试计划包含测试人员、时间、测试任务的安排。测试计划可以是一份计划书,也可以根据项目的特点拆分为几份计划书。例如:白盒测试计划、黑盒测试计划;或根据项目阶段情况分为:单元测试计划、系统测试计划等。
测试用例(test case)是为特定目标或测试条件(例如,执行特定的程序路径,或是验证与特定需求的一致性)而制定的一组输入值、执行入口条件、预期结果和执行出口条件。测试用例质量是考察测试策划人员能力的一个重要方面。测试执行过程的依据。测试用例设计不是随意进行的,而是按照一定的测试技术和测试方法。软件测试常用的测试技术有:等价类、mcdc、边界测试、因果图法、状态转移、场景分析等。设计测试用例可以从不同的测试方法考虑:接口测试、压力测试、可恢复性测试、性能测试、安全性测试等。
4. 测试环境搭建
测试环境是测试过程中很重要的环节,搭建测试环境是测试策划阶的重要工作。测试前,首先考虑是否可以在真实的环境下测试,如果不具备真实测试环境时,就要搭建接近真实系统的测试环境。
测试工具是测试环境中的重要因素,适宜的测试工具能够减少人员投入,提高测试效率。例如,qac适用于代码规范检查,通过编码规则的检查,有效发现潜在编码问题;polyspace是静态分析工具的佼佼者,能够以静态的方式发现程序运行时的错误;cantata单元测试工具,简单易用,有效的开展单元测试工作。
5. 测试执行
测试执行是根据测试用例的详细步骤,执行测试用例的过程。有的工程师认为,测试执行工作没有技术含量,随便一个人都可以做测试执行工作。其实,这种想法是错误的。测试执行工作主要是由测试执行工程师完成的。它对测试执行工程师也有很高的要求:测试工具的应用能力、需求和测试用例的理解能力、问题的分析能力、工作执行能力、沟通能力等。一个优秀的测试执行工程师可以对解决bug提出有益的建议,可以补充更有效的测试用例,发现更多的bug。
对于不同的测试阶段,测试执行任务也是不一样的。一般可分为单元测试、集成测试、系统测试。单元测试是对可独立编译的程序模块进行测试,测试对象可以是一个函数、一个文件。集成测试是也叫组合测试、子系统测试。它是在单元测试的基础上,将所有函数按照概要设计要求组装成为子系统或系统所进行的测试。系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试。
6. 缺陷管理
测试过程的另一个重要阶段是缺陷管理。缺陷是未达到需求中标明部分的功能、未达到需求中未标明但应该实现的功能以及超出了需求中标明的部分。在很多人的传统意识里,缺陷就是指未达到需求中标明的功能。这种认识是不全面的,我们同样要重视后面两种情况。
缺陷管理时,要识别一些缺陷的属性。一般从四个方面识别:严重程度、复现性、优先级、缺陷来源。严重程度是指:因缺陷引起的故障对软件产品的影响程度,可以分为5种等级:致命、严重、一般、较轻、建议。复现性是指:缺陷在产品中发生的复现性,通常可以用频率来表示,可以分为:总是、经常、有时、不易复现。优先级是指:缺陷必须被修复的紧急程度。“优先级”的衡量抓住了在严重性中没有考虑的重要程度因素。可以分为:立即解决、高优先级、正常排队、低优先级。缺陷来源是指:缺陷所在的地方,如设计,文档、代码等。
缺陷跟踪管理是指对项目或产品的整个生命周期中出现任何问题进行登记-解决-直至验证关闭的过程。缺陷管理按照设定的跟踪流程进行问题的管理。缺陷管理可以根据企业自身情况,借助管理工具完成,例如:testdirector,bugrat,clearquest等。缺陷跟踪用于跟踪记录产品的缺陷、需求变更等,作为开发人员与测试人员的沟通桥梁,保障产品开发流程更加协调。缺陷跟踪管理的具体流程见下图:
缺陷管理流程
7. 测试管理总结
测试管理工作贯穿于测试流程的始终,测试团队中每个人的角色和职责都有很明确的划分。项目测试工作的负责人一般称为测试策划人员或项目测试经理,是测试团队的核心人员,也是与外部部门的接口人。测试负责人的主要工作有:监控测试工作进度和状态、制定测试工作计划、负责测试用例设计、负责测试环境搭建、监控测试工作质量、跟踪测试问题等。测试执行人员主要负责测试执行工作,其工作由测试负责人来安排和监控。
测试管理工作贯穿于测试流程的始终,测试团队中每个人的角色和职责都有很明确的划分。项目测试工作的负责人一般称为测试策划人员或项目测试经理,是测试团队的核心人员,也是与外部部门的接口人。测试负责人的主要工作有:监控测试工作进度和状态、制定测试工作计划、负责测试用例设计、负责测试环境搭建、监控测试工作质量、跟踪测试问题等。测试执行人员主要负责测试执行工作,其工作由测试负责人来安排和监控。
所有测试工作完成后,测试负责人要对测试工作进行总结,记录测试工作的工时、问题数、问题状态、漏测问题等。