1、前言web
2、咱们为何测试?算法
3、也许未必编程
让咱们建立一个控制台应用程序来计算最大公约数(GCD)的两个整数。有不少方法能够解决这个问题,但为简单起见,咱们将函数
1.输入两个整数2.无论其算法怎么样,计算一下 GCD单元测试
3.显示输出让咱们浏览一下正常的开发周期。学习
咱们一般写一个 main() 函数,获得了两个整数,以及调用一个函数来计算一下 GCD,而后显示结果。测试。在你的控制台中输入 2 个整数会花一些时间,这将变得至关无聊,若是你须要屡次重复你的代码。这也很容易在控制台应用程序中输入出错,致使程序崩溃。这意味着你必须从新启动程序,输入两位数,而后再次验证结果。请你要记住,咱们讨论的是一个控制台应用程序,只须要两个输入值,不须要点击(在 web 应用程序中),咱们已经看到,这将须要花费一些时间。测试
而后,咱们极可能会想要测试一些更多意味着重启程序的值,进入两位数(正确地),而后测试。。。因此咱们即便看到也不会当即这样作,由于它要花费太多的时间。Edge 案例将会被遗忘,错误只会在生产中被发现!此外,当咱们改变一些咱们须要再次运行全部的测试(手动),使用一个被遗忘的,或者使用快捷键的高风险的测试。在那儿,不会有跟踪咱们的测试工做。不写入日志文件,在整个测试期间,除非你增长这个你作的事情列表工做(手动)。编码
4、消极反馈循环spa
一般,当项目(由于某种缘由)延期了,则容易陷入一种消极反馈循环。有时咱们会先决定跳过编写测试代码,而这则会形成状况以下图所示:日志
项目延期,形成咱们不得不去编写更多的代码。因此与其“浪费时间”去不停地测试代码,不如不停地去开发项目。而这样作的结果就是代码质量进一步降低,并最终(或早或晚)致使返工。返工又一般会在最有限的时间里变得十分紧急(有些人叫这种现象为“墨菲是个乐天派!”)。其实返工什么也改变不了,项目如今只会进一步被延迟。很奇怪吧,咱们编写越多的代码,咱们的项目完工越晚。一种经常使用应对措施是让更多的开发人员被参与到项目的研发中,然而这样的做用也只是加重消极反馈循环而已。
若项目缺少测试,在验收和生产环境时,一般用户则会发现许多 bug,这将会快速地下降用户对项目的信任度,从而产生消极反馈。这种反馈传递给(工做过分的)开发人员,就形成开发人员“疲劳”现象。后果就是开发人员工做积极性降低,开发人员离职,……,项目又进一步延迟了。
5、打破消极循环
我想你已经想到有一个办法能够解决这种现象。让咱们来绘制一幅不一样的场景:咱们能够从一个理想计划“项目按时完工”开始。咱们开发代码,而后当即测试它。测试最好是自动化(编码实现)的,这样咱们能够轻松有效的去执行它们。咱们把开发和测试紧密的结合在一块儿,每一个开发测试循环能够很快速的执行。当一个开发测试循环结束时咱们有信心保证代码质量是很高的,由于它已经经过了测试。并且用户由于发现缺陷(bug)的数目变少而对咱们继续高度信任。即便他们发现了一个缺陷(这依然是有可能的),咱们也能够扩充咱们的测试集合,去避免相关缺陷的重现。如此下去,返工将再也不是必须的,项目得有继续。若是咱们的项目已经延期了,就须要咱们花些时间来采用这种方法论。对新功能的冻结也许是必须的。中止开发新的代码,取而代之去为最严重的(恼人的-清晰的-高代价的)缺陷编写测试。
项目延期的状况下再去为你完整的代码库编写测试是不可行的,只针对其中的一些部分就能够,不要去浪费你的时间。可是要记住其它部分也仍是须要编写测试的。我在这种状况下会去找出最严重的问题(划分优先级),而后为它们编写测试。以后“快速”修改代码就会变的更容易,而且能够保证在修改其余部分是它不会出错。自动化测试能够很频繁的执行,从而下降了缺陷(bug)重现的风险。大讲台,最实用的 IT 职业在线学习平台。好了,如今能够开始去有效的强健咱们项目了
上面这些一般会要求进行代码重构,从而使它可测试化。
6、总结
大部分的项目中,会考虑测试和编码之间的平衡。不过我但愿你们都能清楚,测试实际上是项目的加速器,而不是在浪费时间。我这里也有不少软件测试方面的学习资料提供,须要的话能够加我QQ:1363134450(记得备注噢!)