TDD和伪代码编程那个更好些?
最近一直在使用TDD方式开发,回头看看自己的编程速度下降了不少,仔细想了想原因,可能是一下几个方面引起的: 1、TDD感觉上是为填充通过测试而些代码,缺少了以前伪代码方式的连贯性,写代码都是些片段,比较难像以前的一气呵成。 2、对需求的了解方式是否不同?以前的写法是以功能为出发点,感觉更自然些,而TDD是以结果为导向,测试案例写法的基本思路:输入->执行->结果预期 3、【输入】简单的两个字,在写的过程中是最为复杂的地方,常常要准备大量的数据,而且会把测试案例搞的可读性下降, 4、【结果预期】通常比较简单,但其实是最为关键的部分,也是它导致了【输入】的复杂性,其实有时想知道验证的是啥,也是比较困难的。 TDD的好处也一大堆,就不说了,只是过程还是感到有些不能得心应手的地方。 分析上面的一些原因,给自己制定一些改进尝试的方式: 1、连贯性的思维转移 -> 测试案例的连贯性,将写伪代码方式的连贯引入到测试案例的编写中(指的是功能描述的,指下面的第2点)。 2、需求中功能的切分方式,明确-该功能完成后-可得到的结果(可验证的),第一个案例先写正常流程的,后面跟边界条件、结果 例如在自己的notetip中这样写需求:
后面将这些功能对应到测试代码中(javascript语言) this.testClickStrengthenBtn_NoEnoughItem = function() { this.setPreCondition({itemnum:0,money:1000000,level:0}); this.items.strenbtn.click(); assert(gamesys.getPopSysMsg() == g_strs.hero.errtip.noenoughitem); } this.testClickStrengthenBtn_NoEnoughMoney = function() { this.setPreCondition({itemnum:1000000,money:0,level:0}); this.items.strenbtn.click(); assert(gamesys.getPopSysMsg() == g_strs.hero.errtip.noenoughmoney); } 3、编写一些自己的测试语句,包括初始条件的等,第2点中this.setPreCondition这个就是最近使用,效果比较好,由于javascript中不支持关键字参数(python支持),可以使用字典参数,达到同样强的参数可读性。后续多完善一些固定设施的工具函数,减少输入的壁垒。 写到这里,感觉自己的思维有些清晰了,关键是第2点重点尝试下,看有否改善。 继续写代码去了。。。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |