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、讲策略:手工和自动测试并用,讲求成本效益(手工测试是基础,自动化测试支持持续集成和持续交付)

总结:

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

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

软件测试面试文档

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32--7针0.96寸OLED屏幕显示(4线SPI)

本文介绍基于STM32F103C8T60.96寸OLED(7针)的显示(完整程序代码见文末链接) 一、简介 OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光…

C++ 设计模式之桥接模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【简介】什么是桥接模式 桥接模式(Bridge Pattern)是⼀种结构型设计模式,它的U…

倍福嵌入式PLC开发团队建设

倍福嵌入式PLC开发工程师确实比较难找,这是因为这个领域需要具备丰富的专业知识和技能,而且经验越丰富的工程师越难找到。以下是一些可能导致倍福嵌入式PLC开发工程师难找的原因: 具备相关技能的工程师数量相对较少:嵌入式PLC开发…

XUbuntu22.04之免费思维导图工具(二百零六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Kafka集群的安装与配置

一、安装JDK 1、在usr目录下新建Java目录,然后将下载的JDK拷贝到这个新建的Java目录中1 创建目录命令:mkdir /usr/java 2、进入到Java目录中解压下载的JDK 解压命令:tar -zxvf jdk-18_linux-x64_bin.tar.gz 在1主机上,将安装包…

SQL-用户管理与用户权限

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

FPGA之LUT

由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构。LUT本质上就是一个RAM.它把数据事先写入RAM后,每当输入一个信号就…

【Python】tensor格式数据转为图像,并保存图像详解和示例

在项目中遇到一个tensor格式的数据,要保存为图像,此文对转换过程通过示例分享,以记录学习过程和帮助大家遇到同类问题时使用。 import torch import cv2 import numpy as np# 创建一个示例张量(tensor) input_tensor …

纯c实现顺序表 数据结构大全

我们已经知道数组是连续的内存地址,顺序表是由数组为基础的一种数据结构,拥有比数组更多的功能,在概念上属于线性结构,跟链表不同的是,顺序表在物理结构上也是线性的 什么是数据结构? 当我们想要使⽤⼤量使…

云计算平台建设总体技术方案详细参考

第1章. 基本情况 1.1. 项目名称 XX 公司 XX 云计算平台工程。 1.2. 业主公司 XX 公司。 1.3. 项目背景 1.3.1. XX 技术发展方向 XX,即运用计算机、网络和通信等现代信息技术手段,实现政府组织结构和工作流程的优化重组,超越时间、空间…

开源28181协议视频平台搭建流程

最近项目中用到流媒体平台,java平台负责信令部分,c平台负责流媒体处理,找了评分比较好的开源项目 https://gitee.com/pan648540858/wvp-GB28181-pro 流媒体服务基于 c写的 https://github.com/ZLMediaKit/ZLMediaKit 说明文档:h…

Visual Studio Code常用设置

此处用于记录下本人所使用 VScode 的使用习惯。其中主要包括:界面,主题,光标,文件保存等选项。 VSCode 用户区设置 相关介绍命令行方式进行配置可视化组件方式进行配置 更新 相关介绍 基本原理: Visual Studio Code 会…

【电子通识】各国电源插头标准和电压标准

在使用仪器时,通常会在使用之前去看下规格书。比如安装指南、快速使用指南等等来提取我们需要的信息。 一般大型的仪器供应商会卖往不同的国家,所以都会配置多种电源线。如下所示规格书中对仪器的电源线种类进行了说明。其中有中国、美国、加拿大、日本…

设计模式入门

0. 类图 1. 设计原则 1.单一职责原则:每个类只有一个功能 2.开放封闭原则:模块和函数应该对扩展开放(对提供方),对修改关闭(对使用方) 3.里氏代换原则:子类拥有父类的所有方法和属性,从而可以减少创建类的工作量 4.依…

20240115在ubuntu20.04.6下给GTX1080M显卡安装驱动程序和CUDA

20240115在ubuntu20.04.6下给GTX1080M显卡安装驱动程序和CUDA 2024/1/15 18:05 百度搜索:ubuntu gtx1080m cuda https://blog.csdn.net/wb4916/article/details/129462103 20230311给Ubuntu18.04下的GTX1080M安装驱动 https://www.cnblogs.com/djiankuo/p/5886605.h…

每日一练:LeeCode-144、145、94.二叉树的前中后序遍历【二叉树】

本文是力扣LeeCode-144、145、94.二叉树的前中后序遍历 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode前序遍历、中序遍历、后序遍历。 给你二叉树的根节点 root ,返回它节点值的 前序遍历。 给定一个二叉树的根…

概率论与数理统计————3.随机变量及其分布

一、随机变量 设E是一个随机试验,S为样本空间,样本空间的任意样本点e可以通过特定的对应法则X,使得每个样本点都有与之对应的数对应,则称XX(e)为随机变量 二、分布函数 分布函数:设X为随机变量…

C# wpf 实现任意控件(包括窗口)更多调整大小功能

WPF拖动改变大小系列 第一节 Grid内控件拖动调整大小 第二节 Canvas内控件拖动调整大小 第三节 窗口拖动调整大小 第四节 附加属性实现拖动调整大小 第五章 拓展更多调整大小功能(本章) 文章目录 WPF拖动改变大小系列前言一、添加的功能1、任意控件Drag…

Flink 处理函数(1)—— 基本处理函数

在 Flink 的多层 API中,处理函数是最底层的API,是所有转换算子的一个概括性的表达,可以自定义处理逻辑 在处理函数中,我们直面的就是数据流中最基本的元素:数据事件(event)、状态(st…

基于SSM的项目监管系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…