写点什么

软件测试 / 测试开发丨 App 自动化测试学习笔记

作者:测试人
  • 2023-06-05
    北京
  • 本文字数:1574 字

    阅读完需:约 5 分钟

获取更多相关知识

本文为霍格沃兹测试开发学社学员学习笔记分享,文末附原文链接。

特殊控件 Toast

Toast 是什么

  • 一种消息框类型

  • 永远不会获得焦点无法被点击

  • Toast 显示的时间有限,Toast 会根据用户设置的显示时间后自动消失

  • 是系统级别的控件,属于系统 settings

  • Toast 类的思想:就是尽可能不引人注意,同时还向用户显示信息,希望他们看到

Toast 定位

  • appium 用的是 uiautomator 底层来抓取 toast,

  • 再把 toast 放到控件树内,但是它本身不属于空间

  • 使用的是 uiautomator2

  • xpath 可以找到 //*[@class="android.widget.Toast"]//*[contains(@text,"xxx")] xxx:toast 的文本内容

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(50));  driver.findElement(AppiumBy.xpath("//*[@class="android.widget.Toast"]"));
复制代码

App 弹窗异常处理

黑名单处理

  • 运行过程中不定时弹框(广告弹窗,升级提示框,新消息提示框等等)

  • 弹框不是 BUG(UI 界面提示,警告的作用)

def find(self, by, locator):    try:        return self.driver.find_element(by, locator)    except Exception as e:        for black in black_list:            eles = self.driver.find_elements(*black)            if len(eles) > 0:                eles[0].click()                return find(by, locator)        raise e
复制代码

装饰器优势

  • 对原有函数的功能增强

  • 不改变原有函数的逻辑

  • 使代码更简洁、易维护

# 装饰器逻辑def ui_exception_record(func):    def run(*args, **kwargs):        self = args[0]        try:            return func(*args, **kwargs)        except Exception as e:            # 这里添加所有的异常情况处理            # 日志            logger.warning("执行过程中发生异常")            # 截图            timestamp = int(time.time())            image_path = f"./images/image_{timestamp}.PNG"            page_source_path = \                    f"./page_source/{timestamp}_page_source.html"            # page_source            with open(f"./page_source/{timestamp}_page_source.html",\                     "w", encoding="u8") as f:                f.write(self.driver.page_source)            self.driver.save_screenshot(image_path)            allure.attach.file(image_path, name="image",\                     attachment_type=allure.attachment_type.PNG)            allure.attach.file(page_source_path, \                    name="page_source", \                    attachment_type=allure.attachment_type.TEXT)            raise e    return run
复制代码

自动化测试架构优化

打造测试框架的需求与价值

  • 领域模型适配:封装业务实现,实现业务管理

  • 提高效率:降低用例维护成本,提高执行效率

  • 增强功能:解决已有框架不满足的情况

自动化框架应具备的功能

  • 支持管理用例,运行用例

  • 支持查找元素/定位元素,对元素/页面 进行各种操作(点击,滑动,输入等等)

  • 支持生成测试报告

  • 能够实现功能的复用,(比如登录,搜索等)

  • 当页面有异常弹框的时候,可以进行有效的处理

  • 当用例失败,需要添加失败时的日志,截图,等信息,放在测试报告中

  • 多设备并发

  • 支持平台化

为什么要封装架构

  • 复用

  • 平台化

增强功能

  • 需求与价值

  • 项目结构优化

  • 框架封装

参数化与数据驱动

  • 支持支持测试用例 / 步骤层级的参数化驱动配置

  • 配置方式包括三个部分参数定义(指定名字)数据源指定(指定 yaml 文件 /或者其它格式文件)数据源准备(无论是从线上环境 捞的数据,还是自己创建的测试数据)

总结

  • 自动化测试框架应具备的功能

  • 自动化测试框架优化(在 PO 的基础上,添加异常处理,日志,报告 ,截图,参数化与数据驱动等)逐步的将框架完善

原文链接:https://ceshiren.com/t/topic/25601

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨App自动化测试学习笔记_程序员_测试人_InfoQ写作社区