碎碎念——让人头疼的单元测试

做单元测试的过程,我们兴奋过,低落过,冷静过,改革过,现在良性发展中,刚开始做的时候很兴奋,一天只知道写啊写啊,到头来写了很多单元测试用例,但到现在扔掉的也很多。

  当然原因也很多,主要还是测试目的的不明确,测试范围的不明确,测试标准不明确,对模块本向在产品中为何存在,为什么是这样存在没有弄清楚,走了很多湾路。

  当然接到一个模块的测试任务时,应该与开发人员,系统测试人员和产品人员,了觖这个模块为什么存在,有什么功能,在产品中是怎么样的一个位置和作用。

  要多读开发的代码,测试用例写完后,一定要调试一次测试案例,跟到开发的代码里面去,一行一行的看状态是不是正确,一般都会发现很多bug的。

  测试一个模块不光要看是否正确实现了想要的功能,还要看开发这样写是不是合理,有没有改进的地方,并提出改进方案,开心的就是我们周围的一群同事常常在测试一个模块的时候就会写一封改进方案的邮件发给开发人员,并抄送给相关上级,在算法的简单,性能的提高,成本的减少都引到了很好的作用。这也是人们的开发人员很尊重我们测试人员提出的任务意见的原因,原因他们知道这个模块还有一个测试人员和他们自己一样对这个模块里的每一行代码都很熟悉。

  测试的标准很难,怎么样才算这个模块测试好了,因为上级不用看你写的测试用例,他只要数据,但是给什么他才有说服力,我们在案例数,bug数等很多数据里选了代码覆盖率做为标准,虽然这个数据也不能充分说明测试的完整性,但相对来说还是比较有信服性。

  测试用例在后期维护的时候,我们就头疼过,而且是很头疼,模块内部实现变了,接口变了,在产品里的位置变了,数据结构变了,我们的用例就天天跟着开发也在变。目前没有特别好的办法,只能看具体问题具体处理,在写用例的时候还是有一点点技巧的。

  可恨的setup和teardown,之前对它的理解就是测试前的事情和测试后做的事情,所以不太注意这个地方,就引起测试用例一个一个运行是正常的,一批一批运行就失败了;一个人写的案例运行是正常的,两个写的案例在一起运行就失败了。一失败就是几百个,要找出是那个用例引起的测试环境的破坏,很痛苦。真的很痛苦!!!“吃掉自己的狗食”这句话用到这里绝对合适,不要仅把自己的setup做好,自己的teardown比setup更重要。

  测试用例常失败的几个原因:

  1、行为敏感性 如果系统的行为发生变化,如需求变了,这时测试就会失败。

  2、接口敏感性

  3、数据敏感性测试

  4、上下文敏感。

  突然想写,写的比较乱多见凉。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-07-31 17:09:17

碎碎念——让人头疼的单元测试的相关文章

我的碎碎念:Docker入门指南

本文讲的是我的碎碎念:Docker入门指南,[编者的话]之前曾经翻译过很多Docker入门介绍的文章,之所以再翻译这篇,是因为Anders的角度很独特,思路也很调理.你也可以看下作者的演讲稿<Docker, DevOps的未来>.本文介绍了Docker的一些基本概念.诱人的特性.Docker的工作原理.日常管理基本操作,以及一些Docker的问题的解决方案. 什么是Docker,你应该知道些什么? 相比很多人的解释,我相信说Docker是一个轻量级的虚拟机更容易理解.另外一种解释是:Docke

碎碎念“经营客户关系”

以下是前一段我在微信公众号"betacafe"上关于电商的一些碎碎念,基本上都是围绕着一个话题:经营客户关系. - - - 一.通普路上的服装店们 "杭州贝塔"在通普路开了四年,这里有城西花鸟市场和城西最大的超市(联华超市),人流量很好,小区的房租现在已经卖到了三万多,简单的两居室也要租到一个月三四千.附近社区里的居民也都算是消费能力很不错的,按照传统商业逻辑来说算是一个不错的地带. 但我们却一直看着这条街上的店铺来来往往换了四年,割韭菜一样一茬接着一茬.尤其是各种

