自动化测试框架理论
1.什么是框架
框架是介于编程语言原生代码和最终产品的一个半成品。作用是提高开发效率,提升产品质量。如,unittest单元测试框架、selenium网页操作框架、自研框架…
2.框架评判标准
*独立性:可以直接拿来用,不需要再去依赖其他的第三方库(不用导其他第三方库)
*重用性:测试步骤;测试脚本、测试数据、测试环境
*可用性:测试数据易于定制;测试脚本易于定制;测试脚本易于维护(POM思想);良好的异常处理机制和操作日志(日志loging);
*可移植性:测试脚本以及框架本身在不同系统下的移植性
*无人值守:设置代码运行时间。在特定时间代码自然运行,并记录错误信息,将测试报告发给相应人员
*是否适于团队开发
3.当前流行的测试框架设计思路
*数据驱动(Data Driver Testing)DDT
*关键字驱动(Keyword Driven Testing)KDT
*行为驱动(Behavior Driven Development)BDD
*业务驱动(Business Process Testing)BPT
*页面对象模式(Page Object Model)POM
*基于组件驱动(Component Based Testing)CBT
4.分层思想
核心思想是相同的业务尽可能的划分在一起,不同的业务分层处理。层与层之间通过接口来发生关系,同一层只专注一件事情,相邻层中间有数据的交换,非相邻层之间没有关系。
在测试领域分层思想存在广义的分层和狭义的分层两种,广义的分层其实就是测试阶段的划分(单元测试、集成测试、系统测试、验收测试、回归测试),狭义的分层就是测试代码的分层设计(如没有特殊说明,就指的是狭义的分层)。
分层的指导原则:
*层与层之间只有相邻层发生关系,非相邻层没有任何交集。
*一切从系统的业务需求来分析
*每一层定义明确的功能,制定接口规范
*只要层与层之间的接口规范没有变化,那么具体层的具体实现不受限制
5.现有框架存在的问题
*框架只针对特定的领域。如,selenium只对Web的UI界面操作
*某些框架一味追求使用简单,为了降低学习成本,减少脚本编写难度,基于测试脚本稳定性和健壮性考虑,就难免需要做一些限制,而这些限制往往会制约框架的扩展性和灵活性,反倒对于一些“高端”用户就显得不够“友好”
*某些框架为了获取更多的用户,就会不断的向“通用化”方向发展,随着通用化变强,那么其专业性就相对弱化了