数据组合覆盖测试技术
1,分析被测对象,识别测试输入及可能取值
2,使用数据组合覆盖技术识别测试条件
 EC单一选择组合每一个测试输入的每一个取值在所有组合中至少出现一次
 BC基本选择组合以基本组合为基础,通过更改一个输入的取值创建新的组合
 AC全组合每个测试输入的每个取值的所有可能组合
 OA正交数组基于正交数组的组合方式
 N:Wise覆盖任意N个输入的全组合的组合方式覆盖任意N个输入的全组合的组合方式
3,创建测试用例     
           
分类树测试设计技术
1,分析被测对象,识别影响系统功能的因素,并对这些因素进行分类(CTE XL)
2,使用数据组合覆盖技术识别测试条件
3,创建测试用例

 

PS: 相关理论及工具可以参考:

http://www.pairwise.com

http://www.berner-mattner.com/en/berner-mattner-home/products/cte-xl/

由于软件测试基本上都可以抽象成图灵机模型,因此测试设计基本上就是一个分析输入数据的组合,并check输出结果是否符合设计的过程,简化成一个公式:

测试=测试环境+输入分析+输出判定

传统的瀑布式开发流程下,测试团队和开发团队相互独立,测试自动化技术基本上就是环境搭建,输入分析及输出判定3个方面。而在敏捷开发流程下,测试团队和开发团队合并,自动化技术还需要解决快速发布,快速验证,快速重现,快速定位的问题,测试需要从黑盒向灰盒、灰白盒、白盒的方向努力。

敏捷开发模式是一个轻文档重交流的轻量级开发流程,不但是TDD的,更是ATDD(Auto)的,整个流程对工具的要求很高。在快速循环的迭代过程中,必须借助工具使团队尽量脱离重复工作,将精力集中到对业务的理解上去。我认为工具发展的方向应该是打通"需求/用例/执行/缺陷管理"等环节,尽可能的消灭中间文档,支持从任一环节快速回溯到其他环节。 

而在敏捷模式下,测试开发融合,测试团队的独立性似乎更多反映在技术层面的相对独立,传统的测试leader似乎已经无事可做了