php中让人头疼的浮点数运算分析_php技巧

本文实例分析了php中让人头疼的浮点数运算.分享给大家供大家参考,具体如下: 在做电商的时候,计算价格是免不了的,然后发现了php的一个坑,口算应该正确的值,php运算出来会跟你不一样 请看下面的代码: $price=69.1; $count=100; $total=$price*$count-6910; echo $total; 你猜一下变量$total的值是多少,运行一下这个代码输出:-9.09494701773E-13 怎么解决这个问题呢? 使用round函数 代码修改成: $price=

视觉隐喻碎碎念

什么概念? 在我们做界面设计时,如果使用用户熟悉的来自真实世界的物体的图案来作为界面元素,用户会比较容易地学会产品的使用,这种手法就是视觉隐喻(metaphoric).隐喻范围可以从整个界面到工具栏上的一颗小按钮.几种类型? 1 整体隐喻整个界面都用隐喻的http://www.aliyun.com/zixun/aggregation/11448.html">设计方法,最典型的例子就是游戏,整个现实的场景搬到游戏 里面,用户一看就知道,自己是在街上还是海上,房子是可以进去的,路人是可以问话的

不定期更新的碎碎念

╮(╯_╰)╭感觉自己真是要懒得无可救药了 真是日了狗了,下班的路上在超市买了箱牛奶,迷迷糊糊走回家,发现牛奶没了!牛奶没了!牛奶没了!Σ( ° △ °|||)︴我的心好痛...._(:з」∠)_ 买电饭煲了!买蒸锅了!我要自己做饭,蒸菜,下饺子,下面条....etc....我要学会做饭菜了! 大雾(*/ω\*) 燃气灶还没修好,蒸锅已经闲置了快两周了,粉蒸肉!---2015-06-30 _(:з」∠)_门禁卡又弄丢了,50块钱,我的一包皇上皇腊肠没有了.......---2015-06-30

好多干货:Mars碎碎念

最近常常给人泼冷水. 最容易被泼冷水的是这句话: 电子商务发展快,有潜力,有机会,所以我们要-- "电子商务发展快,有潜力,有机会"?我假设这个结论是对的. 可问题是,这句话在电视.杂志和网络上出现次数实在太多了. 就算它是对的,这也不是个秘密. 不是个秘密,就意味着你想到的别人也想到了. 你这样推理,别人也这样推理. 你想做,别人也想做. 蛋糕虽然预计每年会变大,抢蛋糕的人每年也会变多,对于每个竞争者来说分到他手上的蛋糕其实是不变的--甚至是变小的. 在四五年前大家都在唱衰B2C的时

[MySQL 源码] 关于bug#65389的碎碎念

[MySQL Bug] bug#65389  MVCC IS BROKEN WITH IMPLICIT LOCK 该bug在5.5.26中被修复,changelog的描述如下: If a row was deleted from an InnoDB table, then another row was re-inserted with the same primary key value, an attempt by a concurrent transaction to lock the r

Android编译过程中的碎碎念

刷机不是用rom包吗?怎么可以使用fastboot flashall -w将*.img文件刷入呢? 在Mac上面可以参考这篇文章进行刷机.概括来说解释从官方下载rom包,解压后运行./flash-all.sh脚本.在这里我下载了Nexus 6p的官方的rom包,我们看看这个文件中的内容是什么? 下面就是脚本文件的内容 fastboot flash bootloader bootloader-angler-angler-02.45.img fastboot reboot-bootloader sl

[MySQL Bug] bug#65111碎碎念

changelog里的描述: InnoDB: In a transaction using the REPEATABLE READ isolation level, an UPDATE or DELETE statement for anInnoDB table could sometimes overlook rows recently committed by other transactions. As explained inSection 14.3.9.2, "Consistent N