QA如何高效参与技术设计评审

和自甴很熟 提交于 2021-01-19 15:57:37

作者|张元

背景

随着QA进行全流程的质量把控逐步成为趋势,QA在项目中的关注点不仅仅停留在测试阶段,在项目的每一个阶段都可以看到QA在积极地推进项目进度、把控项目质量。

本文将主要介绍在技术设计评审阶段,QA可以从哪些地方入手,做到真正有效的参与其中,并发挥作用。

为什么要参与技术设计评审?

在介绍参与技术设计评审之前,我们首先要明确为什么要参与技术设计评审?参与技术设计评审能给我们带来什么?只有我们明确了参与技术设计评审能给我们带来的好处,我们才更有动力做这件事情。我认为, QA参与技术设计评审,有以下四点好处:

1、纠正项目成员对需求的错误理解。在参与技术设计评审时,通过对开发的设计思路的了解,了解开发对于需求的理解,发现开发对需求理解不正确的地方;同时,在了解设计思路的同时,可能会发现自己对需求理解有偏差的地方。通过对这些点的及时纠正,能尽早地避免某些bug的出现。

2、为测试方案提供依据。通过参与技术设计评审,了解具体的实现方案,针对开发的设计方案进行相应的测试方案选型,例如核心的接口、核心的服务是否需要进行接口测试、重要的逻辑覆盖、测试场景的数据构造、测试所需的工具等,都可以在这个阶段结合开发的技术设计进行思考和产出。

3、有效的评估影响范围。有些场景需求文档上并未提到,但是因为相应的代码有改动,相关的功能可能会受到影响,参与技术设计评审能够帮我们发现这些影响点,及时地补充测试用例,避免遗漏。

4、有效的评估风险点。通过了解开发的技术设计,了解改动的范围,评估工作量以及相应的风险点。甚至,在技术评审阶段,开发会提供多种设计方案,通过对每种方案的了解,QA可以有效的评估到每种方案的影响范围和风险点,从而选择风险更小的解决方案。

QA如何高效参与技术设计评审?

设计评审会议的时间一般不会太长,想要在一个设计评审会上跟上开发同学的思路,理解设计方案,达到自己的目的,提前做好准备工作是非常重要的。我把设计评审大致分为三个阶段:设计评审前、设计评审中、设计评审后,在每一个阶段,我们需要做的事情主要有:

1、 设计评审前:通知到位,提前准备。

(1)确保相关人员通知到位。评审会上确保相关人都在场,提前做好通知;

(2)熟悉需求文档,提前看技术设计文档。结合需求文档,理解技术设计文档,有问题提前做好批注。

2、设计评审中:重点关注技术设计是否满足需求、涉及的接口、测试范围。

(1)流程图。可以清晰的展示此次需求的业务流程;

(2)系统间交互图。以时序图或协作图的形式提供,可以清晰的体现出系统间的信息传递;

(3)配置类功能。设计中哪些是配置实现的。apollo配置、缓存、mq、定时任务等;

(4)数据库设计。数据库的库表结构,关键字段的描述;

(5)设计是否完整。是否覆盖了产品需求文档中要求的功能,避免遗漏;

(6)已有接口的复用或修改。如果是复用已有接口的能力,看是否该接口真能满足新的需求,如果在原有接口的基础上修改,需要清楚更改了哪些内容,是否会影响到已有逻辑;

(7)新接口的定义。如果是新的接口,看实现的功能是否符合需求,接口定义是否明确;

(8)需要第三方提供的接口。明确哪些接口是需要第三方提供的,明确对接人,方便后续的沟通;

(9)对外提供的接口。对外提供接口的作用,做好对应的测试方案,与使用方做好沟通;

(10)影响范围的评估。明确此次需求改动影响的范围是什么,需要做哪些场景回归;如果影响范围比较大,是否有更好的设计方案;

(11)具备可测性。面对分批提测的需求,模块拆分后是否具备可测性;针对特殊场景,是否需要开发或测试提供工具方便测试;不可测的情况下,划分分工的边界,明确告知RD我们能测试的点,明确不可测试的地方的质量把控方案;

(12)新老数据兼容。是否涉及新老数据兼容的测试验证;

(13)核心接口性能指标。是否需要对核心接口做性能测试;

总之,评审过程中,要积极地跟上开发同学的思路,理解RD设计的理由,持不同看法时勇敢地提出自己的想法和建议。

3、设计评审后,做好待办事情的跟进,完成测试方案的设计。

(1)相关群里同步待跟进的事情。明确对接人及问题的解决时间,做好持续的跟进;

(2)设计测试方案。按照项目准则选择测试手段、编写测试用例、提供数据构造或脚本工具等、结合技术设计方案,做好风险评估。

