当前位置: 首页 > news >正文

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

  • 📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢交流讨论:欢迎加入我们一起学习!
  • 📢资源分享:耗时200+小时精选的「软件测试」资料包
  • 📢 最困难的时候,也就是我们离成功不远的时候!

目录

    • 前言
    • 最后

前言

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

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

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

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

比如接口测试的时候,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 端交互数据

在这里插入图片描述

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


最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

相关文章:

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

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...

【linux】 Shell函数返回值

概述 return 返回 shell中通过return返回是有限制的,必须是数字,最大返回255,超过255,则从0开始计算。 通常仅返回0或1;0表示成功,1表示失败。通过echo 直接返回。 在没有return 语句,函数将以…...

面试:容器技术

目录 为什么需要 DevOpsDocker 是什么?Docker 与虚拟机有何不同?什么是 Docker 镜像?什么是 Docker 容器?Docker 容器有几种状态?解释一下 Dockerfile 的 ONBUILD 指令?什么是 Docker Swarm?如何…...

在Linux中nacos集群模式部署

一、安装 配置nacos 在Linux中建立一个nacos文件夹 mkdir nacos 把下载的压缩包拉入刚才创建好的nacos文件中 解压 tar -zxvf nacos-server-1.4.1\.tar.gz 修改配置文件 进入nacos文件中的conf文件的cluster.conf.example 修改cluster.conf.example文件 vim cluster.conf.exa…...

7天入门python系列之爬取热门小说项目实战,互联网的东西怎么算白嫖呢

第七天 Python项目实操 编者打算开一个python 初学主题的系列文章,用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python,这是一个紧凑的学习计划。但并不是不可完成的。 学到第7天说明你已经对python有了一…...

产品经理墨刀学习----注册页面

我们做的产品是一个校园论坛学习开发系统,目前才开始学习。 (一)流程图 (二)简单墨刀设计--注册页面 (1)有账号 (a)直接登录: (b)忘…...

算法通关村——归并排序

归并排序 1、归并排序原理 ​ 归并排序是一种很经典的分治策略。 ​ 归并排序(MERGE-SORT)简单来说就是将大的序列先视为若干小的数组,分成几个比较小的结构,然后是利用归并的思想实现的排序方法。将一个大的问题分解成一些小的问题分别求解&#xff…...

SDL2 播放音频数据(PCM)

1.简介 这里以常用的视频原始数据PCM数据为例,展示音频的播放。 SDL播放音频的流程如下: 初始化音频子系统:SDL_Init()。设置音频参数:SDL_AudioSpec。设置回调函数:SDL_AudioCallback。打开音频设备:SD…...

优秀智慧园区案例 - 重庆AI PARK智慧创意园区,先进智慧园区建设方案经验

一、项目背景 1、智慧园区是国家实现经济增长、产业升级的载体 智慧园区建设是城市智慧化创新发展的核心,在数智化升级和低碳化转型的经济发展双引擎的驱动下,十四五、数字经济的政策大力支持,以及人工智能、5G、大数据、区块链等技术的不断…...

如何编写一个Perl爬虫程序

要编写一个Perl爬虫程序,首先需要安装LWP::UserAgent模块。你可以使用cpan命令来安装该模块: cpan LWP::UserAgent 安装完成后,可以使用以下代码来编写爬虫程序: use LWP::UserAgent; use HTML::TreeBuilder; my $proxy_host …...

linux查看当前目录大小及磁盘大小

