大话质量工作之单元测试

您所在的位置:网站首页 谭松韵唱《今夏》视频 大话质量工作之单元测试

大话质量工作之单元测试

#大话质量工作之单元测试| 来源: 网络整理| 查看: 265

最近处于离职工作的空窗期,每天除了面试之外,剩下时间还把之前一直想了解的诸多概念都重新审视了一番。

在谷歌测试之道这本书里,作者将测试分成三种类型,即大中小三种类型的测试,划分的概念大概就是根据层级,我总结了一下,大概如下图:

小型测试即我们常说的单元测试,就是基于代码级别的测试。从函数的意义出发,只关注输入输出,不关心具体实现。

我个人总结了单元测试的几个好处,如下:

单元测试自动化成本低,耗时时间短,但却能保证过滤方法级别的bug有利于研发交付质量可靠的代码有利于项目重构单元测试自动化成本低,耗时时间短,但却能保证过滤方法级别的bug

自动化成本低

根据测试金字塔可以看到,从GUI,API,Unit三个层面的自动化实施成本是不同的。

UI自动化会因为前端页面的频繁更改导致测试脚本需要重构,并且测试脚本本身花费的时间成本又会让人思考UI自动化实施的必要性。

API自动化是一种简单且高效的方式,但是并不适用所有业务系统。如果接口层面依赖的外部服务无法提供行之有效的业务数据呢?

单元测试框架可以提供Mock和Stub工具,使得依赖外部服务的单元并不会因此而阻塞测试进程。并且单元测试在落地技术成本上,基本可以说低到没有。烂大街的Junit,TestNg教程。以及Maven和诸多CI工具的支持。

在自动化概念成为衡量KPI标准的今天,着眼于各种眼花缭乱测试框架不如真正的从底层建设代码质量体系。

能保证过滤方法级别的bug

我一直有个不太恰当的比喻质量工作就像是从水里捞鱼,网眼大小决定了我们是否能够捞到足够的鱼。

测试人员编写的测试用例粒度由需要场景决定,只要满足这些场景的代码就意味着足够的质量保证。也就是说测试用例的要求只保证能够捞到一定大小的鱼(那些影响到业务场景的Bug)。

那么单元测试就是针对实现某个场景的逻辑代码的各个子代码块的细粒度测试,换句话说单元测试的要求是尽量保证覆盖到的水域里没有鱼。

举个例子,一架质量合格的飞机,那么其零件的质量也需要满足一定标准。如果一架质量合格的飞机,那么其零件有些不满足一定标准,那么谁又能保证“质量合格”这个前提为正确前提呢?有利于研发交付质量可靠的代码

这就不得不谈到冒烟测试的可靠性和必要性了,冒烟测试通常是测试人员在测试用例中划分出一些比较简单的场景提供给研发人员,在确定交付的日期,研发人员演示这些场景,作用是研发向测试交付的质量依据。

我个人觉得冒烟测试是单元测试代码覆盖建设不全带来的一个产物。试想,如果研发同学都没把握和依据保证自己的代码没问题,那么测试同学依靠场景就能把底层代码的问题查出来么?

一个待纠正的认知就是,软件质量是由产研测三方共同作用的结果。

看过外国很多软件公司的招聘其实大多数是没有专职QA的,我想唯一区别就是在质量流程的建设上,当然包括单元测试覆盖率。

在我面过的几家公司甚至于没有专职正式QA员工的T0级大厂,单元测试建设也处于概念级别状态。也许因为业务爆发,交付周期太短是导致研发无法着眼于代码质量建设的重要原因。

有利于项目重构

研发同学想对某处代码进行优化修改,那么修改之后,测试同学是不是需要跟进回归呢?

研发同学更改了某个依赖版本包,那么修改之后,测试同学是不是也需要跟进回归呢?

研发同学更改了某处接口的变量名或方法名,那么进行提交之后,项目运行失败,又该怎么避免这个问题呢?

有了单元测试再看这几个问题,是不是觉得没那么复杂了。既然单元测试关注的是输入输出结果,你怎么实现?用了哪个版本的包,只要通过单元测试用例。场景测试意义还重要么?

单元测试覆盖建设的几个问题?单元测试由谁写?研发人员!如果研发人员不关注,测试同学可以进行驱动建设。已经比较庞大的项目,单元测试落地怎么实施?根据当前在测模块来进行逐步建设,只保证新增的模块进行单元测试代码覆盖。早前的代码可以后续进行单元测试补充。单元测试用例什么时候跑?项目每次构建,生产,预发,测试都需要这个步骤。当然这也涉及到测试代码的版本分支管理。有了单元测试就不需要场景测试了么?不,单元测试能过滤大部分代码级别的问题。但是涉及到负责服务调用,场景交互,需要采取其他测试手段。质量内建是首要原则,其次才是场景。

相关文章:

测试到底是什么?应该怎么做?--腾讯技术团队

从头到脚说单测——谈有效的单元测试(下篇)

相关书籍:

1.《Google软件测试之道 》

2.《持续交付》

3.《软件测试的艺术 》

4.《 代码整洁之道:程序员的职业素养》

5.《软件测试 》

6.《测试驱动开发 》

7.《软件测试经验与教训》

8.《探索式软件测试》

9.《捉虫日记》

10.《发布!软件的设计与部署》

11.《移动App测试实战》

12.《微软的软件测试之道》

13.《颠覆完美软件:软件测试必须知道的几件事》

14.《有效的单元测试 》

15.《敏捷软件测试测试人员与敏捷团队的实践指南》

16.《腾讯Android自动化测试实战》

17.《完美软件对软件测试的各种幻想》

18.《 Python Web开发:测试驱动方法》

19.《测试驱动开发的艺术》

20.《软件测试工程师面试指导》

21.《自动化测试最佳实践来自全球的经典自动化测试案例解析》

22.《Cucumber:行为驱动开发指南》

23.《Web安全测试 》

24.《大话移动APP测试:Android与 iOS应用测试指南》

25.《iOS测试指南》

26.《全程软件测试(第2版)》

27.《 JUnit实战》

28.《 xUnit测试模式 》

29.《测试驱动的面向对象软件开发》

30.《Java测试新技术TestNG和高级概念》

31.《测试之美》

32.《测试架构师修炼之道》

33.《.NET软件测试自动化之道》

34.《 软件测试之魂》

35.《模糊测试强制性安全漏洞发掘》

36.《 单元测试的艺术(第2版)》

37.《 软件测试技术经典教程》

38.《有效软件测试》

39.《计算机软件测试》

40.《 软件测试基础教程》

41.《 Junit in Action 中文版》

42.《游戏测试精通 》

43.《 精通软件性能测试与LoadRunner实战》

44.《完美测试 》

45.《用例分析技术》

46.《软件测试自动化》

47.《软件测试面试突击》

48.《应用程序性能测试的艺术》

49.《 软件测试与持续质量改进》

50.《Perl Testing程序高手秘笈 》



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3