QA深度参与技术设计评审的项目实践

下面我将以一个项目为例,具体介绍如何通过技术评审推动项目最终高效、高质地完成。

项目名称:第三方供应商可投转转广告

项目背景:在第三方供应商后台新增“我要推广”入口,撮合第三方供应商使用商业广告投放,提升广告主成单效率,并提升广告收入

在整个设计评审阶段,做了如下的一些工作:

1、熟悉需求文档,加深需求理解,挖掘需求的重难点,并关注其对应的设计方案;

2、提前看技术设计文档,尝试理解开发的设计思路,有疑问的地方提前问;

3、技术评审现场,检查参与项目开发的前后端开发同学以及产品同学是否全数到场,以免评审过程中产生需求改动点而没有同步到所有相关人。

4、检查RD提供的流程图是否正确,是否与需求一致;

5、由于项目涉及第三方,因此需要关注涉及第三方的系统交互图,了解各方负责的功能范围,评估第三方可能带来的风险;

6、关注需求中重点逻辑的实现方案,数据库表设计,评估设计方案对应的测试范围;

7、根据设计文档,指定测试方案,包括数据准备、接口测试、case设计、数据构造工具准备。

设计评审效果:

1、基于对需求理解和对RD提供的流程图的检查,发现了RD流程图与需求不一致的情况,从源头上预防了bug的产生。

2、建议选择对于测试范围影响更小的开发方案,缩小了测试范围。其中涉及2个需求点:

需求点之一:如何标识第三方用户,并记录第三方用户信息(电话、地址)?

可能方案1:原有商业用户表中增加字段?

(1)劣势1:若在原有商业用户表中增加字段标识第三方用户,并且新增字段单独存第三方用户的电话,需要回归原有的商业用户创建功能;

(2)劣势2:新交接的业务,现接手的RD对原有业务不太了解,不太敢直接冒风险改动原有功能;

可能方案2:新增一个表单独记录第三方用户及相关信息?

(1)优势:避免回归商业用户的新增功能;

需求点之二:如何让第三方用户绕开商业用户身份和资质校验,继而使用商业的各种功能?

可能方案1:在每处校验时,判断第三方用户并作特殊处理。

(1)劣势1:商业用户身份和资质校验,是商业营销管理各种功能使用的前提,校验的地方太多涉及多个集群,梳理起来容易遗漏,且回归范围广。

(2)劣势2:后续新增商业功能,都需要识别是否是第三方用户并作特殊处理,兼容成本大。

可能方案2:新登陆接口插入数据以确保后续流程能通过校验。

(1)优势:新接口中加功能,只需保证本次项目涉及的流程功能,影响范围小。

如图所示:

 

结论:从QA的角度,基于对影响范围的评估,都推荐采用了第二种方案

3、基于RD设计文档中提供的系统间的交互图,明确了涉及第三方的功能分工。

以下是交互图:

 

由此可知,第三方供应商侧只需要保证用户能够正确跳转到商业侧,以及所带的用户信息的正确性,后续流程则是有商业侧来保证。由交互图也能得知对方的工作量在整个项目中的占比,能大致评估出第三方可能带来的风险大小。

4、基于第2点中需求点之二的方案2,可得知从第三方供应商侧登陆商业侧的接口所做的哪些额外处理,这是仅仅从需求文档中无法获知的。设计评审后,明确了每个接口做了哪些处理,以此为依据,进行了测试方案制定,包括:

(1)数据如何准备;

(2)接口测试重点测试入参是由第三方提供的2个接口,尤其关注入参为空的情况;

(3)case设计;

(4) 数据构造工具准备等。

项目整体效果:各方职责清晰、测试影响范围缩小(case少)、项目质量高(测试期只有1个前端bug,无线上bug)。

写在最后 

每个项目有其不一样的特点,本文列出了大而全的检查点,可以帮助提醒我们在设计评审环节可以从哪些方向上去考虑。

通过参与设计评审,QA能够深入理解技术的实现方案,有助于制定合理的测试方案。同时,通过不断的实践,QA也能在设计评审时,提出一些合理的建议,帮助项目更高效、更高质的完成,提升QA在整个项目中的影响力。

加油吧,测试人!路就在脚下,成功就在明天!

未来的你肯定会感谢现在拼命的自己!

给大家推荐一个软件测试技术交流群:1079636098  群友福利免费领取

愿你我相遇,皆有所获! 欢迎关注微信公众号:程序员一凡

1.免费领取一份216页软件测试工程师面试宝典文档资料。

2.软件测试学习路线以及相对应的视频学习教程免费分享!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!