PHP项目如何自动化测试

开发和测试
测试和开发具有同等重要的作用

从一开始,测试和开发就是相向而行的。测试是开发团队的一支独立的、重要的支柱力量。

测试要具备独立性

独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具。没有独立性,就没有一切。

测试要有编程能力

测试独立性必然要求测试要有编程知识,要懂代码(能看代码,会写代码),代码是开发团队的沟通利器!

能看代码,就可以直接看开发人员写的代码逻辑,有点 Code Review 的意思了;

会写代码,测试自动化就不是问题

持续交付是我们的方向
自动化测试

持续集成

自动化部署

自动化测试金字塔

Test Automation Pyramid(测试自动化金字塔)

UI Tests

也称 GUI 测试,我们暂时不涉猎这部分的自动化测试。

API Tests

这是重点。我们当下提供的都是 HTTP API,相对稳定,适合自动化测试。

UNIT Tests

在 iOS 团队有实践基础,随着测试自动化进展,后端会自然接入进来。

据 Google软件测试之道介绍,谷歌的经验比例是70/20/10,即:70% 的 Small Tests,20% 的 Medium Tests,10% 的 Large Tests(对应UNIT / INTEGRATION / SYSTEM | End-to-End)。

自动化测试
如同业务功能测试是测试的基本能力一样,自动化测试也正在成为测试的基本能力。

测试分类
前端 App 功能以手工测试为主;

前端 App 性能以工具测试为主;

后端接口拟全部实现自动化测试;

后端性能暂时通过静态分析在设计时予以考虑。

App 功能以手工测试为主
App 功能测试以手工为基础,可以继续实施以测试用例为核心的策略。
前端重在交互和展现,所以功能逻辑和 UI 测试必不可少。

App 性能以工具测试为主
对于App,则要使用工具进行性能测试,性能在用户体验中是蛮重要的,而性能的改善需要开发长期的努力。

要不断发现、开发和学习使用各类工具,以帮助我们更有效率地完成任务。开发工具时鼓励使用 PHP 和 Python来实现。

服务端接口自动化测试
对于服务端提供的 HTTP 接口,建议使用 PHPUnit 技术实现自动化测试。

测试用例

接口测试用例的设计思路直接体现在测试类和方法前的描述即可,不再需要在禅道上体现。

PHP 测试脚本

测试人员要学习 PHP 脚本语言,进行测试开发编程,逐步提高编程水平,在人员招聘上也要有意识地搜寻测试开发人才。

测试类和方法的设计开发是逐步精化的

每个方法实现一个测试用例,每个方法都可以随着开发代码的完善而逐步完善,和开发相向而行,要体现尽早测试理念。

测试套件(test suite)的编写要满足不同测试类型的需要

要能体现:smoke testing、sanity testing、regression testing等等。

鼓励就 PHPUnit 和开发人员进行深度沟通、互相学习

PHPUnit 不仅仅可以用来进行接口测试,其本意是基于代码的单元测试。开发人员应当使用 PHPUnit 对重要的类和组件进行充分测试,切实提升拟交付测试的API接口的质量。

自动化测试的ROI
敏捷开发条件下,迭代模式使得代码量逐步累加,越靠后的迭代我们所面临的整合测试压力、测试任务就越大。

敏捷测试需要测试人员能够随时启动自动化的回归测试对马上发布的迭代代码进行快速验证。

持续集成
一旦实现服务端接口自动化测试脚本,则可以逐步实现持续集成。svn上服务端代码的任何变化,都可以自动启动接口自动化测试,对于任何错误都即时通知开发人员。如果测试通过,则自动和 App 进行集成测试。

自动化部署
有了自动化测试和持续集成这两个作为前提,经过自动化部署,就可以达到持续交付。本文不展开讨论此话题。

尽早测试理念
什么时候是合适的测试时机?答案是:尽早测试。扩展开来就是:

尽早测试 Test early
尽早测试,尽早集成,逐步集成,Small Tests 做的越多越主动。

经常测试 Test often

这时候,自动化测试的成本效益优势就体现出来了。

充分测试 Test enough

从产品构想开始,一直到线上运营、用户反馈,随时都是测试的好时机。只不过,不同的阶段,测试内容有所不同。

测试开发人员的基本要求
1、有理念:理解测试开发,会反向思维、探索测试

2、懂业务:了解用户,会澄清需求

3、懂代码:能看代码,会写代码

4、用工具:善用工具,会开发工具;

5、讲策略:手工和自动测试并用,讲求成本效益(手工测试是基础,自动化测试支持持续集成和持续交付)

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/324234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高效视频剪辑:视频合并让视频焕然一新,添加背景音乐更动听

随着社交媒体和数字内容的普及,视频剪辑已成为一项常用的技能。除了基本的剪辑技巧外,添加合适的背景音乐也是提升视频质量的方法。下面来看云炫AI智剪的高效视频剪辑技巧——如何批量合并视频,添加动听的背景音乐。 视频合并后的效果展示&a…

JSP-概念

一、引子 很多读者可能听过JSP,并且知道这是一门过时的技术了。在Spring,SpringBoot已经成为主流的今天,笔者为什么还要介绍JSP的相关内容呢?笔者常常提到一个概念:理解一门技术,要理解这个技术为什么产生…

城乡规划怎么转型智慧智慧城市?

智慧城市不仅仅包含“城市”,智慧城市的核心是数字化。 智慧城市的概念包括:智慧医疗、智慧交通、智慧园区、智慧物流等等所有涉及到数字化管理的各行各业。 智慧城市的发展是趋势,因此城规专业从事“智慧城市”相关的工作都比较合适。 那…

