一、测试用例的设计概述
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求(百度百科)。测试用例是测试工程师关键的工作产物,也最能够反映测试工程师的测试能力。软件的测试目的是发现软件中存在的缺陷,而好的测试用例在满足用例设计规范的基础上,能够在短的时间内发现控制器软件中的错误,同时满足的一定的测试覆盖度。
测试用例设计思路:理解-设计-评审(理解需求,设计测试用例,评审测试用例)
测试用例的设计其实是一门艺术,并不是说测试用例设计的越多越好,测试本质上就是无穷尽的,需要结合项目的实际,理解、分析需求,设计出最佳的测试用例,也许你写了10条测试用例,就发现了一个问题,而你的同事写了100条测试用例,也没有发现这个问题。因此,需要掌握测试用例的设计方法,通过方法解决问题,通过方法归纳问题,通过方法发现问题。
二、写测试用例的目的
1、为软件测试提供依据
2、体现软件测试的整体思路
3、开发问题复现的依据
4、了解测试进度
5、软件质量的评估
6、评估测试的侧重和着重点
7、与需求形成内容的一致性和双向追溯性
8、软件的更新及维护过程中测试的依据
三、测试用例设计文档的主要组成要素
测试用例用途、需求编号、用例编号、用例名称、预置条件、测试步骤、预期结果、测试结果、备注、用例级别、自动化类型;测试人员、测试项目、测试版本、测试时间、修改人员、修改时间、修改内容、设计人员、设计时间;
四、测试用例设计的资源基础:
HIL:《控制器相关的标准规范》、《功能规范说明书》、《硬件规格说明书》《CAN矩阵信息表》《诊断信息表》。
MIL:《软件需求说明书》、《软件详细设计说明书》、《软件架构设计说明书》。
此外,测试用例的设计可以参考质量问题管理表、测试经验知识库等等。
五、测试用例设计方法
根据本人经验,总结出如下测试用例设计策略:
1、分析功能需求
2、确定功能的属性
3、选择测试用例设计方法(一个或多个)
4、设计测试用例
- 根据经验/错误推导等方法补充测试用例
1、分析功能需求
分析功能需求,将功能需求拆解成最小的可测单元,预期的输入,明确的输出结果;避免预期的输入,多个输出结果,拆分到预期的输入,一个明确的输出结果。
2、确定功能的属性(阈值、查表、条件使能、状态跳转、故障类、配置类、流程类)
阈值类测试用边界值、等价类法;
例如:如果车速大于60小于120,则能够进入定速巡航功能。
查表类使用边界值、等价类法;
例如:扭矩根据车速和油门踏板进行查表。
条件使能类使用边界值、等价类法、MCDC;
例如:如果满足条件1,条件2,条件3,则进入功能A。
配置类使用等价类法;
例如:软件中通过写配置字实现某功能的实现,应通过不写和写配置字进行测试。
状态跳转类使用状态转换、等价类、边界测试、MCDC覆盖、路径覆盖;
例如:系统状态的跳转,IGON \ Init \ KLACC \ DCCharger \ ACCharger等。
故障类使用等价类;
例如:满足条件1,出发功能故障,恢复1,功能恢复。
流程类使用基本路径法、边界值、等价类、场景分析法;
例如:汽车高压的上下电流程。
3、选择测试用例设计方法
在汽车软件测试过程中,常用的测试用例方法包括:边界值、等价类、状态跳转类、场景分析法、路径分析法、MCDC、路径覆盖;此外,如果是功能安全项目的测试,选择测试用例设计方法需要根据具体的功能安全目标ASIL等级进行确定。
4、设计测试用例
根据用例测试规范中要求的要素进行编制测试用例文档。
5、根据经验/错误推导等方法补充测试用例
根据测试工程师的经验/错误推导等设计测试用例,对应测试工程师的要求很高,是一种站在开发者的角度设计测试用例的方法,是对开发者的一种查漏补缺,目的是用经验的测试用例筛选出开发需求的问题,是测试工程师能力的重要体现和能力的分水岭。
ISO/IEC/IEEE29119-4:2015 软件与系统工程 软件测试 第四部分:软件测试中提供了计算机行业的一些测试用例设计方法,下面与汽车软件测试行业常用的测试用例方法进行对比:
基于规格说明的测试设计技术:满足功能性、性能效率、易用性、可靠性、信息安全性测试;
主要用于汽车软件的功能测试,功能测试用例设计资源来源于规格说明(功能规范),为了测试功能的预期行为,测试人员通过定义特定的输入来激励系统,然后比较预期的结果和实际的测试结果,只能看到输出的测试结果和中间的观测量信息,无法测试实时运行的过程信息。主要用于软件测试的HIL和实车测试阶段。
边界值分析(汽车软件测试推荐使用)
因果图
分类树方法
组合测试设计技术
决策表测试
等价类划分(汽车软件测试推荐使用)
随机测试
场景测试(汽车软件测试推荐使用)
状态迁移测试(汽车软件测试推荐使用)
语法测试
用例测试
基于结构的测试设计技术:主要目的是满足功能性的测试,测试用例的设计不考虑来源,考虑的是测试模型的结构属性,基于此以测试覆盖度为目标生成的测试用例。主要用于软件测试的MIL阶段。
分支条件组合测试
分支条件测试
分支测试(汽车软件测试推荐使用)
数据流测试
判定测试
修正条件判定覆盖(MCDC)测试(汽车软件测试推荐使用)
语句测试(汽车软件测试推荐使用)
基于经验的测试:满足功能性、性能效率、易用性、可靠性测试
错误猜想(汽车软件测试推荐使用)
六、测试用例设计评审
测试用例评审是为了验证测试用例的正确性、有效性、测试覆盖度。参与人员包括需求、开发、测试人员,重点关注以下内容:
1.测试用例是否覆盖了所有的测试需求点(双向追溯性)
2.整个项目测试用例设计个数是否达到测试覆盖度要求(覆盖度要求)
- 每个测试用例步骤应<=10(TBD) Step
4.测试用例设计是否选择了对应的测试用例的设计方法(设计依据)
5.测试用例的编号规则是否进行了统一
6.功能安全相关的需求测试用例设计方法是否遵循了功能安全标准
用例是否具有很好可执行性。用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确;期待结果是否有明显的验证方法
用例设计是否包含了功能正常和功能异常的用例
测试用例是否按照定义的测试用例编写模板进行编写
10………..
文章的相关内容参考了以下标准,同时测试用例设计方法的具体使用,文章不做具体介绍,可以参考以下标准:
1、《ISO/IEC/IEEE 29119-4:2015 Software andsystems engineering — Software testing — Part Test techniques》
2、《新能源汽车车载控制器软件功能测试标准》
3、《ISTQB®基础级汽车软件测试工程师大纲--2018中文版》
版权归原作者 车载控制器开发与测试 所有, 如有侵权,请联系我们删除。