zoukankan      html  css  js  c++  java
  • Appium 实践 | 让测试更快更稳更可靠(一):片状测试

    本文为霍格沃兹测试学院对 Appium Pro 的系列原创翻译文章之一,旨在普及最先进的测试开发技术。进阶学习,文末加群。

    使用 Appium 时,会遇到又慢又不稳定的情况。Appium
    使用的底层工具可能会限速,在功能测试中,许多环境问题也会导致自动化测试不稳定。其实有一些方法可以避开这些问题。本篇文章是系列中的一篇,后面也会有相应文章讨论稳定性和速度。

    创建 Session 片状

    片状其实就是不可能靠的意思--如果在本地测试成功,在未来它可能运行失败,这是不是不可靠?这个问题很复杂,Appium
    确实会出现不稳定问题,但你需要找出问题所在!

    • 你是否了解 App 或者设备的速度,App 稳定性,屏幕大小,或者动态内容?是否毫无根据的假设这些值;

    • App 本身就不稳定(也许是 App 自身存在的问题或者人为,人工操作是否也会出现这个问题);

    • 设备内存和处理器计算不足;

    • 网络问题(用 HTTP 发送到后端可能失败);

    • 设备问题(设备会出现各种奇怪的问题);

    如果你说,上面这些情况都没问题,问题肯定就出在 Appium 上!其实,Appium 只是众多技术的一环,下面这个图说明了 iOS 测试的底层技术栈:

    看到没,Appium 并不是一个庞大的怪兽,相反,它使用了许多底层工具,问题可能出在这些底层工具上(比如 XCUITest 和 UiAutomator2
    )。希望你能调查清楚问题所在。某种问题并不孤立,而是在整个构建中随机出现。当你检查日志时,你会发现这种片状现象总是在一天的某个时间发生。这是非常重要信息,这可能有一个计时代码正在执行!询问其他团队,他们可能知道问题所在。

    后面的文章会详细讨论这些问题,现在我给出一些在 CI 上的建议:

    1. 将测试添加到构建前,检测是否有片状问题。多次运行它 (可能 100 次 ?) 以确保可靠,如果 100% 通过,很好,merger 这个 commit 到 master 分支吧。

    2. 如果测试有一些没有通过,说明存在不可靠或者片状问题。花点时间调查原因,也许仅仅因为定位或者等待问题。Appium 日志和一步一步的截图很重要。

    3. 当发现问题时,如果能解决,就解决它。如果解决不了,可以向 Appium 或者 Apple 提供错误报告,你还可以丢弃这个测试或者注释掉(如果有时间,也可以手动测试)。

    4. 如果您在构建中了保留测试并允许构建在失败时重试测试,您必须跟踪重试次数的统计数据,并设置一些可靠性阈值,超过该阈值再进行调查研究。如果测试随着时间的推移,片状问题越来越多,你的应用程序可能有问题。

    Appium
    测试是功能测试,不是单元测试。单元测试与其他任何东西都是隔离的,而功能测试则生活在真实的世界中,要混乱得多。功能测试不可能覆盖所有代码问题,应该只考虑关键的用户操作,并通过少量测试捕获
    bug,从 bug 中提取有价值的信息。

    与此同时,要确保那些少量的测可能可靠。通过强化一些测试,你将了解关于应用程序和整个环境的很多信息。这样就能从一开始就把学到的东西投入到新的测试中去,而不是在以后的道路上一遍又一遍的解决同样的问题。

    关于更多健壮性测试的技术,我们在后续文章讨论,包括如何快速、可靠地查找应用程序中的元素!


    ** _
    _**

    ** _
    来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
    QQ交流群:484590337
    公众号 TestingStudio
    点击获取更多信息

  • 相关阅读:
    相交链表 3种方法
    旋转数组 空间复杂度为O(1) 的2 种方法 + 1种空间复杂度O(n)
    各种sort排序总结
    我写过的bug...
    裸BFS题若干
    luence
    mysql 找出外键等约束
    mysql (8.0 或以下)数据 卸载, 安装, 创建用户, 赋权
    navicat 导入sql文件 的正确方法
    [转] git clone 远程分支
  • 原文地址:https://www.cnblogs.com/hogwarts/p/15816306.html
Copyright © 2011-2022 走看看