Mindspore 公开课 - BERT

BERT BERT模型本质上是结合了 ELMo 模型与 GPT 模型的优势。 相比于ELMo,BERT仅需改动最后的输出层,而非模型架构,便可以在下游任务中达到很好的效果;相比于GPT,BERT在处理词元表示时考虑到了双向上下文的信息&#…

Arduino| 串口通讯、入门示例

Arduino串口通讯 为什么要做串口通讯串口通讯原理串口通讯函数字符串常用函数串口通讯示例入门示例测试串口通讯复杂指令处理 为什么要做串口通讯 串口通讯:串口通信是用来在不同电子设备之间交换数据用的技术,其实就是要实现不同电子设备之间的“通讯对…

与react的初定情素

前要: 努力打好基础才能学好它!由于我使用vue已经3年了!来学习react,所以我写的只要我自己看得懂的就行!学这我自己会与vue的语法做对比的! 目录概览 基本表达式{}列表渲染条件渲染事件的绑定组件useState …

Linux入门级常用命令学习笔记

以下命令是我跟着编程界的大佬鱼皮学习Linux时用的命令,我把它都记下来,权当作笔记,可供自己后期反复练习使用,让我们学习一下最基本的Linux命令吧。 一、Linux实战命令 在dos下 【ssh 服务器ip】可以连接服务器,输入…

HiddenDesktop:一款针对Cobalt Strike设计的HVNC隐藏桌面工具

关于HiddenDesktop HiddenDesktop是一款针对Cobalt Strike设计的HVNC隐藏桌面工具,该工具专为红队研究人员设计,支持通过远程桌面会话来与目标远程设备执行交互。 值得一提的是,该工具并没有使用到VNC协议,但却能够实现类似的效…

玖章算术NineData通过阿里云PolarDB产品生态集成认证

近日,玖章算术旗下NineData 云原生智能数据管理平台 (V1.0)正式通过了阿里云PolarDB PostgreSQL版 (V11)产品集成认证测试,并获得阿里云颁发的产品生态集成认证。 测试结果表明,玖章算术旗下NineData数据管理平台 (V1.0&#xff…

网络安全等级保护测评规划与设计

笔者单位网络结构日益复杂,应用不断增多,使信息系统面临更多的风险。同时,网络攻防技术发展迅速,攻击的技术门槛随着自动化攻击工具的应用也在不断降低,勒索病毒等未知威胁也开始泛滥。基于此,笔者单位拟进…

Redis图形界面闪退/错误2系统找不到指定文件/windows无法启动Redis/不是内部或外部命令,也不是可运行的程序

Redis图形界面闪退/错误2系统找不到指定文件/windows无法启动Redis/不是内部或外部命令,也不是可运行的程序 我遇到了以上的问题。 其实,最重要的原因是我打开不了another redis desktop mannager,就是我安装了之后,无法打开它…

基于模型的系统工程MBSE-SysML

基于模型的系统工程MBSE MBSE是一种通过构建标准模型,用于支持系统需求、分析、设计、检验与确认活动,这些活动从概念设计阶段开始,贯穿整个开发过程及后续的生命周期阶段。 MBSE能带来哪些价值 需求分析阶段 需求的标准化描述:避…

5.1 内容管理模块 - 课程预览、提交审核

内容管理模块 - 课程预览、提交审核 文章目录 内容管理模块 - 课程预览、提交审核一、课程预览1.1 需求分析1.2 freemarker 模板引擎1.2.1 Maven 坐标1.2.2 freemaker 相关配置信息1.2.3 添加模板 1.3 测试静态页面1.3.1 部署Nginx1.3.2 解决端口问题被占用问题1.3.3 配置host文…

JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、Java虚拟机栈 1.栈帧的组成 2.局部变量表 3.操作数栈 4.帧数据 总结 前言 JVM作为Java程序的运行环境,其负责解释和执行字节码,管理…

存储的基本架构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、存储的需求背景二、自下而上存储架构总结 一、存储的需求背景 1、人的身份信息需要存储 这种信息可以用关系型数据库,例如mysql,那种表…

多线程并发与并行

📑前言 本文主要是【并发与并行】——并发与并行的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&…

【JavaScript】事件监听:键盘事件

目录 一、keydown:按下键盘上的任意键时触发。 二、keyup:释放键盘上的任意键时触发。 三、keypress:在按下并释放能够产生字符的键时触发(不包括功能键等)。 四、input:在文本输入框或可编辑元素的内容…

基本BGP配置试验 :配置 IBGP 和 EBGP

一、预习: BGP:Border Gateway Protocol 没有精妙的算法,但能承载大量的路由,它不生产路由,它是路由的搬运工 使用TCP做为传输层协议,端口号179,使用触发式路由更新 1. BGP路由…

用Pytorch实现线性回归模型

目录 回顾Pytorch实现步骤1. 准备数据2. 设计模型class LinearModel代码 3. 构造损失函数和优化器4. 训练过程5. 输出和测试完整代码 练习 回顾 前面已经学习过线性模型相关的内容,实现线性模型的过程并没有使用到Pytorch。 这节课主要是利用Pytorch实现线性模型。…

DNS主从服务器配置

主从服务器配置: (1)完全区域传送:复制整个区域文件 #主DNS服务器的配置【主dns服务器的ip地址为192.168.168.129】 #编辑DNS系统配置信息(我这里写的增加的信息,源文件里面有很多内容) [root…