模拟业务流程+构造各种测试数据,一文带你测试效率提升80%

我们做软件测试的时候,经常需要页面有点数据,特别是涉及到一些数据统计的测试用例的时候,更是需要源源不断的测试数据让前端页面生成对应的报表测试统计的数据正确性。

如果我们通过手工的方式操作业务流程来实现数据的构造的话,少量数据或许还可以,数据一多就会让测试效率直线降低了。

所以作为测试,我们经常需要用一些工具来模拟业务流程,发送一些流量,从而构造出前端页面显示的数据。

那么,可以构造出流量的工具其实很多:

比如接口测试的时候,Jmeter 工具就可以通过 CSV 的方式,读取文件进行数据构造;

比如压力测试的时候,Loadrunner,Jmeter 或者 avalanche 和 Ixia 这些工具,都可以实现不同数量级的数据构造,来实现对产品持续的压力;

比如还可以通过 SQL 脚本来直接在数据库里添加数据,构造海量数据;

......

当然,这些工具和方法,每一个都可以列为一个专业测试领域,比如接口测试、性能测试、大数据测试等;我们今天要讲的方法,是相对来说比较轻量级的一些工具,大家比较容易掌握,也比较容易上手,可以直接通过 Linux 命令发送流量,简单便捷迅速!

♥ Linux 下的流量小工具


要是用 Linux 的流量工具模拟用户流量,需要准备一台 Linux 作为客户端,然后连接上目标软件的服务器,网络拓扑如下:


命令都是在 Linux 里执行,从客户端发送的流量会被送到目标服务器中。

01 ➤ Hping :可以发送ICMP,TCP,UDP 协议的流量,并且可以指定 IP 和端口


其常用参数如下:

-c / --count : 发送数据包的个数

-i /--interval : 包发送间隔时间(单位是毫秒) 缺省时间是 1 秒,此功能在增加传输率上很重

-fast 每秒发 10 个数据包,可用作 dos 攻击

-q/ --quiet: 退出什么都不会输出,除了开始结诉时间

-I --interface interface name 指定借口

-v /--verbose : 显示很多信息

-1/--icmp : ICMP 模式,此模式下,HPING 会发送 ICMP 应答报文

-2 /--udp :UDP 模式,缺省下,HPING 会发送 UDP 报文到主机的 0 端口,可以用--baseport --destport --keep 选项指定其模式

-a/ --spoof : 指定源 IP 地址,也可用于伪造 IP 攻击,防火墙就不会记录真实 IP,回应的包也接收不到了

应用实例:

1、发送普通 TCP 流量:
hping 172.16.127.10 --spoof 172.16.127.2 --quiet --setack 0 -S -p 8080 --data 1024 --count 1

第一个 IP 地址是目的 IP 地址(服务器的 IP 地址),第二个 IP 地址是指定源 IP 地址(一般就是跟服务器连接的客户端的 IP 地址);指定了目标端口为 8080,发包数量为

2、发送普通 UDP 流量:

hping 172.140.3.70 --spoof 172.14.3.70 --quiet --udp -p 5532 --data 1024 --count 100

3、构造出 DOS 攻击,比如 SYN 洪泛攻击:
hping --flood -p 2000 -a 172.20.3.90 --syn -s 2000 172.200.3.90

只发送 syn 包,造成 syn 洪范攻击的流量。或者也可以用以下命令:

hping 172.20.3.66 --setack 0 -p 5000 -S -V -i u100 --flood --rand-source

注意:hping 命令不会建立真正的连接和 server 端交互数据

02 ➤iperf:可以发送 TCP 和 UDP 的流量



常用参数:

-s :以 server 模式启动

-c :host 以 client 模式启动,host 是 server 端地址,比如:

iperf -c 222.35.11.23

-p :指定服务器端使用的端口或客户端所连接的端口,比如:

iperf -s -p 9999

iperf -c 222.35.11.23 -p 9999

-u :使用 udp 协议

-n :指定传输的字节数,比如:

iperf -c 222.35.11.23 -n 100000

-t 测试时间,默认 10 秒,比如:

iperf -c 222.35.11.23 -t 5

-F 指定需要传输的文件

-V 发送 IPv6 的数据,比如:

iperf -c 2001::172:16:127:11 -t 60 -p 8080 -V

应用实例:

在客户机上发送数据到服务器上,指定发送的端口为 8080
iperf -s -p 8080 //服务器机器上启动为服务器模式,并监听 8080 端口
iperf -c 172.16.127.10 -t 60 -p 8080 -n 100 //客户机上启动为客户端器模式,指定目标 IP 地址 和 端口 (172.16.127.10 和 8080 端口),发送 100 字节

03 ➤ curl :一个非常实用的、用来与服务器之间传输数据的工具,可以支持 http 和 https 协议等


常用参数:

