重读《从菜鸟到测试架构师》-- 开发人员也需要做测试

小艾经过了安装测试的历练,明显对软件测试又有了更深刻的了解。而在进行测试过程中,小艾遇到一个导致他手里大部分case失败的bug,而这个bug的幼稚简直令小艾忍不住想骂开发人员。

而就在小艾质疑为什么开发人员没有发现这么简单的bug的时候,小艾作为支援人员被调进了开发组协助开发工作,忙碌的开发组也立刻给小艾下达了第一份任务,完成某user story的代码开发及单元测试。

可是小艾的编码能力有限,紧赶慢赶才在限定的时间里完成了开发任务,没时间做单元测试了,只是简单测了测,就提交了代码,于是出现了之前自己骂开发人员的幼稚的问题——边界值没处理,而再次提交的代码,也依然出现了或多或少的bug。小艾很好奇,明明编码的时候考虑得还算周到,debug 模式下也一再调试过代码,为什么总有那么多层出不穷的小bug呢?

更让小艾疑惑的是,交代给自己任务的组长按理说能力肯定比自己厉害,可是完成开发代码的时间看起来却并不是那么及时,这似乎不正常,但令小艾佩服的是,组长提交的代码确实bug比自己少很多。

小艾在疑惑,组长是怎么做到的,组长也发现了小艾的问题,于是,两个人开始了秉烛夜谈,哦不,促膝长谈……

吃一堑长一智,走出单元测试的误区

由于小艾说自己是做过单元测试的,但很多应该在单元测试被发现的bug却并未发现,于是,组长问小艾单元测试是如何做的,小艾给出了如下回答:

1. 开发完代码之后,运行程序,试了几个功能测试发现没有问题

2. 用断点调试过代码,对代码进行跟踪过

组长告诉小艾,尽管这么做有一定的帮助,但没有关注到单元测试最核心的价值。有效的单元测试需要编写简单的、自动化的测试代码,且几乎和开发代码同时完成的。

小艾听着组长的话,产生了巨大的疑惑:测试不是有专门的组在做么,为什么开发需要写测试代码?

听过了组长的解释,小艾才知道,原来开发人员做单元测试不仅必要, 而且重要。

单元测试的特点及作用

保证代码质量:一旦代码有变更,都需要对新代码或更改的代码进行单元测试来保证已有代码不受影响,可以有效提高代码的质量。

更容易发现bug:单元测试是在系统的最低级别进行的测试,与别的方法及模块隔离。

可重复执行:有效的单元测试应该是自动化的

代码更易维护:单元测试还可以起到文档的作用,有效记录了相应代码的功能及用法。

解决bug的成本更低:这一点是进行单元测试最主要的原因。

功能测试中解决bug的周期

1. 功能测试人员在正式build中发现bug

2. 在bug跟踪记录系统中创建bug并进行描述

3. 相关的开发人员接到bug并在开发环境中重现bug

4. 开发人员调试并解决问题,将代码再集成发布

5. 功能测试人员拿到新build,验证bug是否被解决

一般来说,在功能测试阶段解决bug的成本,是在单元测试阶段解决bug的成本的10倍,在系统集成测试阶段解决bug的成本,是在单元测试解决解决bug的成本的40倍

到这里,小艾终于明白为什么开发人员要做单元测试且将单元测试看得如此重要了,但是他心生另一个疑问:开发人员写代码的时间已经很紧张了,如果还要写单元测试岂不是完不成任务了么?

实际上,开发人员写单元测试的时间几乎和他写产品代码的时间相当,当做项目计划的时候,把单元测试考虑进去是合理的。尽管单元测试增加了开发工作量,让开发时间延长了,但对于一个长期不断改进和维护的项目而言,不能忽视级联效应,应该从项目整体来看。

单元测试的影响

如果单元测试做得不够,功能测试组就不可避免地遇到一些单元测试层面的bug,用来发现并验证bug的成本增加,没时间和精力去做更复杂的测试,功能测试进度会受到影响。

大量的功能方面的bug若未在功能测试阶段发现,性能测试也会因功能bug而做不到足够的性能方面的工作。

