一、如何评估框架和分层思想

1、为什么要设计测试框架

  • 产品或工具需要考虑开发效率和成本;
  • 需要高效的框架;
  • 框架,就是介于原生代码和最终产品之间的一个半成品;

 

2、如何评价一个框架的好坏?

从以下几个方面来评估:

  • 独立于测试工具;如测试框架不受工具限制,测试工具如postman或jmeter只是测试框架某种支持功能的底层的一部分;
  • 测试步骤可重用;
  • 测试资产可重用;如测试脚本,测试数据,测试环境等;
  • 测试数据易定制;如页面输入测试数据,或上传数据,自动生成特定条件的数据;
  • 异常处理机制;如自动截图,保留日志和数据,提交bug,自动继续运行等;
  • 测试脚本易开发
  • 测试脚本易维护
  • 无人干预执行;如代码提交后可自动运行,半夜可定时运行等;bug修复后可自动进行回归验证;
  • 代码可移植性高;如从window移植到linux上;
  • 适宜于团队开发;如多人开发;

 

3、当前流行的框架设计思路

  • 数据驱动测试DDT(Data-Driven Testing)
  • 关键字驱动测试KDT(Keyword-Driven Testing)
  • 业务流程测试BPT(Business Process Testing)
  • 页面对象模式POM(Page Object Model)
  • 基于组件的测试CBT(Component-Based Testing)

 

4、分层思想

  • 核心就是不同的操作,应该放在不同的类和不同的方法中,层与层之间互相依赖,互相调用,每一层都有自己的独特的分工;
  • 不会跨层调用;

 

指导原则:

  • 上层总是依赖下层不要跨层访问
  • 一切从系统需要提供的功能进行分析;
  • 每个层的接口有明确的职责范围
  • 只要接口规范无变化接口的实现互不影响;

 

Woniu CBT框架的设计思想:

  • 核心,基于产品业务和基于测试组件;
  • 组件有几大类:
    • 公共组件
    • 操作组件
    • 测试组件
    • 业务组件
    • 模块组件

 

5、现在流行框架存在的问题

  • 测试框架只针对某些特定领域;
  • 测试框架试图减少测试人员的编码量,导致脚本的各项操作被限制的恨死,无法进行深度开发和定制;
  • 测试框架的通用性更强,试图适用于各类测试,使得灵活性和可深度开发性大打折扣;

 

6、小结

  • 测试框架,就是介于原生代码和最终产品之间的一个半成品;
  • 测试框架的好坏,需要从独立性,可重用性,稳定性,易开发,易移植,可团队开发等多角度来衡量;
  • 当前流行的框架设计,主要有数据驱动,关键字驱动,业务驱动,页面对象模式,基于组件模式等;
  • 框架设计和产品设计,一样要遵循分层指导原则;
  • 现有的框架,存在只针对特别领域,灵活性,可扩展性不强等多种问题;

 

二、图像识别和模版匹配算法

1、图像识别匹配算法

为什么要做图像识别?

  • 界面元素定位难题;
  • SikuliX没有专门的python接口,只能利用JPype进行跨语言调用;

 

什么是图像识别?

  • 核心本质,对图像轮廓的描述,变形后的容错,像素信息的匹配处理等;

 

图像识别要怎么做和做什么?

  • 在一个大的画面中,查找一个匹配某个小区域的画面元素,然后定位到该元素上,再进行相应的操作(如点击),从而实现测试的目的;

 

模版匹配

  • 对于要操作的画面元素,进行单独的截图,这个截图称之为模版;(如要被点击的按钮图片)
  • 利用这个模版,在整个当前屏幕或者当前窗口进行搜索匹配,找到完全符合条件的区域的中心位置坐标的过程,就是模版匹配;(如拿着按钮的图片,在页面中按照像素来查找,找到了,就点击页面中按钮的中心位置,完成操作目的);
  • 模版匹配的缺点:模版匹配具有一些局限,只能进行平行移动,若原画面中的匹配模版发生旋转或大小变化时,模版匹配算法无效;即识别不出来模版变形的情况;

 

滑动比对(RGBA比对)

Python自动化测试框架--Woniu

 

匹配度(Similarity)

  • 即相似度,主要用于解决图像匹配过程中的容错问题;
  • 考虑的角度有以下几方面:
    • 像素数占比;
    • RGBA值占比;(在正确的值的上下浮动10%范围以内,都可以判断为正确),如红色取200为正确,180或220以内也可以算正确;
    • 还可以采用预先转换为灰度图的方式,即图片转为白黑灰后比对;

 

图像识别匹配算法--算法思路

1)依据测试场景,对需要操作的元素截图;

  • 注意,截图时最好确保图片的中心位置与元素的中心位置一致;

2)依据需要对当前屏幕截图;

3)获取模版图片和屏幕截图的每一个像素点的颜色值,并保存到一个列表中,供后续滑动和遍历对比;

4)通过循环在X和Y轴两个方向上进行逐点判断,如果没有匹配就滑动到下一个点,直到找到匹配为止;

5)依据匹配的点的位置,获取中心点的位置,并返回;

6)利用获取到的坐标,进行相应的鼠标和键盘操作即可。

 

 

 

 

2、利用Python开发模版匹配算法

 

 

 

 

3、基于图像识别的自动化开发

 

 

 

 

4、基于OpenCV的图像识别技术

 

 

 

5、图像识别技术在移动端的应用

 

 

 

 

 

三、云测试平台

 

 

 

 

 

 

相关文章: