克服“测试怠惰”的习惯

  无论在哪个时代, 品质是最基本最不可妥协的原则。

你是不是编写了很多代码, 却对所编写的代码缺乏足够信心? 如果代码经过了严格的测试, 那么, 你更可能会自信满满地说:“No Problem”, 尽管并不完美。

我也有“测试怠惰”的习惯。 归结起来, 主要有三个原因:

(1)  缺乏清晰强烈的品质意识。 能跑通不就是最好的见证么? 不就足够了么?

(2)  没有写测试的习惯。写测试多没劲多耗时间? 还是做开发完成功能更有意思。

(3)  不知道如何写测试。 大抵是知道写点什么, 但无法构建比较完整专业的测试集; 此外, GUI 测试被认为是枯燥乏味的无技术含量的, 不容易被认可。但还是要做, —— 要完成一件卓越的产品, 没有技术或非技术的差别, 只有用心与不用心的差别。

第一个问题的解决, 是在心态里建立“品质意识”, 在时间上增加“测试时间”, 至少在内心里要给“测试”留下一席之地。第二个问题的解决, 是在项目开始时就构建好测试的目录结构和框架。要是连测试目录都没有, 还能指望自己写测试啊? 马云说, 连电脑都不买好一点的企业, 你能指望他们做成什么事么? 因此, 赶紧把项目里的测试目录补上吧。第三个问题的解决, 就是要多多阅读测试方面的书籍, 多多练习了。《xUnit单元测试之道》, 《软件测试实践》, 《软件测试的艺术》, 《测试之美》等。

写不写测试, 实际上涉及一个大局观:  你是希望做出最终能让客户爱用受欢迎的好产品, 还是只为了完成自己的那一小块功能?  这是成就领导的关键气度: 能做别人所不愿做之事, 能承别人所不能承之事。 大凡能够使人得到提升的, 常常是那些自己不太愿意做的事情。 这点在我身上已经应证了两次。

万事开头难。 没有运动习惯的人,    要他立即去跑步去健身, 很困难, 不过也可以从一点一滴慢慢做起, 比如说在室内做做简易的体操, 骑骑自行车等。

从简单容易的做起

工具库函数通常是独立的, 无任何依赖, 遵循“输入/输出模型”, 并且很容易自动化, 只要设计出良好的测试输入集合和期望输出值集, 就能完成很好的测试。不妨从这个地方入手。 相关测试概念: 等价类划分, 典型值, 边界值,空值 。在这个层次上, 可以学习和获得测试的很多基础技能。

在“攻防战”中提升

有时测试确实是很乏味的。 输入一个值, 判断输出值是否合乎期望, 很容易失去新鲜感, 尤其是 GUI 程序测试,手工测试真是既无趣又耗费时间, 可还是要做。如果仅仅是为了完成测试的任务, 很难达到测试的真正效果。 要真正建立“测试”的心态, 不妨将自己想象成一位极具攻击力的杀手, 一位黑客, 想方设法去破坏程序的正常执行, 施加过量的压力, 输入非法值, 恶意值,  观察程序的反应, 然后完善程序, 让程序在“攻防战”中不断强大, 建立有效的工事。 也许在这个过程中, 你会喜欢上一件事, 人的意识是一种很奇妙的动物。

开发与测试的时间比例

测试的工作常常是繁重的。如果完全投入进去, 也许会延缓开发进度, 扰乱程序的主进程开发。 最好的办法是制订时间比例, 比如 8:2, 八成时间用于开发, 二成时间用于测试。 这样开发测试两不误。 开发一段时间后转向测试, 测试一段时间后转向开发, 交替进行, 在开发与测试思维之间进行切换, 也可以保持思维的活跃度。开发、测试、产品三种思维, 以技术为基础, 但是各有侧重。 如果同时兼具两种或三种思维, 会比单纯拥有开发思维的同学更有优势。

在项目初始时一定搭好测试框架

一定要在项目初始时搭好测试环境和测试框架。 如果最开始不去编写测试, 越到后面就越不愿意去补测试。测试越少, 软件产品欠下的债就越多, 迟早有一天, 从软件获得的收益将少于因测试不足导致的成本, 最终导致软件产品失败。 相反, 如果一直有良好的测试保驾护航, 就更有底气做大胆的改进, 超越竞争对手。 开发与测试必须齐头并进, 共同创造辉煌。

集中强化训练

如果平时真是没习惯没时间, 不妨抽出一个固定的时间段专门来练习测试技能, 培养测试习惯。 持之以恒是一件很难做到的事情, 尤其是初期习惯尚未形成时, 这时采用集中强化训练的方法可能更有效果。一件事要做到一定程度, 才会感受到乐趣; 一件事要做到很娴熟, 才会进入创造的境界。

认可测试的价值