而通过单元测试,能保证最基本的bug及时被发现及解决,可以削减项目整体成本。

潘多拉盒子里出来的怪物——开发人员眼中的测试

什么是单元测试?上面说了一堆,但还是没有提到单元测试的概念,单元测试是由开发人员在开发代码的同时进行的一种独立测试,验证其开发的每个代码单元。

谁来测试?开发人员

单元测试的目的是要确保程序的逻辑和开发人员对它的预期是一致的。再没有任何其他人比开发人员自己更了解他对这段程序的预期是什么了。所以要编写有效的单元测试,开发人员本人是最合适的人选。

什么时候进行单元测试?开发产品代码的同时

有效的单元测试要求在编写产品代码的同时进行单元测试,而在引入敏捷开发理论之后,更高的要求是测试驱动开发,即单元测试代码要在产品代码之前编写。

测试对象?代码单元

单元是什么?是类的成员方法,也可以是任何具有明确功能、规格定义、明确接口定义,且规模一般比较小的程序代码模块的组合体。

独立测试

即将代码从原始程序中隔离出来,尽可能地与程序其他部分或外界依赖隔离,即低耦合。

单元测试与功能测试

尾声

通过组长的详细讲解,小艾终于对单元测试有了初步的了解,单元测试其实有几个关键点,把握好了,也就能更好的完成单元测试了:

单元测试记录预期的行为

每个单元测试针对一个单独的行为进行测试

尽可能地与程序其他部分或外界依赖隔离

一旦失败,可清晰地定位失败原因

可重复运行,且每次运行都有确定的行为,不受上次运行的影响

可以快速执行,简单、实用、高效

有效的单元测试是自动化的

尽管有了初步了解,小艾依然不知道单元测试应该测点啥,怎么来测,没关系,项目的文档、网上的资料都会慢慢告诉小艾这些知识的~让我们期待下回对单元测试的范围、流程、工具的介绍吧~

想要第一时间看到这一系列文章的更新及更多精彩内容可以扫描下面二维码关注微信公众号: 倚楼听风雨的如月

时间: 2024-10-02 21:54:00

重读《从菜鸟到测试架构师》-- 开发人员也需要做测试的相关文章

2.6.1 测试架构师

<微软的软件测试之道>第2章微软的软件测试工程师,微软采取了一种独特的不同于业界其他公司的软件测试方法.公司的测试工程师的数目比开发工程师多.而且我们对所有的测试工程师都强调其软件工程技术能力.本节为大家介绍测试架构师. AD: WOT2014:用户标签系统与用户数据化运营培训专场 2.6 测试职种的发展道路 有些公司认为测试是低级工作,开发职位才是一个测试工程师将来可能发展的方向.但在微软,测试职位和开发职位是平等的,并且具有同样多的职业发展机会. 2.6.1测试架构师 微软于1999年设立

重读《从菜鸟到测试架构师》-- 职业生涯的考虑

都说万事开头难,小艾作为菜鸟测试工程师加入到测试项目团队,努力学习着关于测试入门的知识.有了基本的知识及对测试的领域有了一定的认识之后,小艾开始思考自己的职业生涯应该有什么样的前景?测试工程师是一个专注程度很高的技术背景职位,但小艾并不清楚自己未来无论是在技术还是管理上有哪些可以选择的发展方向,更别说如何选择方向了. 于是,热心的导师再次登场,为小艾深入剖析技术与管理道路的发展路线. 测试工程师的技术发展路线 在职业发展起步期,测试工程师可以先把自己定位为某种专门测试的专家,如功能测试专家.系统

测试架构师修炼之道: 1 软件测试工程师的职业规划

测试架构师修炼之道: 1 软件测试工程师的职业规划 2016-08-11 1 软件测试的职业发展方向 1.1 管理 表1 管理级别区分 管理级别 职位 工作年限 属下 测试对象 职责 初级软件测试管理者 测试组长 两年 2~5 一般负责产品的一个或多个特性. 1.   测试计划的制订和执行2. 负责产品重点.难点的测试3. 负责带新员工 中级软件测试管理者 测试经理. 测试代表.测试主管 4年左右 10~20 产品 1.   最重要的工作还是运作测试项目,制订并执行测试计划,测试结束后还需要对产

