为什么说“精准测试”是治疗富贵病的药?

不要因为“穷”就乱吃药。

你是真富贵还是名字叫“富贵”?

Q1: 什么是精准测试?

A: 参见什么是精准测试?

Q2: 那什么是富贵病?

A: 讲一个故事,某个团队有1万多条接口自动化用例,跑一次全回归要超过24小时。再讲一个鬼故事,某个团队有1万多条UI自动化测试用例,跑一次全回归要3天。这就是笔者所说的自动化测试富贵病。

Q3: 为什么精准测试能治富贵病?

A: 通过精准测试实现自动化用例和代码之间的关联关系,然后针对代码的变动部分挑拣出相应的测试用例进行快速的回归。基于风险的测试表明,缺陷往往发生在变动的部分。笔者在之前的故事中也提到了回归测试的通过率是99%,也就是发现缺陷的概率是1%。因此,理论上如果能识别出这1%的用例并执行,就能将(回归)测试发现缺陷的效率提高99倍。没错,理论上的投资回报率就是这么高。

Q4: 精准测试这么好,我们也要上马精准测试!

A: 首先问一下, 你是富二代,还是拿到了大厂科技股的新贵?是真富贵,还是只是碰巧名字叫“富贵”?

为什么说“精准测试”是治疗富贵病的药?

你的工作是在挖坑的然后填坑吗?

在上马精准测试的过程中,通常会遇到以下的一个巨坑。

Q5:为什么要做不同版本/制品之间覆盖率数据的合并?

A因为我们的测试用例不会在一个版本上面跑全部的用例,我们会换不同的版本,或者说制品。所以要做跨版本的覆盖率合并。这个功能原生jacoco不支持,需要我们测试开发进行二次开发。

Q6:那为什么所有的用例不能在一个版本上跑完呢?

A因为我们是手工执行用例,不可能是在同一个版本上完成的,要跨几个轮次才行。

Q7:那你的自动化用力回归是一次全部执行的咯。

A但是自动化用例只是对回归用例的自动化,我们的新用例还是手工执行的呀?我想看新用例的对代码的覆盖情况。

Q8:那么说,问题的原因在于那是不是说,如果新测试用例能够同步实现自动化就不需要做跨版本的覆盖率合并了,因为每次都全量执行了。

A 我们没有那么多自动化用例。我们的自动化也是刚起步,覆盖率也没那么高呀。
Q9:那为什么不先做自动化测试呢?

A 我觉得精准测试也很有价值啊。而且我们(测试)老大让我做精准测试平台。

对的,米国大萧条时期,也有类似的工作,就是政府出钱在某个地方挖个坑,然后过几天再填起来,工资就这么到手了。

精准测试真的需要嘛?

Q1: 如果你的全回归能在分钟级实现,至少是半小时内实现。你还会考虑使用精准测试嘛?

A: 都分钟级了,上个厕所,喝个咖啡,楼下抽个烟不好嘛,搞啥精准嘛。万一漏测了咋办,3.25你帮我背嘛。

Q2: 那一般开发同学的单元测试就是分钟级啊,你考虑一下把你的用例下沉到代码级的测试嘛,不就非常快了。甚至可以实现开发人员每次提交代码都触发全回归啊。

A: 那怎么行,开发人员每次提交都全回归了,那我不是连个bug都发现不了了嘛。不是要下岗失业了。我就负责种树,让别人摘果子啊,不行不行。

Q3: 你们的测试人员都不会写自动化测试代码,为什么要搞精准测试啊?

A:我们的测试都不会写自动化用例,但是可以通过精准测试查看每次手工测试用例执行后的代码覆盖情况啊。这样我们就可以通过这个数据来补充测试,发现更多的缺陷。

Q4: 那直接看代码不是一样的吗?

A: 干嘛看代码,厂商/测开提供的工具不是能看嘛,而且还能实时染色呢,你要不要看看?

Q5: 问你个数学问题,80%+80%= ?

A: 你哪来的?保安~!

源自公众号  软件测试那些事



留言