一个测试老兵眼里的测试用例

A公司面试官:

你认为测试用例的作用是什么?

B公司面试官:

你怎么看待测试用例评审的必要性?

C公司面试官:

编写测试用例的方法有哪些?

D公司面试官:

你们用什么工具编写测试用例?

······

身为一名QA,尤其是作为初中级工程师的你,想必在你过去求职的过程中,如上关于测试用例的问题,或多或少都被问到过。还记得当初你是怎么回答的么?你觉得面试官对你的回答满意么?

作为一名有着几年面试经验的测试老兵,其中我最喜欢问的是第一项“你认为测试用例的作用是什么?”就是想考察你对基础的理解和认知。我们一起来看看下面这些回答:

对于有点测试基础的同学都能看出来,以上回答都没错。但当把这些回答放在一起时,大家不难发现,单个回答都比较片面,很难突出你个人的能力。那么,下次再有面试官问到时,我们该怎样回答呢?

在这里如果只是简单的罗列答案,想必大家看完后,很快就又忘到了九霄云外。因此,带着大家一起分析下,遇到类似的问题该如何回答:

古语云:”三思而后行”、”凡事预则立,不预则废”。应用在我们测试中,在测试执行前我们也要三思,一定不能鲁莽、不能操之过急;要做到有目标、有计划、有步骤。其中的目标、计划、步骤不单单要在“测试计划书”中体现,在测试用例中同样要体现。而测试用例的目标正是与它的作用紧密契合的。那么它都有哪些目标呢?我们不妨从以下三个方面考虑。

01 测什么?

02 怎么测?

03 给谁看?

测什么?

被测对象显然是我们的需求。这里,相信个别同学就有疑问了,那直接依据需求测试不就完事儿了?我们来看个简单的例子:

有这么个一句话需求,输入整数A和B,返回A和B的和。

单纯的依据需求测试,可能会考虑到A和B分别为正整数、0、负整数等情况。可以说,这样测只是验证了“功能实现性”。并未验证到容错性、健壮性、稳定性等软件特性的其它方面。例如:我们要确认A和B需要支持的范围(代码中变量定义可能为int,long,BigInteger),不同的支持范围,CASE输入边界就要有所调整;同时我们要确认A和B输入非正整数(小数、非数字)时的一些容错可接受;甚至针对系统的特点,我们还需要考虑性能等其它问题。

由此,我们不难看出,即使这么一句话的需求,我们依然有很多需要考虑的点。如果不在测试用例中按照软件质量特性进行“拆分”,有谁能确保在测试执行时可考虑到所有点?对于复杂的需求,我们不仅要根据软件特性进行拆分,还要对需求本身进行拆分,例如对于一个微信发红包功能,我们可能需要拆分的点就要包含,发送方支付方式、红包额度、红包有效时长、发送目标等等,其中的每一个点可能又要拆分成很多的CASE进行验证。

通过以上分析,我们了解到。测试用例其中一个作用就是“完成对需求的拆分”。

怎么测?

我们都知道“做什么”通常要比“怎么做”难得多。同样,如果你已经搞清楚“测什么”,那么对于“怎么测”,难度就小了许多,甚至可以不写复杂的前置条件、测试步骤、测试优先级,按照自己组织的CASE去执行就好了。但建议不要这么做,原因在于可能在写CASE的时候搞清楚了“测什么”,过一段时间后就又淡忘了。更主要的是你写的CASE可能是别人去执行。

我以往经历的项目中,也确实是有不少团队把测试用例编写和执行分开的,经验丰富的工程师通常负责编写测试用例,而很多刚入门的只是测试执行。众所周知,我们的汉语文化是博大精深的,同样的一句话,放在不同的场合可能就有几种甚至很多种不同的含义。例如我们用Xmind的写了这样一条转账的CASE“转出100”,对于执行的人来说,他可能对需求设计并不完全了解,遇到这种情况,就需要找你确认“转出前账户余额是多少”。如果的CASE都是这么写的,恐怕需要额外增加大量的沟通成本。

另外,在我们实际的项目中,需求文档很少能做到详尽、更新及时的。尤其现在多数互联网团队都采用敏捷研发模式。需求细节、需求变更的传递更多的是通过口头沟通、零散的邮件沟通等方式。在这种情况下,再没有一份完善的测试用例,那么我们的软件质量恐怕是难以想象的;对于执行的同学来说,就更无从下手了。

通过如上的分析,我们可以看出,测试用例另外一个很重要的作用就是“测试执行的依据”。无论是编写人自己执行还是他人执行,在时间允许的范围内,我们都应该写的尽量详细。

给谁看?

我们编写所有的文档时,肯定都会有预期的读者。而对于测试用例,除了上文中提到的测试执行人员外,通常还包括产品、开发、测试Leader、项目Leader等相关干系人。大家有没有想过为什么要给他们看?

通常在测试执行前,我们的测试用例都要通知开发、产品及相关测试人员一起评审下,尤其对于较大型或较复杂的需求。通过评审,其实我们完成了两件事儿:

1. 让产品、开发、设计等人员分别站在自己的角度评估下,测试覆盖是否全面。

2. 完成需求再次确认。这样的一个确认过程,也起到了产品设计到技术设计的桥梁作用,因为通常技术设计不会写这么细致。而产品可通过测试用例了解测试人员理解是否正确,开发可通过测试用例回顾下自己的设计/编码是否与测试用例一致。

由此,我们又能看出测试用例另外一个作用就是“确保相关人员需求理解一致”。当然评审中需要纠错的内容我们需要记录下来,最后要发一份确认的测试用例给相关人员。这样的一个过程通常可以有效减少QA的“背锅”量。

结束语

测试用例除了上面分析提到的作用外,通常我们还会提取部分冒烟用例给开发人员做提测前的自测、给业务人员/第三方进行验收测试;同时测试用例作为测试最主要的交付文档,需进行整理归档,以备后续迭代复用。

关于测试用例的作用,以上仅是个人实际工作经验的一点心得,希望对你能有所启发。同时,建议大家在应对面试题目时,应多思考“面试官要考察什么”。有关测试用例设计方法、管理工具的问题,文中并没有进行分析,通用的方法和工具通过实践比较容易掌握。

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值