Page Object 模式很火,UI 自动化测试到底要不要用?怎么用?

本文作者探讨在手游公司自动化测试中,是否应使用Page Object(PO)模式。通过实例,作者分析了PO模式的优缺点,如代码量增加、维护便利性、复用性等,并提出一种减少代码量的解决方案。文章强调,技术选择应服务于业务,PO模式在复用性高的情况下能带来显著优势。
摘要由CSDN通过智能技术生成

本文作者为霍格沃兹测试学院第 9 期学员 zzt,文末领取思寒老师分享的《移动自动化测试 PO 模式实战》视频课程。

业务背景

我们是一家手游公司,前端使用 Unity。Appium 之类框架的都无法识别 Unity 控件,最后得知网易Airtest 下面的 poco 框架可识别
Unity 控件。

由于之前没有相关经验靠自己摸爬滚打,走了很多弯路,代码结构/框架也重构了几次(现在还想重构😂 )。在设计之初有过很多构想,觉得应该满足那些要求:

  • 颗粒度尽可能小且case互不影响
  • 可根据不同策略执行不同深度case集

  • 负载均衡:收集可用测试机根据对应测试机执行快慢分发不同数量case任务

  • 重复执行

  • 失败重试
    (因业务特殊目前不准备失败重试,因为case前置数据准备是通过跑sql修改数据,但前端不会及时刷新,需要找到一个刷新点,主流的刷新点是重登,从当前case界面-》跳转游戏主界面-》设置切换账号-》登录界面登录账号-》跳转游戏主界面-》跳转case指定界面,这个过程非常耗时,会大幅增加case执行时间)

  • 让case编写者只需要关注业务

  • 以最小的改动面对未来需求的变化

还实现了很多,这里不一一列举.

问题来了

了解到 Page Object 模式很主流,很火。然后使用 yaml 数据驱动,很炫酷,高大上的样子(想立马就应用到项目中)。

但 UI 自动化测试到底要不要用 Page Object 模式,以及 yaml 数据驱动? 或者说我这个情况要不要使用 PO 模式?


任何技术最终还要是服务于业务,是必须要能解决某些或某类问题的。 这里以我对 PO 模式非常浅显的理解和我当前的做法做了个对比:

po模式 当前搞法
代码量 多 两倍以上
复杂度 较复杂
UI 变化 修改简单
单看表格可能看不懂哈,直接贴 Python 代码(省去了case前置界面准备,前置数据准备):
代码内容

代码主要是把一个战术技能从0级升级到10, 并做相关断言。

          1.     data_0 = [
          2.     
          3.       2. ['0', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+0</color>', '1', '15001', 9],
          4.     
          5.       3. ['1', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+1</color>', '2', '15002', 9],
          6.     
          7.       4. ['2', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+2</color>', '4', '15003', 9],
          8.     
          9.       5. ['3', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+4</color>', '6', '15004', 9],
          10.    
          11.       6. ['4', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+6</color>', '9', '15005', 9],
          12.     
          13.       7. ['5', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+9</color>', '12', '15006', 9],
          14.     
          15.       8. ['6', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+12</color>', '16', '15007', 9],
          16.     
          17.       9. ['7', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+16</color>', '20', '15008', 9],
          18.     
          19.       10. ['8', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+20</color>', '25', '15009', 9],
          20.     
          21.       11. ['9', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+25</color>', '30', '15010', 9],
          22.     
          23.       12. ['10', '每有一个进攻战术达到<color=#fca926>10级</color>,\n球队进攻<color=#fca926>+30</color>', '0', '0', 0],
          24.     
          25.       13. ]
          26.     
          27.       14. @allure.story('战术素养')
          28.     
          29.       15. @allure.title('升级常规进攻素养0-10级')
          30.     
          31.       16. @pytest.mark.parametrize('level, des, number, style, t_book', data_0)
          32.     
          33.       17. def test_0(self, mt, level, des, number, style, t_book):
          34.     
          35.       18.         poco &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值