如何做到测试场景不遗漏

· 前言 ·
所谓漏测,是指软件产品的缺陷没有在测试过程中被发现,而且漏出到生产,被正式用户发现,从而带来严重的后果。在软件开发过程中,软件产品的缺陷发现的越早,解决缺陷所需要付出的代价就越小。
导致漏测的原因有很多,如需求不明确、用例覆盖不全、环境差异、时间不充足等等。那么,如何降低漏测?很多人以为,测试的工作主要就是编写和执行测试用例。其实不然,测试分析与设计能力,才更能衡量一个测试人员的专业素质。测试人员运用自己的经验、专业,在测试分析与设计阶段,通常就可以发现一些需求、业务上的缺陷,大大降低了解决缺陷的成本。
本文将简单介绍如何进行测试分析与设计,从而最大程度的降低漏测,保证软件产品的质量。

·测试分析与设计·
本章节以“合作店项目—价格服务”需求(以下简称MSTB-Z需求)为基础进行说明。
测试分析与设计工作从需求下发开始,贯穿在项目生命周期中。
总结起来为以下几步:
?需求分析计划
?测试方案设计
?测试场景设计
?测试流程设计
?测试用例设计
?测试数据设计
需求分析计划
采用3W1H的方式进行测试分析,明确需求、测试范围、上线时间以及具体的测试方式等。

?WHY(为什么):为什么做这个需求
方便合作店实时查看产品结算价格,并售卖产品
?WHAT(测什么):需要实现什么功能
☑结算价加价规则落地功能
☑产品结算价计算功能
☑结算价查询服务功能
?WHEN(时间点):deadline是什么时候
☑10月底价格中心系统上线
☑11月中旬整个项目正式投入使用
?HOW(怎么测):如何进行测试
☑采用黑盒测试方法进行功能测试
☑使用工具进行接口测试
☑通过观察日志进行推送测试
还有最重要的一点,就是换位思考。作为测试人员,需要学会站在用户的角度去思考分析,他们最可能关注的是什么,他们需要的效果是什么。产品最终是为用户服务的,产品被用户认可,从而带来效益,这是我们的最终目标。
分析过后,制定一份简单的测试计划,安排好各阶段所需要的时间。

测试方案设计
我们目前的项目都是快速迭代前进,前期分析及测试方案的好坏,会直接影响到项目后续的质量。一份完整的测试方案包含内容很多,鉴于我们的现状,测试方案主要包含以下内容:

针对MSTB-Z需求,测试方案概述如下:
?测试目的
支持结算价计算,老逻辑不受影响,安全上线无BUG
?测试范围
☑跟团游、自助游、自驾游三大产品类型结算价计算
☑三大产品类型下支持加入的所有资源类型的结算价计算
☑对外提供结算价查询、计算接口
☑老功能回归
?测试策略
☑接口测试:运用我司提供的接口测试工具进行接口测试
☑功能测试:通过在BOSS3产品后台系统操作资源、产品等,进行功能校验
☑推送测试:通过观察日志,进行推送测试
测试场景设计
测试场景是对需求的测试范围的细化,根据业务流程,针对要测试的功能点进行罗列,并排出优先级。这里可以采用四象限法对功能点优先级进行排序:

针对MSTB-Z需求,主要测试场景设计如下:

说明:由于外系统强依赖价格中心的接口,所以接口测试的优先级在第一位。
测试流程设计
流程设计属于测试用例设计方法之一,又称为场景设计法。主要针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,这是从白盒测试中路径覆盖分析法借鉴过来的一种很重要的方法。
场景业务流通常分为以下三种:
?基本流
实现业务流程时,输入都是正确的,能够达到目标的流程
?备选流
实现业务流程时,输入错误或操作错误,导致流程存在反复,但最终仍能达到目标的流程
?异常流
实现业务流程时,输入错误或操作错误,导致不能达到目标的流程

针对MSTB-Z需求,流程图及对应的场景业务流设计如下:

流程设计结束后,根据流程图,抽取出测试路径,每个路径都需要包含一个未走过的路径。然后继续细化路径,抽取测试用例。
测试用例设计
根据设计好的测试场景进行测试用例设计,测试用例需要对测试场景和测试范围进行覆盖,覆盖越全面,漏测概率越低。
常用的测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、判定表驱动法以及上面提到的流程设计法等。一份正规的测试用例,包括以下重要的属性:

以上是使用传统的excel来设计测试用例的方法,但实际上,我们的项目属于高速迭代的状态,需要一种高效的方法来设计测试用例,从而节约更多的时间用来执行测试用例。目前比较流行的一种工具是思维导图(xmind)。思维导图更符合人的认知规律,将需要测试的功能点一层一层的剥开、细分,成树状散开,思路特别清晰,也给用例评审人员提供了方便。
使用思维导图编写测试用例,需要注意以下几点:
?分级
第一级:按测试类型划分:如功能测试、接口测试、性能测试、安全测试等
第二级:按需求测试点划分,一般可以划分为多个测试点
第三级:如果测试点可以细分到测试子项,则把测试子项作为第三级,否则测试点下直接挂测试用例即可
?功能测试下的分级
可以按照业务流程、业务类型等划分
?具体用例编写
注意逻辑性和条理性。
☑某用例属于某功能点下,则放到该功能点下
☑几个用例是在同一个条件下触发,则将这几个用例放入该条件的节点下
☑用例之间执行有顺序关系,标注好序号
☑保证同级之间的用例是互相独立的
针对MSTB-Z需求,部分测试用例设计如下:

测试数据设计
测试数据是测试过程的核心要素,根据测试用例提前设计测试数据,可以提升测试执行阶段的效率。
设计测试数据考虑以下分类:
?无数据
传入空或者默认值执行用例,查看是否生成正确的结果
?有效数据集
准备一组有效的数据,检查应用程序是否正确运行,数据被正确保存
?无效数据集
准备一组无效的数据,检查无效输入时,应用程序的行为
?非法数据格式
准备一组非法格式的数据,检查应用程序是否输出正确的错误信息
?边界条件数据
包括处于边界以及边界外的数据,识别应用程序对边界值得处理是否正确
实际设计过程中,根据具体的测试场景去设计,如结算价计算接口,部分数据设计如下:


· 总结 ·
好的测试工程师,需要有测试的思维方式。测试分析和设计能力,就是这种思维方式最好的体现。在正式开始执行测试之前,做好测试分析与设计,可以大大降低软件漏测率,同时切记,学会换位思考,多从用户的角度出发,思考他们真正需要的是什么。
扫码关注我们
途牛技术中心
期待与你相逢

