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、讲策略:手工和自动测试并用,讲求成本效益(手工测试是基础,自动化测试支持持续集成和持续交付)
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

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



相关文章:
PHP项目如何自动化测试
开发和测试 测试和开发具有同等重要的作用 从一开始,测试和开发就是相向而行的。测试是开发团队的一支独立的、重要的支柱力量。 测试要具备独立性 独立分析业务需求,独立配置测试环境,独立编写测试脚本,独立开发测试工具。没有…...
WEB 3D技术 three.js 3D贺卡(1) 搭建基本项目环境
好 今天 我也是在网上学的 带着大家一起来做个3D贺卡 首先 我们要创建一个vue3的项目、 先创建一个文件夹 装我们的项目 终端执行 vue create 项目名称 例如 我的名字想叫 greetingCards 就是 vue create greetingcards因为这个名录 里面是全部都小写的 然后 下面选择 vue3 …...
短视频IP运营流程架构SOP模板PPT
【干货资料持续更新,以防走丢】 短视频IP运营流程架构SOP模板PPT 部分资料预览 资料部分是网络整理,仅供学习参考。 抖音运营资料合集(完整资料包含以下内容) 目录 抖音15秒短视频剧本创作公式 在抖音这个短视频平台上&#…...
python爬虫之线程与多进程知识点记录
一、线程 1、概念 线程 在一个进程的内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”叫做线程 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指…...
基于Java (spring-boot)的停车场管理系统
一、项目介绍 基于Java (spring-boot)的停车场管理系统、预订车位系统、停车缴费系统功能: 登录、注册、后台首页、用户信息管理、车辆信息管理、新增车辆、车位费用设置、停泊车辆查询、车辆进出管理、登录日志查询、个人中心、预定停车位、缴费信息。 适用人群&…...
微软Office 2019 批量授权版
软件介绍 微软办公软件套件Microsoft Office 2019 专业增强版2024年1月批量许可版更新推送!Office2019正式版2018年10月份推出,主要为多人跨平台办公与团队协作打造。Office2019整合对过去三年在Office365里所有功能,包括对Word、Excel、Pow…...
ChatGLM2-6B 大语言模型本地搭建
ChatGLM模型介绍: ChatGLM2-6B 是清华 NLP 团队于不久前发布的中英双语对话模型,它具备了强大的问答和对话功能。拥有最大32K上下文,并且在授权后可免费商用! ChatGLM2-6B的6B代表了训练参数量为60亿,同时运用了模型…...
WindowsServer安装mysql最新版
安装 下载相应mysql安装包: MySQL :: Download MySQL Installer 选择不登陆下载 双击运行下载好的mysql-installer-community-*.*.*.msi 进入类型选择页面,本人需要mysql云服务就选择了server only server only(服务器)&#x…...
gin切片表单验证
在Gin中对切片进行表单验证的步骤与对其他类型的字段进行验证类似。以下是一些基本步骤,我们可以根据具体的需求进行调整: 定义结构体: 创建一个结构体,用于存储表单数据。确保结构体中的字段类型与你预期的表单数据类型一致。 使…...
openssl3.2 - 官方demo学习 - certs
文章目录 openssl3.2 - 官方demo学习 - certs概述笔记官方的实验流程mkcerts.sh - 整理ocsprun.sh - 整理ocspquery.sh - 整理从mkcerts.sh整理出来的27个.bata1_create_certificate_directly.cmda2_Intermediate_CA_request_first.cmda3_Sign_request_CA_extensions.cmda4_Ser…...
Datawhale 大模型基础理论 Day1 引言
开源链接如下:https://github.com/datawhalechina/so-large-lm/blob/main/docs/content/ch01.md 语言模型的概念:即能够赋予每个有意义的词(token)以一定的概率的一个函数的集合。 语言模型可以被用来评估输入的质量,…...
HarmonyOS应用开发学习笔记 UIAbility组件与UI的数据同步 EventHub、globalThis
1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器:定义组件重用样式 Extend装饰器:定义扩展组件样式 5、HarmonyOS 应用开发…...
leetcode每日一题44
130. 被围绕的区域 图论 dfs/bfs dfs代码框架 void dfs(参数) {if (终止条件) {存放结果;return;}for (选择:本节点所连接的其他节点) {处理节点;dfs(图,选择的节点); // 递归回溯,撤销处理结果} }思路:本题要求找到被x围绕的陆…...
idea写sql语句快捷键提醒,mapper注解开发,mybatis
第一步:注入SQL语言 1.显示上下文操作(没有这个选项的话就选中sql然后直接alt回车快捷键)2.注入语言或引用 3.mysql 第二步:配置MySQL数据库连接 1.首先点击侧边的数据库,再点击上面的加号 2.点击数据源ÿ…...
002 Golang-channel-practice
第二题: 创建一个生产器和接收器,再建立一个无缓冲的channel。生产器负责把数据放进管道里,接收器负责把管道里面的数据打印出来。这里我们开5个协程把数据打印出来。 直接上代码! package mainimport ("fmt" )func …...
MFC为对话框资源添加类
VC6新建一个对话框类型的工程; 建立之后资源中默认有2个对话框,一个是主对话框,About这个是默认建立的关于版权信息的; 然后主对话框有对应的.h和.cpp文件;可以在其中进行编程; 默认建立的有一个 关于 对话框; 在资源中新插入一个对话框,IDD_DIALOG1是对话框ID; 新加…...
SpringBoot新手入门完整教程和项目示例
文章目录 SpringBoot新手入门完整教程和项目示例1、SpringBoot简介2、Spring Boot的核心功能?(优点)3、SpringBoot与SpringMVC 的区别?4、构建SpringBoot项目4.1、在官网自动生成下载spring boot项目4.2、手动使用maven创建Spring…...
PHP留言板实现
完整教程PHP留言板 登陆界面 一个初学者的留言板(登录和注册)_php留言板登录注册-CSDN博客 留言板功能介绍 百度网盘 请输入提取码 进入百度网盘后,输入提取码:knxt,即可下载项目素材和游客访问页面的模板文件。 &…...
ssm+vue的物流配送人员车辆调度管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项项目。
演示视频: ssmvue的物流配送人员车辆调度管理系统的设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller&…...
day1·算法-双指针
今天是第一天,GUNDOM带你学算法,跟上我的节奏吗,一起闪击蓝桥杯! 正文展开,今天先上点小菜供大家想用,如有错误或者建议直接放评论区,我会一个一个仔细查看的哦。 双方指针问题一般是在数组中…...
20吨燃气蒸汽锅炉实力厂家/支持上门安装调试
燃气蒸汽锅炉,认准源头实力厂家,不仅能买到品质过硬的设备,更能享受到省心便捷的上门安装调试服务,免去自行安装的繁琐与隐患,让设备快速投入平稳运行。我们作为深耕锅炉制造行业的实力厂家,具备正规生产资…...
新型电力系统数据底座选型:源网荷储四侧时序数据库实战应用
文章目录 一、新型电力系统到底哪里变了?二、电力新业态带来的数字化挑战首先是采集数据的挑战其次是关于实时性的挑战最后是关于计算复杂度的挑战 三、新需求下传统架构已显疲态数据存储割裂实时计算与离线分析的割裂计算引擎分散,维护成本高规则变化时…...
AR.js终极指南:在Web浏览器中实现高效增强现实的完整解决方案
AR.js终极指南:在Web浏览器中实现高效增强现实的完整解决方案 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js AR.js是一个轻量级JavaScript库࿰…...
Cadence原理图网表导入Allegro PCB的5个关键步骤与避坑指南(2024最新版)
Cadence原理图网表导入Allegro PCB的5个关键步骤与避坑指南(2024最新版) 在电子设计自动化(EDA)领域,Cadence和Allegro的协同工作流程是硬件工程师日常开发的核心环节。网表作为连接原理图设计与PCB布局的桥梁…...
nlp_structbert_sentence-similarity_chinese-large实战教程:本地知识库向量化检索完整指南
nlp_structbert_sentence-similarity_chinese-large实战教程:本地知识库向量化检索完整指南 你是不是经常遇到这样的问题:面对公司内部堆积如山的文档、产品手册、客服记录,想找某个特定信息时,却像大海捞针一样困难?…...
基于Python的流浪动物救助平台毕业设计
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在构建一个基于Python的流浪动物救助平台,以实现流浪动物的有效救助与管理工作。具体研究目的如下: 首先,通过构建流…...
RWKV7-1.5B-g1a多语言生成能力展示:中英日韩混合提示词真实输出效果对比
RWKV7-1.5B-g1a多语言生成能力展示:中英日韩混合提示词真实输出效果对比 1. 模型简介与核心能力 rwkv7-1.5B-g1a是基于新一代RWKV-7架构开发的多语言文本生成模型,特别优化了中英日韩四种语言的混合处理能力。这个1.5B参数的版本在保持轻量化的同时&am…...
VMware虚拟机安装Ubuntu教程:创建独立的Qwen3-14B-AWQ模型测试环境
VMware虚拟机安装Ubuntu教程:创建独立的Qwen3-14B-AWQ模型测试环境 1. 为什么需要虚拟机测试环境 在测试大语言模型时,使用虚拟机可以避免污染宿主机环境。特别是像Qwen3-14B-AWQ这样的模型,依赖项复杂,直接在主机上安装可能会与…...
多模态扩展实验:OpenClaw+Qwen3-32B处理图片描述生成
多模态扩展实验:OpenClawQwen3-32B处理图片描述生成 1. 实验背景与动机 最近在探索如何将OpenClaw的自动化能力扩展到视觉领域。作为一个长期依赖文本交互的框架,OpenClaw能否结合多模态大模型处理图像任务?这引发了我的兴趣。恰好手头有台…...
保姆级教程:用snntorch在MNIST上训练你的第一个脉冲神经网络(附完整代码)
从零开始:用snntorch构建你的第一个脉冲神经网络手记 第一次接触脉冲神经网络(SNN)时,我被它模拟生物神经元放电的特性深深吸引。与传统人工神经网络不同,SNN通过离散的脉冲信号传递信息,更接近人脑的工作机…...