测试架构师修炼之道:4 如何才能制定好测试策略

测试架构师修炼之道:4 如何才能制定好测试策略 2016-08-18 目录 1 理解测试策略  1.1 什么是测试策略?  1.2 测试策略等于测试方针?  1.3 测试策略等于测试计划?  1.4 测试策略等于测试方案?2 四步测试策略制定法  2.1 明确“产品质量目标”  2.2 进行“风险分析”  2.3 适配“产品研发流程”  2.4 进行“测试分层”  2.5 “四步测试策略制定法”中的测试技术3 产品质量评估模型  3.1 优秀的产品质量评估模型的特征  3.2 软件产品质量评估模

老李分享:测试架构师

老李分享:测试架构师 测试架构师是对测试过程的各个领域都具备一定专业技能的人员,主要任务是把测试开发的需求转化为可以实现的抽象设计和具体设计,并完成相应的设计文档.同时,测试架构师还需要把业务化的需求转化为技术化的功能性需求及非功能性需求.测试架构师需要参与测试开发各个阶段,也作为审核人员对设计和测试开发计划进行审查.测试架构师的技能特点是,具有更高视角,对测试技术的发展方向能够有全局的把握,对测试技术和业务也有深刻的认识.

测试架构师修炼之道:2 软件测试架构师应该做和不该做的事情

测试架构师修炼之道:2 软件测试架构师应该做和不该做的事情 2016-08-12 测试架构师应该考虑以下问题: 测试的目标是什么? 测试的范围是什么? 测试的深度和广度是什么? 测试的重点和难点是什么? 如何安排测试? 如何评估测试结果? 目录 1 测试架构师在需求分析中  1.1 理解产品的商业目标  1.2 梳理用户的使用场景  1.3.输出产品总体测试策略2 测试架构师在测试分析和设计中  2.1 制定阶段测试策略  2.2 落实测试设计策略,保证测试设计的质量3 测试架构师在测试执行中 

测试架构师修炼之道:3软件测试架构师的知识能力模型(一)

测试架构师修炼之道:3软件测试架构师的知识能力模型(一) 2016-08-15 测试架构师从事的并不是一项纯测试技术的工作,而是一门需要结合产品.沟通协调.书面表达等综合性的艺术,如图1所示. 图1 软件测试架构师需具备的能力 从测试技术来说,软件测试架构师需具备的测试技术能力: 软件产品质量模型 测试类型 测试方法 探索式测试 自动化测试 目录 1 软件产品质量六属性  1.1 功能性  1.2 可靠性  1.3 可移植性2 测试类型3 测试方法  3.1 产品测试车轮图  3.2 功能测试方

测试架构师修炼之道:5 测试策略实战攻略

测试架构师修炼之道:5 测试策略实战攻略 2016-09-06 目录 1 开始2 初次使用“四步测试策略制定法”  2.1 产品质量等级  2.2 确定项目中各个特性的质量等级  2.3 对项目整体进行风险分析  2.4 确定测试策略的结构  2.5 初步确定测试分层  2.6 回顾3 制定总体测试策略  3.1 分解产品质量目标    1. 根据质量等级来分解产品的质量目标    2. 为每个测试分层确定测试目标  3.2 使用老功能分析法来对特性进行分类  3.3 基于质量和风险来确定测试深

测试专家讲述通往测试架构师之路

随着对测试这个职业的了解越来越深,对微软测试技术的掌握越来越多,慢慢地,人就开始对那些测试“大牛”在做什么感兴趣了.他们就是那些在公司内部挂着“测试架构师”头衔的一小撮人. AD: WOT2014:用户标签系统与用户数据化运营培训专场 在公司呆了有几个年头了.在测试技术方面的技能长进了不少,又能享受写代码的乐趣,同事们经常交流对软件测试技术的见解,也在项目中实现一些创新的测试技术和基于自己的想法设计好的测试框架,每天过的很开心.随着对测试这个职业的了解越来越深,对微软测试技术的掌握越来越多,慢慢