原文链接:http://techblog.tilllate.com/2008/06/01/unit-testing-makes-coding-more-fun/
Unit testing makes coding more fun
单元测试使编程更有趣
“unit testing is a test that validates that individual units of source code are working properly”, that’s what Wikipedia says about unit testing. That’s general knowledge.
“单元测试是对源代码每一个程序单元进行的测试,它检查程序模块是否正确地实现了规定的功能。”,这是维基百科(http://en.wikipedia.org/wiki/Unit_testing)上对单元测试的定义。大家也都普通这样认为的。
But what motivates me even more than the increased software quality is that it saves me development time. This sounds odd as you might believe that TDD means writing more code.
但对我而言,更刺激的是它不仅仅对提高代码质量有好处,而是节省了我的开发时间。如果你认为单元测试只是意味着编写更多的代码的话,那这样说也许会令你感到奇怪。
Here’s a real-life example:
下面是一个真实的例子:
For our internal invoicing system I had the task of changing the way we generate invoice numbers. Instead of a global number range each tilllate Ltd. subsidiary should receive it’s own distinct number range. And all invoices must have subsequent numbers to be compliant with the legal regulations. Invoices are being generated by about 100 staffs via a web front end. So I wrote the classes InvoiceNumber and InvoiceNumberFactory.
一次我担任了修改公司内部使用的发票系统生成发票号码方法的任务。老的方法使用统一的数字,而新的方法要求每个子公司都有自己不同的发票号码范围。所有的发票号码都必须是连续的数字并且符合有效性规则。发票是由大概100个左右的员工通过web前端生成的。因此我写了InvoiceNumber和InvoiceNumberFactory两个类。
Testing it manually: Boring!
手工测试?太无聊!
Now, how do I test them? Without a unit test framework I would have had to test it via the web based front end:
现在怎么去测试它们呢?如果没有一个单元测试框架我就只好通过web用手工来测试了:
Create a test customer (= fill out a form with about 30 fields, click save, wait)
创建一个测试帐号(= 填写大概30个字段的表单,然后按保存,等待…)
Create a new order (= fill out two forms with each 10 fields, click save, wait)
生成了新的订单 (= 填写两个表单,每个表章大概10个字段,然后按保存,等待…)
Create an invoice (= another form)
生成发票 (= 又是另一个表单)
Check if the generated invoice number is correct
检查生成的发票号码是否正确
If not, delete all created db entries and start over again
如果不正确,删除数据库中所有的相应记录接着再从头开始…
My code would not have worked immediately. I would have had to go through the procedure above over and over again. Each iteration was 120 seconds of clicking and waiting. YAWN.
我的程序不会一次就通过。这样我将不得不一次又一次的重复上面的操作。每次操作都大约需要120秒的时间来按确定然后等待。想想看这有多乏味!
Speeding it up by automating the test
使用自动测试来加速测试过程
By using unit tests I was able to avoid this manual labor: I set up my test environment (1 - 3) programatically in my setUp method. I cleaned up everything (step 5) in the tearDown method of my test. To run the test I just called it via the shell:
通过单元测试的方法使我避免了这样的手工劳动:在setUp方法中我用程序自动生成了测试环境(第1-3步),在tearDown方法中清除了所有的数据(第5步)。这样只需要在shell中调用如下的命令就可以进行测试:
pluto unit # php -f test_InvoiceNumber.php TestInvoiceNumber
OK
Test cases run: 1/1, Passes: 20, Failures: 0, Exceptions: 0
The whole set up, testing and tear down process was done programmatically. Time elapsed: 0.54 seconds.
整个设置,测试和结束过程全部使用程序自动完成。共耗时0.54秒。
Thats 240 times faster than the manual testing via the web front end.*
这比用web浏览器手工测试快了240倍!
And definitely much more fun!
而且肯定有趣得多!
*sure, writing the test is not free. But in the bottom line I believe it save me time.
注:当然编写测试代码也需要时间。但至少它节省了我的时间。
相关推荐
他山之石:多国织牢网络安全网.pdf
石油化工行业专题报告:他山之石:日本“氢能社会”的构建.rar
他山之石:国外新能源车的发展历程及现状.pdf
银行行业专题报告:他山之石:金融混业实现的环境、模式及经验借鉴.pdf
银行行业专题报告:他山之石:金融混业实现的环境、模式及经验借鉴(2021)(49页).pdf
地产杂谈系列之二十三:他山之石:楼市危机下日本房企破局之道(2021)(12页).pdf
电子行业深度报告:他山之石系列:韩国电子产业发展启示录(2021) 本报告对韩国电子产业发展的经验进行了深入分析,旨在为中国电子行业的发展提供借鉴。报告通过对韩国电子产业崛起的经验教训,提出了中国电子行业...
【宏观专题报告】德国利率市场化进程的启示 德国利率市场化是一个值得深入研究的议题,尤其对中国等正在进行利率市场化改革的国家具有重要的借鉴意义。本文将分析德国利率市场化的历史背景、实施过程以及取得的经验...
【碳排放交易市场】 碳排放交易市场是全球应对气候变化的重要政策工具,旨在通过市场机制推动节能减排。市场分为两类:一是基于配额总量的碳排放权交易市场,政府分配一定数量的碳排放权,企业必须在限额内进行排放...
- 2014年后,互联网+的浪潮推动了行业高速发展,互联网医美平台如新氧、更美等成为产业链关键节点。 - 民营医美机构在中国占据主导地位,超过90%的市场份额,但行业集中度低,仍有巨大的整合空间。 - 2018年中国...
电子行业深度报告:他山之石系列:韩国电子产业发展启示录.pdf
他山之石系列:美国白电市场专题报告:以美国为镜,知行业兴替.rar
20210728-银河证券-电子行业他山之石系列:韩国电子产业发展启示录.pdf
根据提供的文件内容,以下是关于日本“氢能社会”构建的专题报告的知识点: 1. 全球氢工业市场概述 全球氢工业市场规模持续增长,表现出明显的区域性分布。2017年全球氢工业市场规模达到了2514.93亿美元,年度同比...
装配式建筑是一种现代化的建筑方式,它通过预制构件在工厂生产,然后运输到施工现场进行组装,大大提高了建筑效率,降低了环境污染。德国作为全球工业化强国,在装配式建筑领域有着深厚的积累和技术优势,其发展历程...
20210528-华西证券-银行行业专题报告:他山之石之财富管理业务,广阔空间,大有所为.pdf
食品饮料行业深度研究报告:他山之石~养乐多,一个小红瓶,走遍全天下-华创证券-20190716.pdf
20210718-广发证券-机械设备行业“他山之石”系列之三:顺应大势,精进自身,Fanuc的崛起之道.pdf
20210408-海通证券-海外流媒体行业巨头启示录:他山之石,可以攻玉,基于Netflix、HBO、Disney巨头的复盘研究.pdf
20210623-东吴证券-环保工程及服务行业碳中和系列报告(十):鉴他山之石,全国碳市场展望及减碳成本测算.pdf