参加段念敏捷测试培训后小结

前两天参加了段念所讲有关敏捷测试方面的培训,一部份的内容可以在这里找到,不过培训还是有些其他收益:

测试概念方面:

1、在敏捷测试中,测试人员同样需要编码能力,与开发人员不同在于,开发人员需要较强设计能力,而测试人员需要更强的分析能力(包括发散思维和更广的知识)

2、开发人员是自己要做单元测试的,类似接口测试和UI测试,其实开发人员也可参与进来,此时的测试人员要负责自动化测试框架及环境的搭建,让开发人员减少开发环境与测试环境的切换,开发人员不需要太多精力就可写好测试代码,又能立即见到自己的工作结果的反馈,是利于推动他们参与进来的

3、探索性测试是软件检查的一道额外保障,发现的缺陷归纳(成因分析)、演绎(发现类似缺陷),并避免类似的再次出现

4、敏捷测试的象限

agile testing quadrants

5、Diff关注的是变化,而非缺陷和验证,通过Diff技术缩小测试范围

 

单元测试及可测性方面:

1、单元测试需要验证的两个方面:状态,行为。当测试一个对象的方法时,需要验证方法的执行是否影响自己的状态,是否会调用依赖对象的行为

2、单元测试的控制点与检查点,控制点包括直接输入(参数),间接输入(控制被调用函数的返回值);检查点包括直接输出(返回值,状态),间接输出(行为)

3、单元测试并不是指白盒测试,单元测试同样用到黑盒中的等价划分,边界值等技术,也用到白盒中技术提高代码覆盖率。所以白盒称之为结构测试更合理,而黑盒称之为行为测试更合理

4、测试替身:Dummy Object:主要用于类的构造或方法的调用需要一个符合类型的对象,但对该对象的状态或行为并不关心时;Test Stub:测试对象利用它返回值,让测试对象期望的行为发生;Test Spies:接收测试对象方法的调用,用于行为检查;Mock Objects:即可充当stub,也可充当spy;Fake Objects:生成一个专用的测试类,应用于测试对象依赖类还未实现或过于复杂时

5、在TDD中有一个FIRST原则(同样适用于单元测试的编写)

TDD 为什么要求测试运行时间少于1秒?主要为了使对象尽可能的无依赖。不过段念的团队也没实行TDD,而是先编码再单元测试,不过在编码时就考虑到可测性

6、通过重构的技术来提高可测性,如接口提取,依赖注入

7、提高可测性:感知:感知某种方法调用产生的效果或影响(采用mock);分离:与应用的其他部份分离开来单独运行(解耦)

8、推荐两本书:《修改代码的艺术》、《xunit测试模式-测试码重构》

posted @ 2011-01-10 10:46  他山之石_  阅读(3828)  评论(1编辑  收藏  举报