霍格沃兹测试开发是业界领先的测试技术高端教育品牌。愿景:测试开发工程师的黄埔军校
工作中我们经常需要对应用的页面进行手势操作,比如滑动、长按、拖动等,AppiumDriver 为我们提供一个模拟手势操作的辅助类 TouchAction,可以通过它对手机屏幕进行手势操作。 具体用法参见链接:https://ceshiren.com/t/topic/3275 ## 导入TouchAction ``` from appium.webdriver.common.touch_ac
服务与服务之间传递数据包,往往会因为不同的应用场景,使用不同的通讯协议进行传递。比如网站的访问,常常会使用 HTTP 协议进行传递,文件传输使用 FTP,邮件传递使用 SMTP。上述的三种类型的协议都处于网络模型中的应用层。除了应用层的常用协议之外,对于传输层的 TCP、UDP 协议,以及 Restful 架构风格、RPC 协议等等基础网络知识要有一定的了解和认知。 ## 网络协议介绍 在
Appium 提供了很多系统操作,在测试 APP 过程中会有一些特殊场景,比如来电话、短信,横竖屏切换,安装/卸载 APP,手机上的键盘操作,录屏等功能。下面介绍几个常用的设备交互 API。 更多用法参见官网: http://appium.io/docs/en/about-appium/intro/ ## 模拟电话/短信 用下面的命令模拟 GSM 电话和短信,注意:只能在模拟器上使用!
测试时需要用到测试设备,通常测试人员会选择使用模拟器进行自动化调试。模拟器分为原生模拟器与第三方模拟器。我们今天介绍的就是原生模拟器是 Android SDK 中自带的模拟器,可以通过 Android Studio 工具创建模拟器。 ## 创建/管理 原生模拟器 Android 虚拟设备(AVD)是一种配置,它可以定义 Android 模拟器例如:Android 手机、平板电脑、Wear O
想要使用 Appium 进行测试,那么就一定要先了解Appium的原理。Appium 不仅能够实现移动端的 JSONWP,并且延伸到了 Selenium 的 JSONWP,它能够控制不同移动设备的行为,例如通过会话安装和卸载 APP。 ## Appium 原理 ![](https://ceshiren.com/uploads/default/original/3X/4/3/435691a3
混合应用测试或微信小程序测试,都会涉及到 WebView 组件,这节内容将分析一下 WebView 的技术原理。首先通过日志分析查看 Appium 的运行过程。 ## WebView日志分析 要想查看 ChromeDriver 的日志,需要在 Capability 里开启 一个开关项 showChromedriverLog。让 Appium 运行测试用例时能够生成 ChromeDrive
Hybrid App(混合模式移动应用)是介于 Web-app、Native-app 之间的 app,本质上是 Native-app 中嵌入 WebView 组件,在 WebView 组件里可以访问 Web App。Hybrid App 在给用户良好交互体验的同时,还具备了 Web App 的跨平台、热更新机制等优势。 Android WebView 在 Android 平台上是一个特殊的
Toast 是 Android 系统中的一种消息框类型,它属于一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。它不同于 Dialog,它没有焦点。Toast 的设计思想是尽可能的不引人注意,同时还向用户显示信息希望他们看到。 测试 APP 下载地址: 首先将上面地址的 apk 包下载到本地,并安装到模拟器中;在模拟器中打开 API
随着微信小程序的功能和生态日益完善,很多公司的小程序项目页面结构越来越多,业务逻辑也越来越复杂。如何做好小程序的自动化测试就成为测试同学普遍面临的一大痛点难题。 ## 微信小程序 小程序内嵌于微信内部,页面包含 Native 原生元素和 Web 元素,相当于混合应用。并且,小程序 Web 部分是基于腾讯的 X5 内核开发的,也是特殊的 WebView。那么,对微信小程序进行自动化测试,包括操
玩游戏的时候最怕的就是卡顿。排位赛的紧急关头,明明马上就能上一段位,却因为卡顿导致给对方送人头。还把对手送上了王者。引起队友骂声一片。作为测试工程师的你,可以忍? 卡顿测试也是专项测试里的
![](https://ceshiren.com/uploads/default/original/3X/2/0/2048a4bda04160753635199ab12a0df0a541bfba.jpeg) Appium 服务器运行时会产生很多日志,但是很多人并不了解其中的意义,也无法掌握有用的信息。本文将详细解读如何读懂 Appium 日志,并让你的测试效率翻倍。 日志第一行显示了 App
![](https://ceshiren.com/uploads/default/original/3X/5/7/5726c71907621480cc5c7bd17d1e215c9ebafa6f.jpeg) App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了。很容易打消做自动化的热情,导致从入门到放弃。比如下面的两个问题:
我们下载 Docker 镜像的时候,默认会访问 Docker 网站,而 Docker 网站是在国外部署的,距离比较远下载速度特别慢。我们可以通过设置加速器的方式来加速 Docker 镜像下载的速度。下面将描述一下使用加速器的步骤: 1.我们这里选择的是阿里云提供的Docker 镜像加速器服务,首先访问阿里云的镜像仓库:https://cr.console.aliyun.com/(如果没有阿里云
客户端的页面通过 XML 来实现 UI 的布局,页面的 UI 布局作为一个树形结构,而树叶被定义为节点。这里的节点也就对应了我们要定位的元素,节点的上级节点,定义了元素的布局结构。在 XML 布局中可以使用 XPath 进行节点的定位。 ## App的布局结构 从上面这张图中可以看到最左侧是应用的页面的展示,中间部分展示了这个页面的树形结构的 XML 代码。 其中包含的内容为: - 节点
![](https://ceshiren.com/uploads/default/original/3X/3/7/3766bf57a1f31638a1c5f9d41f1b07b2b35acf3d.jpeg) 在实际的工作中,绝大部分公司都至少有3个以上的环境,供测试与研发人员使用。测试人员不可能为每个环境都准备一个自动化测试的脚本,这样的维护成本太过庞大。所以就需要做到一套脚本,可以在各个环境上
Docker是一个开源的应用容器引擎,基于 Go 语言开发,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的系统。 Docker 是世界领先的软件容器平台,Docker 官方的口号是”调试你的应用,而不是调试环境“。在进行多人协作开发时,开发者可以使用 Docker 来消除所谓“我这里运行是好的”(works on my machine)问题
![](https://ceshiren.com/uploads/default/original/3X/2/f/2fa792eb1ce7cea6e3af2ffa64523556b7d14691.png) 如果接口测试仅仅只是掌握一些requests或者其他一些功能强大的库的用法,是远远不够的,还需要具有根据公司的业务以及需求去定制化一个接口自动化测试框架能力。所以在这个部分,会主要介绍接口测试
jenkins 是开源 CI&CD 软件领导者,提供持续集成和持续交付服务,有超过1000个插件来支持构建、部署、自动化,满足任何项目的需要。 可以访问 Jenkins 镜像的介绍网站:https://hub.docker.com/r/jenkins/jenkins/ 查看更多信息。 ``` docker pull jenkins/jenkins ``` ``` docker run -
## pytest架构是什么? 首先,来看一个 pytest 的例子: ``` def test_a(): print(123) ``` ``` collected 1 item test_a.py .
pytest 是一个成熟的全功能Python测试工具,可以帮助您编写更好的程序。它与 python 自带的 unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容 unittest 框架。 pytest 能够支持简单的单元测试和复杂的功能测试,pytest 本身支持单元测试,可以结合 requests 实现接口测试,结合selenium、appium 实现自动化功能测
![](https://ceshiren.com/uploads/default/original/3X/f/a/facb6e29bf503b39571011963faf36c586c673c0.jpeg) Google 官方提供了一个 Android 自动化测试工具(Java 库),基于 Accessibility 服务,功能很强,可以对第三方 App 进行测试,获取屏幕上任意一个 App 的
![](https://ceshiren.com/uploads/default/original/3X/4/3/439f9a297bb4fd49a0ef21be8a071720e2959ded.png) pytest 是一个成熟的全功能 Python 测试工具,可以帮助您编写更好的程序。它与 Python 自带的 Unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容
![](https://ceshiren.com/uploads/default/original/3X/d/f/df073f547e236febf10c4c13c515bdfce25e2ae4.png) Docker 是一个开源的应用容器引擎,基于 Go 语言开发,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的系统。 Docker 是世界领
在有些场景中,需要上传文件,而 Selenium 无法定位到弹出的文件框,以及网页弹出的提醒。这些都是需要特殊的方式来处理。 input 标签使用自动化上传,先定位到上传按钮,然后 send_keys 把路径作为值给传进去. 如图所示,是企业微信文件上传的页面 定位到标签为 input,type 为 file 的元素信息,然后使用 send_keys 把文件路径作为值给传进去。 ![](h
在实际工作中等待机制可以保证代码的稳定性,保证代码不会受网速、电脑性能等条件的约束。 等待就是当运行代码时,如果页面的渲染速度跟不上代码的运行速度,就需要人为的去限制代码执行的速度。 在做 Web 自动化时,一般要等待页面元素加载完成后,才能执行操作,否则会报找不到元素等各种错误,这样就要求在有些场景下加上等待。 最常见的有三种等待方式: - 隐式等待 - 显式等待 - 强制等待 后面会一一介
![](https://ceshiren.com/uploads/default/original/3X/9/6/96cad5008c61cc55e7a57630a88eb24589f1e6c4.jpeg) 使用 Rest-assured 集合 Allure 运行完用例之后,在生成的报告中只有断言信息,没有请求的日志信息。而当我们的用例失败时,特别是接口失败时,请求日志是分析原因的第一手资源。那
当 webdriver 遇到无法完成的操作时,可以使用 JavaScript 来完成,webdriver 提供了 execute_script() 方法来调用 js 代码。 执行 js 有两种场景: - 在页面上直接执行 js - 在某个已经定位的元素上执行 js JavaScript 是一种脚本语言,有的场景需要使用 js 脚本注入辅助我们完成 Selenium 无法做到的事情。 S
![](https://ceshiren.com/uploads/default/original/3X/9/f/9f1091a2de1d0f0bf718036424b512c9677b9a1c.jpeg) H5性能该如何测试呢?很多人不知道该如何下手。其实可以借用W3C协议完成自动化H5性能测试。 因为W3C标准是浏览器标准,一般浏览器都支持W3C标准,它规定使用者可以通过api查询性能信息
浏览器访问:https://hub.docker.com/_/nginx 查看Nginx镜像详细信息。 ![](https://ceshiren.com/uploads/default/original/3X/9/b/9b2f342d5c5485928137d8cb6a329ee781a34575.png) 下载镜像,默认会下载lastest最新版本的软件,可以指定软件的版本。例如:ngi
![](https://ceshiren.com/uploads/default/original/3X/9/1/91a9900229e7f9d6a3adc4142d1a762d486c6a6a.png) 如果把测试简单分为两类,那么就是客户端测试和服务端测试。客户端的测试包括UI测试,兼容性测试等,服务端测试包括接口测试。接口测试检查数据的交换,传递和控制管理过程,它绕过了客户端,直接对服务端
断言是 UI 自动化测试的三要素之一,是 UI 自动化不可或缺的部分。我们使用定位器定位到元素后,通过脚本进行业务操作的交互,想要验证交互过程中的正确性就需要用到断言。 ## 常规的UI自动化断言 分析正确的输出结果,常规的断言一般包含以下的几个情形: - 比较大小 - 包含或者不包含 - 验证布尔值 示例代码: ``` #比较大小 price = driver.find_element
使用chrome浏览器对webview进行手工查看,伴随着业务增多,数量加大,手工操作的速度会无法跟上业务增长,此时需要自动化方法测试webview性能。 当页面加载时,会渲染一系列内容,渲染过程可分为多个阶段,比如下图: ![](https://ceshiren.com/uploads/default/original/3X/d/7/d7eab38d60e4430a01c658f6605
![](https://ceshiren.com/uploads/default/original/3X/7/5/756e5e8564a4e57c44190330107ba54ca7676e16.jpeg) - 需求分析与测试设计(性能需求目标+业务模型拆解) - 测试数据准备和构造(基于模型的数据准备) - 性能指标预期(性能需求目标) - 发压工具配置及脚本编写(压力策略) - 测试过程(
![](https://ceshiren.com/uploads/default/original/3X/e/f/efd4f6ab53cc4a449657509b655cf5e6499878e5.jpeg) 在 UI 自动化测试过程中,面对复杂的业务场景,经常会遇到这样的挑战: - 简单的录制/回放速度快,但无法适应复杂场景; - 编写自动化测试脚本比较灵活,但工作量大且可维护性差; - 以往的
在日常的工作中,常常需要制作自己的项目的镜像,一般通过以下两种方式制作镜像:Docker commit、Dockerfile。 ## Docker commit Docker commit一般用做从一个运行状态的容器来创建一个新的镜像。定制镜像应该使用Dockerfile来完成。 ``` docker commit 容器名 新镜像名:tag ``` 使用这种方式的缺点是:1.对外不
先看 Wikipedia 上的解释: xUnit 是一系列测试框架的统称,最开始来源于一个叫做 Smalltalk 的 SUnit 框架,现在各种面向对象的语言,如 Java、Python 的鼻祖就是 Smalltalk,后来这些语言都借助了 Sunit 框架的理念,有很多通用的规范和特征,也就统称为 xUnit。 - Java : JUnit、TestNG - Python : UnitTes
性能压测,是保障服务可用性和稳定性过程中,不可或缺的一环。我们将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能压测的理论体系,并提供有例可依的实战。 01 性能环境要考虑的要素 系统逻辑架构,即组成系统的组件、应用之间的结构、交互关系的抽象。最简单最基本的就是这三层架构。 三层逻辑结构图 - 客户层:用户请
01 性能环境要考虑的要素 系统逻辑架构,即组成系统的组件、应用之间的结构、交互关系的抽象。最简单最基本的就是这三层架构。 三层逻辑结构图 - 客户层:用户请求端。 - Web层:处理客户端所有的业务请求逻辑和服务端数据。 - 数据库层:维护业务系统的数据。 - 更复杂的逻辑结构 - 逻辑架构中的任意一层,有可能是在独立的物理集群机器上,也有可能跨多个物理机
在大话测试数据(一)文章中,我提到,获取数据的第一步是获取概念上数据。这一步看起来简单,其实不是那么容易。获取概念数据和获取需求的过程是交织在一起的,事实上,它们其实是一个事儿,因为数据是需求中最重要的组成部分。 需求工程是个大话题,目前有很多种流派和实践方式来来搞定需求,但它们的思想都比较一致,那就是:不断的由粗到精的迭代(如下图)。关于需求这里不再展开,如果大家有兴趣的话,推荐两本我觉得还
![](https://ceshiren.com/uploads/default/original/3X/9/b/9bf7800ee97dd8d5d8ab97247062e7174846a166.jpeg) 测试数据在整个测试过程中扮演着极为重要的角色,但是它却像个没有星象的演员,明明至少是男二号,但总是被观众忽略。在测试过程中,我们往往在测试计划阶段就忽略了测试数据,在起先没有给测试数据的设计
技术分享 | Web测试方法与技术实战演练
![](https://ceshiren.com/uploads/default/original/3X/2/a/2a554254fc8bc1b0940a66a733efe448359a0ec3.jpeg) 上节课爱画漫画的小哥哥用漫画形式向大家展示了JMeter的进阶用法:如何搭建InfluxDB,使用更炫酷的Grafana。 看到很多小伙伴觉得看的不过瘾,在强烈的催促下,小哥哥的新文章又出
![](https://ceshiren.com/uploads/default/original/3X/3/0/3061c49d73b39d6524ffe274f626a9d574786ca7.gif) 上节课展示了JMeter的基础用法:录制回放功能,断言,聚合报告。李政道教授谈论学习方法,他表明我们可以获取很多信息。 但是,从了解到理解还有一段路要走。只有亲手练了才能变成理解,能获取
RESTful 是一种规范,符合 RESTful 的 Api 就是 RESTful Api。简单的说就是可联网设备利用 HTTP 协议通过 GET、POST、DELETE、PUT、PATCH 来操作具有 URI 标识的服务器资源,返回统一格式的资源信息,包括 JSON、XML、CSV、ProtoBuf、其他格式。 RESTful 的核心思想是,客户端发出的数据操作指令都是"动词 + 宾语"的结
## 为什么使用Spring Boot - 简化配置,无需编写太多的 xml 配置文件,效率很高; - Spring 可以整合很多各式各样的框架,并能很好的集成; - 基于 Spring 构建,使开发者快速入门,门槛很低; - Spring Boot 可以创建独立运行的应用而不需要依赖外部组件或工具; - 内置 Tomcat 服务器,无需打成 war 包,可以直接在内置 Tomcat 中运行
![](https://ceshiren.com/uploads/default/original/3X/2/5/25afa1e0917e20f13ac561eaae3bbe63318959d1.jpeg) 在上一篇文章中,我们初步探讨了 REST Assured 的应用实践,还有很多丰富的用法需要慢慢探索研究。而 REST Assured 提供的完整断言手段,是测试工程师最常用最重要的功能之
![](https://ceshiren.com/uploads/default/original/3X/1/b/1b10f9d613f225b2915dd1a47b62852beb107168.png) 根据项目对象模型(POM)的概念,Maven 可以管理一个项目的依赖关系、构建、报表以及信息中心的部分文档。 hamcrest 断言 maven依赖: ![](https://ceshiren
本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中,所涉及到的方方面面的知识点精华内容(如下所示),希望对大家快速总结和复习有所帮助。 1.Appium 基础 1 (环境搭建和简介) 2.Appium 基础 2 (元素定位和元素常用方法) 3.Appium 基础 3 (手势操作和 uiautomator 查找元素) 4.Appium 基础 4 (显式等待) 5.Appium 基
本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中,所涉及到的方方面面的知识点精华内容(如下所示),希望对大家快速总结和复习有所帮助。 1.Appium 基础 1 (环境搭建和简介) 2.Appium 基础 2 (元素定位和元素常用方法) 3.Appium 基础 3 (手势操作和 uiautomator 查找元素) 4.Appium 基础 4 (显式等待) 5.Appium 基
测试覆盖率是对测试完成程度的度量。它通常依据某种覆盖准则来对测试用例执行情况进行衡量,以判断测试执行得是否充分 。 ——出自《 计算机科学技术名词 》第三版 今天文章中我们给大家介绍覆盖率统计及覆盖率分析。在10月13日20:00,资深测试开发架构师思寒将光临直播间手把手教大家如何搞定精准化测试! 温馨提示:你以为代码覆盖率与精准化测试知识与黑盒测试无缘?不,你只是没遇到思寒讲的这节课。