自动化测试技巧之图片验证

简介:

 想起图片验证,我就会想到我曾经的第一个自动化测试程序,那会被图片验证纠结了很久,最后也没有想通该怎么处理,直到最近,我终于想通了,可是却离开那个程序了。
  人生憾事其一,回头时发现自己曾做过的事那么浅薄,却沾沾自喜。
  ------------------------------------------------------------------------
  图片验证,这个不光指的是被测程序上的那些图片的验证,更可以引申为一些比较难以用常规方法来验证的功能的验证。
  先不去纠结到底怎么实现图片验证,来简单聊聊图片验证的一些实现。
  目前所有的图片共可以分为两大类,矢量图和位图。如果你要比较的是矢量图,那么,亲,可以找些资料一起来研究么,这块我不是很懂。目前的测试中,需要比较的图片90%以上都是位图,就算有些地方是矢量图,也是当成位图来比较的,所以目前我们先解决位图的问题。
  位图比较的基本原理是按位比较,因为位图的本质是一个矩阵(黑白图)或三个矩阵(RGB图),所以我们可以通过按位比较来判断两张图是否完全一样,这个也是最简单的了。当然,现在已经有了很多成熟的图形比较算法或工具,我们可以去网上找找。
  然后来说说利用图片来验证一些比较难以用常规方法来验证的功能。这个的核心思想是:一个软件,在相同的数据源、相同的显示环境、相同的操作下所显示的内容是完全一致的。
  先来举个例子。比如说画图板的绘图功能,如果要对这个进行自动化测试,那我们应该怎么做呢?无从下手么?因为我们不敢保证我们所绘制的图片是真的符合预期的,因为很难判断出来,并且很多前辈高人也说过,如果涉及图片比较多的最好放弃自动化。
  那么就真的没救了吗?
  再假设,画图板中的矩形选择区、线性选择区的对象是被自定义的,即不能被当前任一款测试工具所识别的,那我们还能实现自动化吗?
  其实,也有一条路是可以走通的。绘图功能的本质就是把特定线条或者区域中的像素点修改为对应的颜色,也就是说,如果两次的操作的图片、图片大小、绘图的轨迹完全一样的话,那得到的图片也应该是一样的。至于随机事件和各种组合的结果验证,亲,让他们一边玩去,测试脚本很忙。
  到这里,我们可以大致总结下:
  1. 对于一些常规方法验证不了的问题,我们可以采用这种方法进行验证。不过操作最好小于3步,以减少误差;
  2. 截图比较的区域要尽可能避免无关因素的干扰,如系统时间等;
  3. 如果有动态数据,则需要对截图范围内的图片相似度做一些规定,两个时刻的相似度低于80%,要么重新制定截图区域策略,要么寻求其他更有效的方法。
最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
XML JavaScript Java
技术分享 | 接口自动化测试中如何对xml 格式做断言验证?
在服务端自动化测试过程中,发起请求之后还需要对响应值进行验证,验证响应信息符合预期值之后,这一条接口自动化测试用例才算完整的通过。所以这一章节,将会讲解在接口自动化测试中,是如何对服务端返回的 XML 格式响应内容做断言验证。
|
Web App开发 测试技术 数据库
|
3月前
|
数据可视化 测试技术 持续交付
自动化测试神器:Python之Pytest库入门使用
自动化测试神器:Python之Pytest库入门使用
97 4
|
6天前
|
Web App开发 测试技术 网络安全
|
10天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
【4月更文挑战第9天】本文探讨了Python在自动化测试中的应用,强调其作为热门选择的原因。Python拥有丰富的测试框架(如unittest、pytest、nose)以支持自动化测试,简化测试用例的编写与维护。示例展示了使用unittest进行单元测试的基本步骤。此外,Python还适用于集成测试、系统测试等,提供模拟外部系统行为的工具。在脚本编写实践中,Python的灵活语法和强大库(如os、shutil、sqlite3、json)助力执行复杂测试任务。同时,Python支持并发、分布式执行及与Jenkins、Travis CI等持续集成工具的集成,提升测试效率和质量。
|
14天前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
34 6
|
1月前
|
测试技术 Python
如何使用Python进行自动化测试
如何使用Python进行自动化测试
24 0
|
2月前
|
数据采集 Web App开发 前端开发
Python爬虫之自动化测试Selenium#7
Selenium基本使用、查找结点、节点交互、动作链、获取节点信息、延时等待、前进后退、Cookies、选项卡管理、异常处理【2月更文挑战第26天】
45 1
Python爬虫之自动化测试Selenium#7

热门文章

最新文章