Appium 实践 | 让测试更快更稳更可靠:片状测试

简介: 使用 Appium 时,会遇到又慢又不稳定的情况。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 中提取有价值的信息。

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

更多技术文章分享及测试资料点此获取

相关文章
|
5天前
|
敏捷开发 机器人 Java
自动化测试之美:从理论到实践
【9月更文挑战第28天】在软件开发的海洋中,自动化测试是一艘航向高效、精确和快速交付的船。它不仅减轻了手动测试的负担,还提升了软件质量的保障。本文将带你了解自动化测试的核心概念、流行的工具以及如何将这些理论应用到实践中去。我们将通过实际代码示例,探索自动化测试的魅力所在。
109 70
|
5天前
|
测试技术
探索软件测试的奥秘:从基础理论到实践应用
【9月更文挑战第28天】在数字化时代,软件已成为我们生活中不可或缺的一部分。然而,随着软件复杂性的增加,确保其质量和可靠性变得日益重要。本文将带你深入了解软件测试的核心概念、方法论以及如何在实际工作中运用这些知识来提升软件质量。无论你是软件测试新手还是希望深化理解,这篇文章都将为你提供宝贵的洞见和实用技巧。
|
3天前
|
Devops jenkins 测试技术
DevOps实践:持续集成与自动化测试的融合之道
【9月更文挑战第29天】在软件开发的快节奏竞赛中,DevOps如同一位智慧的舵手,引领着船只驶向效率与质量的彼岸。本文将揭开DevOps的神秘面纱,探索其核心理念如何通过持续集成(CI)和自动化测试的实践,实现软件开发流程的优化与加速。我们将一同见证代码从构思到部署的旅程,以及这一过程中的关键技术和工具如何协同工作,确保软件质量和交付速度的双重提升。
|
7天前
|
敏捷开发 监控 测试技术
提升软件质量的利器:自动化测试的实践与反思
在软件开发的生命周期中,测试作为保障产品质量的重要环节,其重要性不言而喻。随着敏捷开发和持续集成等实践的普及,传统的手动测试方式已逐渐无法满足快速迭代的需求。因此,自动化测试作为一种提高测试效率和准确性的有效手段,正受到越来越多开发者的青睐。本文将深入探讨自动化测试的价值、实施步骤以及在实践中可能遇到的问题和解决方案,帮助读者更好地理解和应用自动化测试。
13 2
|
12天前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
9天前
|
存储 安全 jenkins
提升软件测试效率的策略与实践
在软件开发过程中,测试环节扮演着至关重要的角色。它不仅保障了软件产品的质量,还在很大程度上决定了产品的最终用户体验。本文将探讨几种实用的策略和实践方法,旨在提高软件测试的效率。从自动化测试工具的应用,到持续集成环境的搭建,再到测试用例的高效管理,我们将一一解析如何优化测试流程,减少重复工作,确保软件质量的同时,缩短上市时间。
|
6天前
|
小程序 测试技术 程序员
『软件工程12』软件工程实践方法——软件测试
该文章详细阐述了软件测试的重要性和基本原则,并按测试阶段顺序介绍了单元测试、集成测试、确认测试以及系统测试的具体内容和实施步骤。
『软件工程12』软件工程实践方法——软件测试
|
9天前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
|
12天前
|
测试技术
软件测试中的自动化策略与实践
【9月更文挑战第21天】在软件开发的生命周期中,测试阶段扮演着至关重要的角色。它不仅确保了软件产品的质量,还帮助团队及早发现并修复缺陷,从而节省时间和成本。本文将探讨如何通过实施自动化测试策略来提升测试效率和有效性,包括选择合适的工具、设计有效的测试用例以及维护测试脚本。文章旨在为读者提供一套清晰的指导方针,帮助他们在项目中成功地应用自动化测试。
|
11天前
|
测试技术 持续交付 Android开发
软件测试中的自动化测试策略与实践
本文深入探讨了软件测试中自动化测试的策略与实践,阐述了自动化测试的重要性、适用场景及常见工具。通过对自动化测试框架的搭建、脚本编写、持续集成等方面的详细分析,揭示了如何有效提升软件测试的效率和质量。同时,本文还指出了自动化测试在实际应用中可能面临的挑战,并提出了相应的解决方案。无论是对于初学者还是资深测试工程师,本文都提供了宝贵的参考和启示。
下一篇
无影云桌面