url :需要抓取的一到多个 URLs

-v / --verbose :显示更详细的信息,调试时使用

-m/ --max-time : 限制整个 curl 操作的最长时间,单位为秒

-s / --silent: 安静模式, 不要显示进度表或错误消息;

-g : 针对 IPv6 的地址

--retry/ --retry-delay / --retry-max-time :失败重试次数/重试间隔时间/最大重试时间;

--interface: 使用指定的网卡接口访问,可以跟接口名字或者 IP 地址

***curl --interface eth0 http://aiezu.com ***

curl --interface 10.0.0.101 http://aiezu.com

-0/--http1.0 : 强制 curl 使用 HTTP 1.0 而不是使用默认的 HTTP 1.1

应用实例:

1、获取一个 http 网站的资源,指定接口

curl http://172.140.3.70/foooo/ccn1.html -v --max-time 1 --interface 172.14.3.70
2、获取一个 https 网站的资源,并使用 ipv6 的指定接口
curl -g -k https://[2001::172:16:127:11] -v --max-time 1 --interface 2001::172:16:127:2

3、配合循环一起使用
while true;do curl http://172.140.3.70/foooo/ccn1.html -v --max-time 1 --interface 172.14.3.70; done

04 ➤ dig:是一个在 Linux 命令行模式下查询 DNS 的命令,可以发送 DNS 的流量


应用实例:

1、发送 TCP 为底层协议的 DNS 请求

dig @172.16.127.10 www.a10.com -4 +time=1 +tries=3 -b 172.16.127.2 +tcp

2、发送 UDP 为底层协议的 DNS 请求
dig @172.16.127.10 www.a10.com -4 +time=1 +tries=3 -b 172.16.127.2

3、发送 IPv6 地址的 DNS 请求
dig -6 @2001::172:16:127:11 test.a10.com +time=1 -b 2001::172:16:127:2

05 ➤ wget :是 Linux 中的一个下载文件的工具,可以支持 http/https 协议 ftp/tftp 协议等


应用实例:

1、从 ftp 服务器上下载资源

wget ftp://172.16.127.10/pub/2k.html

2、从 IPv6 的 ftp 服务器上下载资源,并启动被动模式

wget -6 ftp://[2001::172:16:127:11]/pub/2k.html -P /root --no-passive(关闭主动模式)
3、使用 wget -c 重新启动下载中断的文件

wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

4、使用 wget -b 后台下载

wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

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

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

相关文章

【Cisco Packet Tracer】子网划分的计算及实验

子网划分:Internet组织机构定义了五种IP地址,有A、B、C三类地址。A类网络有126个,每个A类网络可能有16777214台主机,它们处于同一广播域。而在同一广播域中有这么多节点是不可能的,网络会因为广播通信而饱和&#xff0…

在 ArcGIS 软件中添加左斜宋体(东体)的方法与步骤

河流水系在作图时一般设置为左斜宋体(东体)、蓝色,比如黄河、青海湖等,如下图所示: 标准地图水系注记 下面讲解如何在 ArcGIS 软件中添加左斜宋体(东体),首先需要下载左斜宋体&#…

【开源】基于JAVA语言的校园疫情防控管理系统

项目编号: S 037 ,文末获取源码。 \color{red}{项目编号:S037,文末获取源码。} 项目编号:S037,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、…

《管家婆》辉煌2005+(V4.0)简单教程

