霍格沃兹测试开发是业界领先的测试技术高端教育品牌。愿景:测试开发工程师的黄埔军校
技术分享 | App常见bug解析
技术分享 | App测试时常用的adb命令你都掌握了哪些呢?
技术分享 | 想做App测试就一定要了解的App结构
技术分享 | app测试中常用的Android模拟器
技术分享 | web自动化测试-文件上传与弹框处理
技术分享 | web自动化测试-执行 JavaScript 脚本
技术分享 | web 控件的交互进阶
- INNER JOIN:如果表中有至少一个匹配,则返回行 - LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 - RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 - FULL JOIN:只要其中一个表中存在匹配,则返回行 - INNER JOIN-取出一个员工的员工号、生日、部门名字 - LEFT JOIN-取出一个员工的员工号、生日、部门名字,员工号和生日为必展
![](https://ceshiren.com/uploads/default/original/3X/9/f/9f1091a2de1d0f0bf718036424b512c9677b9a1c.jpeg) ## Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。在一个android应用中,一个Activity通常就是一个单独的屏幕,Activity上可显示控
- 页面渲染:客户端渲染页面(SPA)、服务端渲染页面(模板技术) - 数据库连接技术:数据库连接池、数据访问 - 服务管理:接口、路由、权限 - 异步任务调度:异步、同步、回调 - Python:Flask - Java:Spark Java - Python:Django - Java:Spring 全家桶 ## Flask Flask 是一个使用 Python 编写的轻量级 Web
HttpRunner最让我们惊喜的是HttpRunner简单易用。它做到了工具集成,也有自己的核心技术,就像requests代码和HttpRunner的YAML文件,你可以无缝切换。 它是一款面向 HTTP(S) 协议的通用测试框架,你确实只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。那么首先我们需要问一下,HttpRunner是什么
- 传统数据库连接方式:mysql(PyMySQL) - ORM 模型:SQLAlchemy MyBatis、 Hibernate ## PyMySQL 安装: ``` pip install pymysql ``` ## 简单使用 利用 pymysql.connect 建立数据库连接并执行 SQL 命令(需要提前搭建好数据库): ``` import pymysql db =
![](https://ceshiren.com/uploads/default/original/3X/6/1/61019ec5860cbe3c19abbe3e6206ca213bb2a867.jpeg) 1.请求行的 method 不同; 2.POST 可以附加 body,可以支持 form、json、xml、binary等各种数据格式; 3.从行业通用规范的角度来说,无状态变化的建议使用
因为本章的内容是使用jq工具配合完成,因此在开始部分会先花一定的篇幅介绍jq机器使用,如果读者已经熟悉jq,可以直接跳过这部分。 先来看应用场景,App 经常会有一些信息展示的列表页,比如商家的菜品、股票的公司、文章的列表展示等,例如下面这样: 菜品不够吃的话~不是,是菜品数量较少不够测试的量,假如我们想要测试几百个菜品时,会不会在刷的时候是否有性能影响,展示是否正常,列表展示的边界值测试等;
TCP 协议是在传输层中,一种面向连接的、可靠的、基于字节流的传输层通信协议。 ## 环境准备 对接口测试工具进行分类,可以如下几类: - 网络嗅探工具:tcpdump,wireshark - 代理工具:fiddler,charles,anyproxyburpsuite,mitmproxy - 分析工具:curl,postman,chrome Devtool - ## 抓包分析TCP协
Pipeline 是 Jenkins2.X 的最核心的特性,帮助 Jenkins 实现从 CI 到 CD 与 DevOps 的转变。 Pipeline 是一组插件,让 Jenkins 可以实现持续交付管道的落地和实施。持续交付管道(CD Pipeline)是将软件从版本控制阶段到交付给用户或客户的完整过程的自动化表现。软件的每一次更改(提交到源代码管理系统)都要经过一个复杂的过程才能被发布。
实现 Pipeline 功能的脚本语言叫做 Jenkinsfile,由 Groovy 语言实现。Jenkinsfile 一般是放在项目根目录,随项目一起受源代码管理软件控制,无需像创建"自由风格\"项目一样,每次可能需要拷贝很多设置到新项目,提供了一些直接的好处: - Pipeline 上的代码审查/迭代 - Pipeline 的审计跟踪 - Pipeline 的唯一真实来源,可以由项目的多
边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。 这个方法其实是在测试实践当中发现,Bug 往往出现在定义域或值域的边界上,而不是在其内部。为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。 在用边界值分析法的时候,一般规定了取值范围以及值的个数的场景。 在分析等价类案例,划分等价类的时
等价类划分是一种重要的、常用的黑盒测试方法,不需要考虑程序的内部结构,只需要考虑程序的输入规格。它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。 需要把用户所有可能输入的数据,划分成若干份(若干个子集),然后从每一个子集当中选取少数具有代表性的数据作为测试用例,这种方法被称为——等价类划分法。 在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试
测试管理平台是贯穿测试整个生命周期的工具集合,它主要解决的是测试过程中团队协作的问题。在整个测试过程中,需要对测试用例、Bug、代码、持续集成等等进行管理。下面分别从这四个方面介绍现在比较流行的管理平台。 ![](https://ceshiren.com/uploads/default/original/3X/5/c/5c4e637fe1f84f97d597e2ab85951a6fe324a
项目管理是在项目活动中运用知识、技能、工具和方法,以便达到项目要求。 软件项目管理有其特定的对象、范围和活动,着重关注成本、进度、风险和质量的管理,还需要协调开发团队和客户的关系,协调内部各个团队之间的关系,监控项目进展情况,随时报告问题并督促问题的解决。 软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process
JIRA 是目前比较流行的测试流程管理系统,现在很多大厂使用的都是 JIRA。为什么大厂更爱用 JIRA 呢?其实就是因为它的定制性非常的强。可以自己定义流程,自己定义界面,自己定义字段。通过这些自定义的方式,就可以让整个系统更贴合公司的业务。而且 JIRA 的各种插件也非常的丰富,可以满足公司的各种业务需求。 在测试工作当中的一些工作流程,比如测试用例和 Bug 都可以用 JIRA 平台去进
本章介绍基于 Jenkins API 调用的跨平台 API 对接。 ## 基于Jenkins实现跨平台API对接 Jenkins 提供了远程访问应用编程接口(Remote Access API),能够通过 Http 协议远程调用相关命令操作 Jenkins 进行 Jenkins 视图、任务、插件、构建信息、任务日志信息、统计信息等,非常容易与其配合更好的完成 CI/CD 工作。 Jenkin
深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。 更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。 ## 开源项目litemall系统架构 下面以开源项目 litemall 为例,分析一下这个项目中的系统
测试平台的数据展示与分析,我们主要使用开源工具ECharts来进行数据的展示与分析。 ## ECharts简介与安装 ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表,功能非常强大,目前ECharts已经发布到ECharts 5版本。我们的项目也选择Echarts来作为我们的数据展示与分析工具。 ECharts官网: ```
Vue.js 是一套用于构建用户界面的渐进式框架,在目前的前端开放中比较流行的前端框架。 Vue 被设计成自底向上的逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或已有项目整合。但是学习 Vue.js 需要一定的 HTML、CSS、和 JavaScript 基础,所以本章节将不对这些基础内容进行讲解。 ## Vue的组件化开发 目前的前端开发中组件化开发成为了潮流
测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期结果的文档。它的作用其实就是为了测试是否满足某个特定需求。测试用例是指导测试工作进行的依据。 ## 测试用例的组成 标准的测试用例通常由以下几个模块组成: - 用例编号:测试用例的唯一标识。 - 模块:标明被测需求具体属于哪个模块,主要为了更好识别以及维护用例。 - 用例标题:又称之为测试点,就是用一句话来描述测
本章介绍 Web 后端开发中数据持久化技术 TKMyBatis。 ## TKMyBatis简介 TKMybatis 是基于 Mybatis 框架开发的一个工具,内部实现了对单表的基本数据操作,只需要简单继承 TKMybatis 提供的接口,就能够实现无需编写任何 sql 即能完成单表操作。 下面简单介绍下 MyBatis , MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存
从事软件测试行业,每天面对的被测对象都是软件。如果想要更好的去完成测试工作,首先需要对被测对象,也就是对软件要有基本的了解。 ## 软件 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。 程序好理解,就是可以操作的产品。比如 wps、微信、QQ、网页等等这些都是程序。比如说需求文档、设计文档、用户手册这些东西都属于文档。在页面中展示的,还有用户输入的内容这些都是数据。 所以说程
Hook 技术需要预先分析目标应用的源代码和逻辑,根据目标测试场景设置目标、逻辑和数据,然后运行时动态的对目标函数参数值、逻辑或者返回值做修改,达到修改现有函数逻辑、实现目标测试场景的目的。 ## Hook的价值 在测试中,虽然通过修改数据以实现测试场景的需求,大部分情况下都可以通过 Mock 技术实现,但是还有一小部分场景,例如需要修改应用内部函数的参数、返回值或运行逻辑等情况,这时就需要用
Swagger UI 允许任何人(无论您是开发团队还是最终用户)都可以可视化 API 资源并与之交互,而无需任何实现逻辑。它是根据您的 OpenAPI(以前称为 Swagger)规范自动生成的,具有可视化文档,可简化后端实现和客户端使用。 ## 为什么使用Swagger - 跨语言性,支持 40 多种语言,Swagger 已经慢慢演变成了 OpenAPI 规范; - Swagger UI 呈现
技术分享 | Web自动化之显式等待与隐式等待
- Java 异常类 首先让我们简单了解或重新学习下 Java 的异常机制。 Java 内部的异常类 Throwable 包括了 Exception 和 Error 两大类,所有的异常类都是 Object 对象。 Error 是不可捕捉的异常,通俗的说就是由于 Java 内部 JVM 引起的不可预见的异常, Java 虚拟机会选择终止线程。如 OutOfMemoryError ,就是 Jav
Frida 通过 C 语言将 QuickJS 注入到目标进程中,获取完整的内存操作权限,达到在程序运行时实时地插入额外代码和数据的目的。官方将调用代码封装为 python 库,当然你也可以直接通过其他的语言调用 Frida 中的 C 语言代码进行操作。 ## Frida安装和启动 ## - Frida 支持 python2 和 python3 版本,演示所使用的版本为 python3.8 ``
性能和压力测试是每一个互联网应用程序上线之前都必须检验的测试项目。JMeter 作为目前互联网大厂最流行、最强大的性能测试工具,已经成为测试人员行走江湖的必备利器。 相比传统的压力测试工具(如 LoadRunner),JMeter 最显著的特点就是开源、轻量级、易于维护、便于扩展。 面对变化多端的业务情况,测试开发人员可以基于 JMeter 源码修改和二次开发,快速实现定制化功能,更好的满足业务
应不少同学的要求,通过本文分享下对测试工程师职业发展的看法,话题较大,不敢随便乱写,抛砖引玉,仅供大家参考。 1. 测试行业发展背景 微软引领的大测试时代 中国最早的对 IT 工程的启蒙和测试定位的探索大多来自于微软。当年的大背景是微软故意放任 Windows 的盗版,并积极的输出他自身的 IT 生态技术栈到中国。中国从政府到民间几乎全部使用了 Windows。中国有大量的微软认证的 V
工作中我们经常需要对应用的页面进行手势操作,比如滑动、长按、拖动等,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
Capability 是一组键值对的集合(比如:"platformName": "Android")。Capability 主要用于通知 Appium 服务端建立 Session 需要的信息。客户端使用特定语言生成 Capabilities,最终会以 JSON 对象的形式发送给 Appium 服务端。 ## Appium底层架构 ![](https://ceshiren.com/uploa
使用 Appium 进行测试时,会产生大量日志,一旦运行过程中遇到报错,可以通过 Appium 服务端的日志以及客户端的日志分析排查问题。 ## Appium Server日志-开启服务 通过命令行的方式启动 Appium Server,下面来分析一下启动日志,日志第一行显示了 Appium 版本信息和服务在本地的运行地址。 ``` $ appium -g appium.log [Appi
Appium 是由 Node.js 来实现的 HTTP 服务,它并不是一套全新的框架,而是将现有的优秀的框架进行了集成,在 Selenium WebDriver 协议(JsonWireProtocol/Restful web service)的基础上增加了移动端的支持,使 Appium 满足多方面的需求。 官方提供更详细的 Appium 结构说明:https://appium.io/docs/e
想要使用 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 平台上是一个特殊的
玩游戏的时候最怕的就是卡顿。排位赛的紧急关头,明明马上就能上一段位,却因为卡顿导致给对方送人头。还把对手送上了王者。引起队友骂声一片。作为测试工程师的你,可以忍? 卡顿测试也是专项测试里的
![](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/(如果没有阿里云