1.需求层次
在软件开发过程中,需求一般有三个层次,第一层是用户有个想法、困难或者痛点,称作为用户需求;基于用户需求进行可行性分析和价值分析后,在众多解决用户需求的方案,选择一条最优解方案,称之为业务需求,基于业务需求进行分解形成可实现的系统模块或者功能,称之为系统需求。
1)用户需求
用户需求是需要重复考虑,客户的痛点在什么地方,想要解决什么问题,达成什么目的,这部分内容很多时候比较隐晦或者用户自己也很难定义清楚。
比如用户的需求可能是一架更快的马车。
比如用户需求可能是想过河,但表述时可能是希望能够有一座桥。
所以对于业务需求一般需要专业人士,进行大量访谈跟踪,最好以试图的形式描述业务的现状和期望解决的问题。所以用户需求一定要了解与商业目的或者管理目的,了解客户最后的动机。
2)业务需求
业务产品经理或者业务专家,通过对用户需求分析提取,价值分析。梳理出有什么角色(Who),在什么条件下(When),在什么地方或者那个功能入口(Where),愿意花多少钱来完成,使用什么功能的什么操作(What)来达成业务目标。
比如用户需求是需要一架更快的马车。
业务需求阶段可以给出的方案可能是:四驾马拉的马车(原来是一匹马),自行车,摩托车、汽车、火车、飞机等等,但通过对用户需求价值分析,通过对角色能力判断,确定一个摩托车的需求是满足他的需求。一辆摩托车就是根据用户需求分析出来的业务需求。
这部分实际上是需求规格说明书或者产品规格说明书的内容,这部分包含功能出发的入口,功能说明,功能使用约束的事件,以及执行完成后的响应及结果等。
3)系统需求
系统需求或者叫软件需求,是实现业务需求,实际上是业务需求规格说明说的主要内容,业务需求分解为各个模块或子系统的那些功能,包含功能的主流程和备选流程,数据对象和接口的结构等。系统需求是根据业务需求的落地实践。
比如业务需求需要一辆摩托车,系统需求就可以将业务需求通过分解成:
一个扶手方向盘
两个轮子
一个车架
一套刹车系统
这样就可以实现一辆摩托车。
2.不同层次需求的测试关注点不尽相同
基于以上需求分层,测试工程师应该针对不同层次的需求采用不同的测试方法。
如在系统开发阶段,开发出来的是一个个模块或者子系统,测试应该解决的是单个模块的功能是否满足需求,需要考虑本模块的核心功能和本模块中的各种异常情况,包含异常场景中的异常流和备选流,也包含各种异常数据导致系统的潜在风险的功能,如某个功能某个项的输入情况(默认、为空、超长、不符合业务规则和约束等)。
对于集成阶段,需要考虑的是,即时每一个模块都正常,整体业务是否可用,是否满足业务需求,比如上面的例子提到的摩托车这个产品,在集成阶段需要考虑的是,每一个组件都可用(方向盘、车架、轮子、刹车),但组合在一起是否能够跑起来?是否按照业务需求的要求?更重要的是确保组装起来后就是一个摩托车,而不是一个自行车。
而对于用户验收阶段,需要确保完成的产品或者系统是满足用户需求的,比如我们造出的摩托车就是比马车跑的快,而且没有用户非常反感的能力。这一条在测试时其实很多时候都被我们忽略,比如某个业务需求,解决用户的某个痛点;通过系统需求分解后,完成某项功能。在测试时更多的是关心该业务需求是否被实现,而没有关心该业务需求是否解决用户的痛点。导致很多业务需求上线后,通过数据分析没有达到预期结果,是一个伪业务需求。
为了解决以上问题,测试工程师更应该提前介入需求阶段,了解用户需求,基于用户、业务需求需求进行测试,检验产品实现是否解决客户的痛点,进行基于业务场景的测试,而对于系统需求,则需要根据需求规格说明书或者产品规格说明书,按照验证在各种条件,输入的组合情况下,操作的结果是否和需求描述的一致。
3.合适的测试策略
因为不同层次的需求,测试的关注点和侧重点是不同的,所以需要针对不同层次需求或者阶段采用不同的测试策略。测试策略是好的测试计划的重要组成部分,是测试与任务联系的桥梁。测试策略就是如何测试产品以及更快找出重要的问题?需要对那部分进行特殊的测试?要运用什么手段创建测试?当程序错误出现时如何识别?常见的测试策略有:
基于阶段划分的测试策略:如:单元测试、集成测试、用户验收测试。
基于分层测试的策略模型,如:单元测试、服务接口测试、UI层测测试。
基于原型验证的测试策略,如:业务验证测试、灰度发布验证、AB测试验证。
以上只是简单列举,在实际测试过程中还会有各种测试策略在实际项目中的应用。比如前段时间我们内部有一个基于B端用户的APP测试项目交接过来,该产品有近一年时间没有迭代。交接过程中文档缺失和人员断档的情况下,我们对新一轮App改版上线的策略是:
第一阶段:核心功能走查,学习了解,确保核心功能正常,完成第一版高阶用例梳理。
第二阶段:业务测试阶段,确保核心、辅助功能、基础功能业务正常可用,可以流程的完成B端客户的正常业务功能,在这个阶段需要完成基本功能测试、兼容性测试、稳定性测试、性能测试、网络测试等等。
第三阶段:回归测试阶段,从用户视觉进行测试大扫除,确保App正常发布。
测试策略是一个复杂活动,一项测试任务是否能够在以最小的成本,快速高效、高质量完成,直接取决于测试策略是否科学规范。文章来源:MiniStarClub北京,致力于提供最具价值的测试及测试管理领域原创文章。包括测试技术、测试方法、测试思想、测试管理等。
· 推 荐 阅 读 ·
RECOMMENDATION
你点的每个“在看”,我都认真当成