在心里要认可测试的价值, 才会做的更好。 不仅要自己认可, 还要设法让同事认可, 领导认可, 当你致力于添加完善的测试、改进产品品质时, 领导能够理解你这样做的价值, 给予支持, 是最好的双赢。通常, 有一定技术背景的领导会更倾向于认可测试的价值, 甚至严格要求做好单元测试, 鼓励做好单元测试。

未完待续。

时间: 2024-10-06 22:05:38

克服“测试怠惰”的习惯的相关文章

性能测试类,让你写法代码养成经常测试的好习惯 -ASP.NET C#

介绍: 可以很方便的在代码里循环执行 需要测试的函数  自动统计出执行时间,支持多线程. 使用方法: PerformanceTest p = new PerformanceTest(); p.SetCount(10);//循环次数(默认:1) p.SetIsMultithread(true);//是否启动多线程测试 (默认:false) p.Execute( i => { //需要测试的代码 Response.Write(i+"<br>"); System.Threa

如何构建高质量高可用的软件

概述 这篇文章主要做一个关于"代码.系统.工程"质量的系列文章的索引. 要构建高质量高可用软件,个人觉得,可以分四层来进行: 代码质量: 高质量软件的基石. 任何设计.测试和工程方法都无法挽救烂代码写出来的系统. 设计质量: 高可用软件的指引. 高质量软件需要设计质量的指引,合理地划分模块和组合: 高可用软件更需要仔细的设计和权衡. 测试质量: 通过良好设计和实现的系统,需要测试质量来把关,保证代码没有重要BUG和变更不影响原有系统. 工程质量: 在代码.设计.测试质量的保证下,还需要

测试团队成功适应敏捷的障碍

测试团队在从传统开发模式向敏捷模式转变的过程中存在各种障碍,敏捷测试专家Lisa和Janet从自身经验出发探讨了其中的原因和解决方法. 任何变化都面临成功路上的障碍.组织文化可能是要克服的最大障碍.组织文化一旦建立就很难改变.组织文化的形成需要时间,一旦就绪,员工会忠于该文化,这使得对改变相当的抵制. 丧失身份 由于很多原因,测试人员坚持独立的质量保证团队,但是主要原因是害怕,特别是: 害怕丧失质量保证人员的身份    害怕如果向开发经理汇报,会丧失支持,程序员会获得优先权    害怕缺乏在敏捷

养成“凡事预则立”的习惯

制订计划,写成清单 相信笔记,不相信记忆.养成"凡事预则立"的习惯.马丽凯说:"每晚写下次日必须办理的六件要务.挑出了当务之急,便能照表行事,不至于浪费时间在无谓的事情上."不要订"进度表",要列"工作表":事务要明确具体,比较大或长期的工作要拆散开来,分成几个小事项. 四.遇事马上做,现在就做这是在克服拖延的心态.因为,是拖延为"有空再做.明天做.以后做","拖","等&qu

测试驱动开发TDD(一)TDD的好处及介绍

背景 一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦.国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从.最近兴起的一些软件开发过程相关的技术,提供一些比较高效.实用的软件过程开发方法.其中比较基础.关键的一个技术就是测试驱动开发(Test-Driven Development).虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用.下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解.掌握.应用这种

克服拖延——7个技巧让你坚持前进

1.应付你的压力. 很多人发现有压力的生活是让他们养成拖延习惯的主要原因.你可以通过健康的方式减压从而解决这些问题.比如保持充足的睡眠,有足够的时间来放松,当你需要时可以寻求别人帮助,这些都可以减轻你的压力.你还可以发现更多对你有效的方法. 2.做一个日程安排表. 它可以帮助你有效地规划每一天的生活.没有一个很好的计划表也是人们拖延的主要原因.因为你很容易就忘记你要干什么,并且计划表可以让你对自己的行为负责,不会迷失目标方向.看看一整天的计划表可以让你立即行动完成任务,拒绝拖延. 另一个技巧就是

JS 的5个不良编码习惯,现在就改掉吧 &#225452;

原文: http://blog.gqylpy.com/gqy/422 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

JS 的5个不良编码习惯

1.不要使用隐式类型转换 JavaScript是一种松散类型的语言.如果使用得当,这是一个好处,因为它给你带来了灵活性. 大多数运算符 +-*/==(不包括 ===)在处理不同类型的操作数时会进行隐式转换. 语句 if(condition){...}, while(condition){...}隐式地将条件转换为布尔值. 下面的示例依赖于类型的隐式转换,这种有时候会让人感到很困惑: console.log("2" + "1"); // => "21&

php学习过程

作者:沈杰链接:https://www.zhihu.com/question/27170424/answer/82034587来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 因为这是面试中会问到的一个问题,虽然它看起来很简单. 回答做网站的,也就是个简单建站的水平. 回答做网站后端开发的,对PHP有了一定的认识. 回答做后端处理的,有了更深层次的认识. 学习一样技能,你得先清楚这项技能是到底做什么的,说到这里,我想大家都会简单的说是做网站的,因为PHP在WEB领域