《管家婆》辉煌2005(V4.0)简单教程 呉師傅 运行环境:   操作系统推荐使用Win2000(32位)、WinXP(32位)、Win7(位) 兼容:Win7(64位&#xff09…

MySQL的数学函数

在MySQL中,有许多内置的数学函数可以帮助我们进行各种复杂的数学计算。这些函数包括round、ceil、floor、truncate、mod和pow等。下面,我将详细介绍这些函数的用法。 1.round(x,保留位数) round(x,保留位数)函数:用于将数字x四舍五入到指定…

阿里云MySQL从 2003->1251->1396

目的 由于需要在阿里云的实例中装MySQL数据库,安装前期(本地访问)还是挺顺利的,但是到了远程连接的时候,却出现了一系列的Bug,以为是没有 实名认证没有备案 的原因导致的,但是后来…

vue中中的动画组件使用及如何在vue中使用animate.css

“< Transition >” 是一个内置组件&#xff0c;这意味着它在任意别的组件中都可以被使用&#xff0c;无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发&#xff1a; 由 v-if 所触发的切换由 v-show 所触…

Kubernetes中PostgreSQL的推荐方法

1*HDp3_wvu78Vaa-4C9NFHaQ.gif 你是否曾听说过避免在Kubernetes中运行数据库的建议&#xff1f;有人认为Kubernetes不适合有状态的应用程序&#xff0c;但这些说法是否属实&#xff1f;让我们深入探讨并挑战这些说法。 Kubernetes&#xff1a;有关有状态工作负载的误解平台 在涉…

http请求签名生成算法

算法文档&#xff1a; 签名生成算法 签名生成步骤 步骤1、请求参数拼接为有序字符串 步骤2、将签名字符串使用MD5摘要算法生成MD5值 步骤3、将生成的签名追加到原参数后 lua实现 local md5 require("md5") -- 使用 Lua 的 md5 库&#xff0c;你可能需要安装相应的库…

Zabbix 6.0部署+自定义监控项+自动发现与自动注册+部署zabbix代理服务器

Zabbix 6.0 Zabbix 6.0一、关于zabbix1、什么是zabbix2、zabbix工作原理3、zabbix 6.0 特性4、zabbix 6.0 功能组件 二、Zabbix 6.0 部署1、 部署 zabbix 服务端(1) 部署 Nginx PHP 环境并测试(2) 部署数据库(3) 编译安装 zabbix server 服务端(4) 部署 Web 前端&#xff0c;进…

Java核心知识点整理大全27-笔记(已完结)

30. 云计算 30.1.1. SaaS SaaS 是 Software-as-a-Service&#xff08;软件即服务&#xff09; 30.1.2. PaaS PaaS 是 Platform-as-a-Service 的缩写&#xff0c;意思是平台即服务。 把服务器平台作为一种服务提供的 商业模式。通过网络进行程序提供的服务称之为 SaaS(Softw…

编写bat脚本执行msyql建库sql

使用cmd命令执行(windows下) 【MySQL的bin目录】\mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】&#xff0c;示例&#xff1a; D:\mysql\bin\mysql –uroot –p123456 -Dtest<d:\test\ss.sql 注意&#xff1a; A、如果在sql脚本文件中使用了use 数据库&…

什么是CAS, 什么是AQS

文章目录 什么是CAS, 什么是AQSCASAQS 什么是CAS, 什么是AQS CAS AQS AQS 全称是AbstractQueuedSynchronizer&#xff0c; 是juc 下一个核心的抽象类&#xff0c;用于构建各种同步器和锁 比如我们熟悉的 ReentrantLock、ReadWriteLock、CountDownLatch等等是基于AQS. 首先在…

python第3天之函数

深入理解 Python 中的函数 简介 在编程中&#xff0c;函数是组织和复用代码的基本单元。Python 作为一门高级编程语言&#xff0c;提供了丰富的函数特性来帮助开发者编写清晰、模块化和高效的代码。在本文中&#xff0c;我们将深入探讨 Python 函数的定义、调用、参数、返回值…

接口响应时长几十秒问题排查以及解决

目录 背景 解决方案 总结 背景 线上系统运行几年后&#xff0c;被项目上提bug&#xff0c;有些接口响应很慢&#xff0c;加载页面要几十秒 解决方案 1、步骤一&#xff0c;加索引 性能优化成本高&#xff0c;需要开发周期&#xff0c;临时方案先分析慢sql&#xff0c;通过增…

目标检测——Faster R-CNN算法解读

论文&#xff1a;Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 作者&#xff1a;Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun 链接&#xff1a;https://arxiv.org/abs/1506.01497 代码&#xff1a;https://github.com/rbgirsh…

Docker diff 命令

docker diff&#xff1a;检查容器里文件结构的更改。 语法 docker diff [OPTIONS] CONTAINER实例 查看容器mymysql的文件结构更改&#xff1a; docker diff mymysql##效果如下&#xff1a; A /logs A /mysql_data C /run C /run/mysqld A /run/mysqld/mysqld.pid A /run/my…

(C)一些题(7)

1.若要说明一个类型名STP,使得定义语句STP s;等价于char *s;, 以下选项中正的是( )。 A.typedef STP char *s B.typedef *char STP C.typedef STP *char Dhypeder char *STP 分析&#xff1a;&#xff08;1&#xff09;先按定义变量的方法写出定义体(char *s;) ②将变量名换成…

二叉树链式结构的实现——C语言

目录 一、提前说明 二、二叉树的遍历 2.1前序遍历 2.2中序遍历 2.3后序遍历 2.4代码 三、二叉树结点个数 3.1整体思路 3.2代码 四、二叉树叶子结点个数 4.1整体思路 4.2代码 五、二叉树的高度(深度) 5.1整体思路 5.2代码 六、二叉树第k层节点个数 6.1整体…

免费采集工具推荐,好文章值得收藏

采集工具的作用 在互联网的海洋中&#xff0c;有许多强大的免费采集工具&#xff0c;它们为用户提供了便捷、高效的方式&#xff0c;帮助用户从各种网站中收集、整理所需的信息。这些工具不仅广泛应用于市场研究、竞争情报等商业领域&#xff0c;同时也服务于学术研究、个人兴…