有朋友对在 泰斯特 2020 年终回顾 & 总结 中分享的 UI 自动化测试感兴趣,


如何设计出优雅的 UI 测试代码-LMLPHP


今天来给大家分享一下代码设计的一些心得与方法。

UI 自动化测试一直是老生常谈的话题,

作为处于"金字塔顶端"的自动化手段,用的不好就是一场灾难,用的好也无法雪中送炭。

如何设计出优雅的 UI 测试代码-LMLPHP

但 UI 测试也是最接近用户,最能模拟用户真实行为的自动化手段。

正文

POM (页面对象模型)相信大家已经非常熟悉了,核心思想就是每个页面对应一个类,在每个类中放置页面中的定位信息以及相关操作函数。

然而在 POM 的基础上,我们其实可以将每个页面的操作抽象成字典映射。这样一来,所有的用例执行对应的操作会变得非常清晰。

如何设计出优雅的 UI 测试代码-LMLPHP


在实战中,也相信大家发现不少页面带有重复的元素,比如标签栏,导航栏等通用组件。

针对这个情况,我们可以设计一个页面基础类,储存所有页面通用的 基础操作通用定位,所有独立的页面类都可以继承这个基础类,从而使得代码架构变得更加整洁,有效减少重复代码。

c

如何设计出优雅的 UI 测试代码-LMLPHP


这里的设计关键有两点:

  1. 初始化 base_actions_map,也就是我们的基础操作字典,我们要在这里对所有的测试执行步骤和对应的执行函数进行映射。

  2. 实现 operate 方法,所有的用例执行操作步骤都将通过 operate 方法 优先 在本身的操作字典中寻找映射函数。

基础类设计完毕~。

假设我们现在需要对某个页面做UI自动化,我们的只需要继承刚刚实现 PageObjectModel, 然后构造 actions_map 就可以了~




   


如何设计出优雅的 UI 测试代码-LMLPHP

最后在实际测试调用中,代码会变得非常整洁清晰,而这也是程序设计的魅力。

如何设计出优雅的 UI 测试代码-LMLPHP


虽然因为 UI 测试的不稳定性以及高成本,大部分公司都无法成功在 UI 自动化测试中获得正收益,但测试技术的发展永无止境~

本文分享自微信公众号 - AI测试前线(TaisiteMagicWorld)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

05-29 19:50