霍格沃兹测试开发是业界领先的测试技术高端教育品牌。愿景:测试开发工程师的黄埔军校
通常获取到元素之后,可以调用 click() 方法来实现对这个元素的点击操作
软件测试最常用的 SQL 命令 | 掌握基本查询、条件查询、聚合查询
技术分享 | App常见bug解析
技术分享 | App测试时常用的adb命令你都掌握了哪些呢?
技术分享 | 想做App测试就一定要了解的App结构
技术分享 | app测试中常用的Android模拟器
技术分享 | web自动化测试-文件上传与弹框处理
技术分享 | web自动化测试-执行 JavaScript 脚本
- INNER JOIN:如果表中有至少一个匹配,则返回行 - LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 - RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 - FULL JOIN:只要其中一个表中存在匹配,则返回行 - INNER JOIN-取出一个员工的员工号、生日、部门名字 - LEFT JOIN-取出一个员工的员工号、生日、部门名字,员工号和生日为必展
![](https://ceshiren.com/uploads/default/original/3X/1/1/1180d8ee878701ec03823fc7852386c8d89f7cda.jpeg) 缩写全称和对应 SQL: 现在有这样一个公司部门人员各个信息的数据库,包含了如下几个表: departments 部门表字段: dept_emp 雇员部门表字段: dept_man
![](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 =
题图引用自 Real Python 接口请求断言是指在发起请求之后,对返回的响应内容去做判断,用来查看是否响应内容是否与规定的返回值相符。 在发起请求后,我们使用一个变量 r 存储响应的内容,也就是 Response 对象。 Response 对象有很多功能强大的方法可以调用,比如直接获取响应头,获取 Unicode 编码后的响应内容,获取二进制的响应内容,获取原始的响应内容等等。 获得响应头
![](https://ceshiren.com/uploads/default/original/3X/f/e/feeae45fbc8cfe74f087da06bc8b37283fc97ddb.jpeg) Requests 是一个优雅而简单的 Python HTTP 库,其实 Python 内置了用于访问网络的资源模块,比如urllib,但是它远不如 Requests 简单优雅,而且缺少了许多
接口测试仅仅掌握 Requests 或者其他一些功能强大的库的用法,是远远不够的,还需要具备能根据公司的业务流程以及需求去定制化一个接口自动化测试框架的能力。所以,接下来,我们主要介绍下接口测试用例分析以及通用的流程封装是如何完成的。 首先在做用例分析之前,可以通过追查公司一年来所有的故障原因,定位问题起因,或者通过与 CTO、产品经理、研发、运维、测试调查,得到质量痛点,还可以分析业务架构、
![](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 的唯一真实来源,可以由项目的多
Blue Ocean 提供了一套可视化操作界面来帮助创建、编辑 Pipeline 任务。 Blue Ocean 特性: - 流水线编辑器:用于创建贯穿始终的持续交付流水线,是一种直观并可视化的流水线编辑器。 - 流水线的可视化:对流水线的可视化表示,提高了全企业范围内持续交付过程的清晰度。 - 流水线的诊断:即刻定位自动化问题,无需持续扫描日志或关注多个屏幕。 - 个性化仪表盘:用户可以自定
做为一个测试开发工程师,日常的工作是需要与先进的测试技术死磕,学习 -> 实践 -> 新技术落地 -> 搞定 bug。用最快的速度、最少的投入来攻克一个个难题。领导觉得是个高潜人才,于是升职加薪做了管理。 但是问题来了。做为一个技术,与一个技术点死磕,似乎是件很简单的事情。但是,做为一个管理,不仅要学会向上管理(和领导去争取资源),还要学会向下兼容(和同事愉快沟通)、还要能够合理管理各方的时
边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。 这个方法其实是在测试实践当中发现,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.js 为例。在本地创建一个工作区即创建一个文件夹,使用 vscode 打开,将 Vue.js 放到工作区目录下。 ## 创建挂载元素 首先创建一个 index.html 的文件,使用 <script src="./vue.js"></script>加载 vue.js,这里的 ./vue.js 路径根据自己 Vue.js 文件位置而定。
Vue.js 是一套用于构建用户界面的渐进式框架,在目前的前端开放中比较流行的前端框架。 Vue 被设计成自底向上的逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或已有项目整合。但是学习 Vue.js 需要一定的 HTML、CSS、和 JavaScript 基础,所以本章节将不对这些基础内容进行讲解。 ## Vue的组件化开发 目前的前端开发中组件化开发成为了潮流
这里的路由是指的页面之间的路径管理器,简单的理解为 vue-router 就是链接路径的管理系统。vue-router 是 Vue.js 官方的路由插件,它和 vue.js 是深度集成的,适合用于构建单页面应用。vue-router 就是将组件映射到路由上面。在 vue-router 单页面应用中,是路径之间的切换,也就是组件的切换。 ## vue router 路由配置 在 Vue 中,路
测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期结果的文档。它的作用其实就是为了测试是否满足某个特定需求。测试用例是指导测试工作进行的依据。 ## 测试用例的组成 标准的测试用例通常由以下几个模块组成: - 用例编号:测试用例的唯一标识。 - 模块:标明被测需求具体属于哪个模块,主要为了更好识别以及维护用例。 - 用例标题:又称之为测试点,就是用一句话来描述测
本章介绍 Web 后端开发中数据持久化技术 TKMyBatis。 ## TKMyBatis简介 TKMybatis 是基于 Mybatis 框架开发的一个工具,内部实现了对单表的基本数据操作,只需要简单继承 TKMybatis 提供的接口,就能够实现无需编写任何 sql 即能完成单表操作。 下面简单介绍下 MyBatis , MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存
从事软件测试行业,每天面对的被测对象都是软件。如果想要更好的去完成测试工作,首先需要对被测对象,也就是对软件要有基本的了解。 ## 软件 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。 程序好理解,就是可以操作的产品。比如 wps、微信、QQ、网页等等这些都是程序。比如说需求文档、设计文档、用户手册这些东西都属于文档。在页面中展示的,还有用户输入的内容这些都是数据。 所以说程
Vuetify 是 Vue 的语义化组件框架,旨在提供整洁、语义化和可重用的组件,使得构建应用程序更方便。 Vuetify 核心是为了提供各种可重复使用的,即插即用并且适合各种项目规格的组件。 - Vue 的语义成分。利用 Vue 的功能组件,所有基于标记的用于援助主部件的类,比如一个 card 题目,可以使用 v-card-title 来处理 - 成型容易。Vuetify 被设想为从底层创建。
软件测试技术是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程。其目的是尽快尽早地发现在软件产品中所存在的各种问题,与用户需求、预先定义的不一致性。检查软件产品中可能存在的 Bug,并且编写缺陷报告,交于开发人员修改。软件测试人员的基本目标是发现软件中的错误。 软件测试技术就相当于是软件测试人员的武器。作为软件测试人员,必须要清楚
Hook 技术需要预先分析目标应用的源代码和逻辑,根据目标测试场景设置目标、逻辑和数据,然后运行时动态的对目标函数参数值、逻辑或者返回值做修改,达到修改现有函数逻辑、实现目标测试场景的目的。 ## Hook的价值 在测试中,虽然通过修改数据以实现测试场景的需求,大部分情况下都可以通过 Mock 技术实现,但是还有一小部分场景,例如需要修改应用内部函数的参数、返回值或运行逻辑等情况,这时就需要用
一般在构建应用时需要访问后端的 API 接口获取后端数据并展示。做这件事的方法有很多种(比如 axios,vue-resource,fetch-jsonp),使用 promise 的 HTTP 客户端 axios 是其中非常流行的一种方式。axios 也支持 RESTful 请求调用规范。 promise 是一个用来传递异步操作信息的对象,主要是用来解决回调的问题。 ## axios介绍 a
软件测试是软件质量保证的关键步骤。越早发现软件中存在的问题,修复问题的成本就越低,软件质量也就越高,软件发布后的维护费用越低。 为了能更好的保障软件质量,在软件测试的实践中,慢慢形成了一些流程用来达到这一目标。下面就来介绍一下常见的测试流程。 ## 传统测试流程 在传统的测试流程中包含了如图所示的步骤。 下面分别介绍下每一步流程的含义。 ### 单元测试 单元测试是对软件中的基本组成单位
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