1、查看当前目录大小 du -sh ./*-h:以K,M,G为单位,提高信息的可读性 -s:仅显示总计 ./*:列出当前目录下的子项 2、查看磁盘大小 df -h还可以加个路径,仅查看当前目录所在的磁盘。例如&#x…...

windows系统pycharm程序通过urllib下载权重https报错解决

报错内容&#xff1a; raise URLError(unknown url type: %s % type) urllib.error.URLError: <urlopen error unknown url type: https> 解决办法记录&#xff1a; 1. 下载 pyopenssl : pip install pyopenssl 此时&#xff0c; import ssl 可以通过提示指导你安…...

Python数据结构: 列表(List)详解

在Python中&#xff0c;列表&#xff08;List&#xff09;是一种有序、可变的数据类型&#xff0c;被广泛用于存储和处理多个元素。列表是一种容器&#xff0c;可以包含任意数据类型的元素&#xff0c;包括数字、字符串、列表、字典等。本文将深入讨论列表的各个方面&#xff0…...

查找py源代码目录

要查找Python源代码目录&#xff0c;你可以按照以下步骤进行操作&#xff1a; 打开终端或命令提示符窗口。输入以下命令来查找Python源代码目录&#xff1a; python -m site该命令将显示Python安装位置的相关信息&#xff0c;包括site-packages目录路径。该目录通常包含Pytho…...

React Virtual DOM及Diff算法

JSX到底是什么 使用React就一定会写JSX&#xff0c;JSX到底是什么呢&#xff1f;它是一种JavaScript语法的扩展&#xff0c;React使用它来描述用户界面长成什么样子&#xff0c;虽然它看起来非常像HTML&#xff0c;但他确实是javaScript&#xff0c;在React代码执行之前&#…...

Spark通过三种方式创建DataFrame

通过toDF方法创建DataFrame 通过toDF的方法创建 集合rdd中元素类型是样例类的时候&#xff0c;转成DataFrame之后列名默认是属性名集合rdd中元素类型是元组的时候&#xff0c;转成DataFrame之后列名默认就是_N集合rdd中元素类型是元组/样例类的时候&#xff0c;转成DataFrame…...

【坑】idea终端下执行maven命令行报错:mvn clean install -Dspring.profiles.active=dev

直接看报错信息 解决方法 方法一 命令改为&#xff1a;mvn clean install -Dspring.profiles.activedev方法二 使用 cmd 进入命令行执行&#xff1a;mvn clean install -Dspring.profiles.activedev在新版本中的idea终端已经默认使用了类似windons10下的PowerShell窗口的风格…...

Linux下mysql安装配置教程

MySQL是一种常用的关系型数据库管理系统&#xff0c;安装配置MySQL需经历以下步骤&#xff1a; 1.下载MySQL 首先&#xff0c;你需要从MySQL官网下载MySQL的压缩包。在下载页面中&#xff0c;你需要选择正确的系统和版本&#xff08;例如Windows或Linux&#xff0c;32位或64位…...

在 Electron上安装better-sqlite3出错

错误问题 一直卡npm install --global windows-build-tools --vs2015 这一步 解决 安装&#xff1a;pnpm install better-sqlite3 --save安装命令 pnpm i -D electron-rebuild 手动运行&#xff1a;node_modules/.bin/electron-rebuild -f -w better-sqlite3 我直接在packa…...

利用网络管理解决方案简化网络运维

当今的网络正朝着提高敏捷性和动态功能的方向发展&#xff0c;以支持高级网络要求和关键业务流程&#xff0c;这导致 IT 基础架构也跨越无线、虚拟和混合环境。但是&#xff0c;随着网络的快速发展&#xff0c;如果没有合适的解决方案&#xff0c;IT 管理员很难管理它们&#x…...

C#中.NET Framework4.8 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录

目录 一、应用程序设计 二、应用程序源码 三、生成效果 前文作者发布了在.NET Framework4.8 控制台应用中通过EF访问已有数据库&#xff0c;事实上在.NET Framework4.8 Windows窗体应用中通过EF访问已有数据库也是一样的。操作方法基本一样&#xff0c;数据库EF模型和上下文…...

使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统

随着时间的积累&#xff0c;日志数据会越来越多&#xff0c;当您需要查看并分析庞杂的日志数据时&#xff0c;可通过FilebeatKafkaLogstashElasticsearch采集日志数据到Elasticsearch中&#xff0c;并通过Kibana进行可视化展示与分析。本文介绍具体的实现方法。 一、背景信息 …...

后端接口错误总结

今天后端错误总结&#xff1a; 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean&#xff0c;因此这个位置必须打开&#xff0c;如果这个标签不打开就会报错 问题解决&#xff1a;这里的配置在application.yml文件中 kaf…...

将scut-seg标签转化成通用coco标签

行人实例分割 import json import osdef calculate_bounding_rectangle(coordinates):# 提取x和y坐标的列表x_coords [coord[0] for coord in coordinates]y_coords [coord[1] for coord in coordinates]# 计算矩形的左上角坐标min_x min(x_coords)min_y min(y_coords)# 计…...

阿里云添加端口

目录 阿里云添加端口的方法与步骤详解 一、登录阿里云控制台 二、创建安全组 三、添加入站规则 四、添加出站规则 五、完成添加端口操作 也可 1&#xff1a;搜索轻量级服务器 2&#xff1a;点击服务器 3&#xff1a;点击添加规则 4&#xff1a;保存即可 总结 阿里云…...

Linux组调度

为什么引入组调度可以参考这篇文章的讨论。核心原因是基础的调度算法都是基于任务的&#xff0c;如果用户A有10个任务&#xff0c;用户B只有1个任务&#xff0c;假设这些任务的优先级都相同&#xff0c;那么用户A得到的CPU时间将是用户B的10倍&#xff0c;这样从任务的角度看虽…...

深入解析JavaScript中的变量作用域与声明提升

JS中的变量作用域 背景&#xff1a; ​ 之前做js逆向的时候&#xff0c;有一个网站很有意思&#xff0c;就是先出现对其赋值&#xff0c;但是后来的变量赋值没有对其发生修改&#xff0c;决定说一下js中的作用域问题. 全局作用域&#xff1a; ​ 全局作用域的变量可以在任何…...

【Python】jupyter notebook(学习笔记)

Jupyter Notebook初见 1、Jupyter Notebook介绍 web版的ipython 编程、写文档、记笔记、展示 格式.ipynb 2、为什么使用Jupyter Notebook? 画图方面的优势&#xff1a;图像的生成不会堵塞后面代码的执行数据展示方面的优势&#xff1a;生成的数据可以保存在文件中 3、J…...

红色旅游AR互动体验将景区推向更广泛的市场

AR技术的出现使得各展厅观众可以在虚拟和现实的层面进行互动&#xff0c;利用AR和VR技术&#xff0c;将展览地点扩展到特定的虚拟领域&#xff0c;实现了"无触觉"交互体验&#xff0c;增强现实技术和展馆的对接更加激发人们了解新事物的兴趣。 一、AR景区&#xff1a…...

VR全景:打造虚拟政务服务,打通服务群众“最后一公里”

大家对政务大厅的工作效率可能已经司空见惯&#xff0c;办事窗口少&#xff0c;而需要办理的群众和业务却很多&#xff0c;很多去政务大厅办理业务的&#xff0c;排队几个小时也是常有的。并且在传统政务服务中&#xff0c;办事流程一般都较为复杂、耗时长&#xff0c;往往需要…...