优云软件:Tcpreplay让协议测试从此无忧

简介: 我是一枚在软件测试行业泡了7年的妹纸,想分享点自己的一些心得体会...

7d8a7c029e665ffdf13c8c40169c34665519e2c9

我是一枚在软件测试行业泡了7年的妹纸,想分享点自己的一些心得体会。在我刚接触协议测试那会,相当迷茫。过程中一系列的问题便不约而至,例如:

·如何明确入参出参?

·如何掌控流量?

·如何重现bug

·如何模拟使用不常见协议的流量?

·如何模拟大数据量,进行性能和稳定性测试?

这么多问题,通过手工显然无法实现,一定要利用好工具,实现自动化测试。无疑对我这样一个菜鸟来说,是一个全新的挑战。

谈到网络协议,我们自然而然会想到Wireshark、tcpdump等抓包工具,而tcpreplay即是为它们而生。有了tcpreplay,如获至宝,几乎每一次执行测试,都少不了它的身影。

今天,给大家分享下测试过程中tcpreplay的一些应用。

Tcpreplay,顾名思义,重放tcp的报文,是一种功能强大,操作简单的自动化测试工具。它可以将用Wireshark、tcpdump工具抓下来的包原样或经过任意修改后重放回去,还原网络的实际运行状态。

Tcpreplay安装

说到tcpreplay安装超级简单,直接yum安装即可,如果yum未添加epel源,执行

1.# yum install epel-release

2.然后再执行安装

3.# yum install tcpreplay

Tcpreplay使用

1.通过执行

2.# tcpreplay -h

3.Tcpreplay的参数很多,可根据不同的测试场景进行设置。


基本用到的几个必要参数

1.指定发送端口:--intf1、--intf2

2.设置发送次数:--loop(当--loop=0,即持续循环播放)

3.控制发送速度:--pps、--topspeed

如以1000pps的速度重放10次coss_mqorclhttp.pcap数据包,命令如下:

800745a526fec39a1ad192527b20a71613519e06

Tcpreplay应用

1、功能测试

我们只需搭建一次应用环境,根据测试用例分别抓包保存为.pcap文件,后续均通tcpreplay重放测试即可。即提高工作效率,又保证稳定可控的入参,能更准确验证解析结果。

2bug重现

程序出现bug,开发人员的反应,怎么可能?无法复现!此时只要你够机灵,能够在出现bug的时候将数据包保存下来,tcpreplay随时帮你重现。

3、性能测试

在性能测试方面,只要控制好--pps参数即可,通过不断加大--pps参数值来对系统进行加压,在这个过程中,同时通过iftop记录端口流量,就可轻松提供协议数据解析性能。

然~~稳定性测试,只需将--loop参数设置为0,持续循环播放,完全实现自动化,我们只需观察系统运行日志即可。

4、改写数据包

关于数据包,往往我们保存下来的样例包,数据相对单一,为了更真实地模拟生产环境数据,需要将数据包进行改写,那么要引入tcprewrite。

tcprewrite就是改写pcap包里的报文头部,包括2层, 3层, 4层, 5-7层。从3.0版本以后,所有改写pcap报文头的操作都从tcpreplay中移到了tcprewrite里了。

以较常用的改写IP地址为例,以下命令表示将intest.pcap数据包IP为100.123.67.20改写成192.168.0.10,并输出保存为outtest.pcap。

c14974b793d16698da6ece042ba8d243a586bff4

接下来就是测试场景环节,如对于intest.pcap数据包,需要模拟100个不同ip地址。由于tcprewrite每次执行只改写一次便保存一个pcap文件,为了我们重放时方便,我们可以将改写好的每个文件通过mergecap命令合并到一个文件中,实现脚本如下:

6d308cd160f651fad7bf07cd41ebd75d8613281d

在执行完成以上脚本,结果输出一个pcap文件,通过tcpreplay重放即可。Tcpreplay工具的应用,始终就一行命令,简单易用,让协议测试从此无忧!

只想做一场最认真 / 有温度的技术分享

作者自我评价:杨琦,虽在软件测试行业泡了7年,但依然还是菜鸟,希望能在测试运维中得到更好的学习和发展。任职广通旗下互联网运维品牌:优云软件(秉承devops的理念,从监控、到应用体验,到自动化持续交付,全栈运维解决方案服务商:https://uyun.cn

相关文章
|
18天前
|
XML 数据管理 测试技术
深入探索软件自动化测试框架的设计与实现
【4月更文挑战第26天】 随着软件开发周期不断缩短,传统的手动测试方法已难以满足快速迭代的需求。本文聚焦于自动化测试框架的构建与优化,旨在提供一种高效、可维护且可扩展的软件测试解决方案。文章从自动化测试的必要性出发,详细阐述了自动化测试框架设计的核心要素,包括模块化设计、数据驱动测试以及关键词驱动测试等概念。同时,结合实例分析了如何利用流行的测试工具进行框架搭建,并提出了针对常见问题的创新解决方法。最后,通过案例研究展示了该框架在实际项目中的应用效果和潜在改进空间。
|
23天前
|
设计模式 测试技术 持续交付
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第20天】 在软件开发的复杂世界中,确保产品的质量和性能始终是至关重要的任务。白盒测试,作为软件测试领域的重要分支,提供了对程序内部结构和逻辑的深入分析手段。本文将探讨如何通过有效的白盒测试策略来优化软件性能,减少缺陷,并最终提高用户满意度。通过剖析代码检查、单元测试、集成测试等白盒测试技术,我们将了解这些方法如何揭示潜在的问题点,并为改进提供方向。
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
深入探索软件自动化测试的未来趋势
【5月更文挑战第12天】 随着软件开发周期的不断缩短和市场需求的快速变化,传统的手动测试方法已经难以满足现代软件质量保证的需求。自动化测试作为一种高效、可靠的解决方案,正逐渐成为行业标配。本文将深入探讨自动化测试的最新发展,分析其在持续集成/持续部署(CI/CD)环境中的作用,以及人工智能(AI)如何重塑测试实践。同时,我们还将展望自动化测试工具和技术的未来演进路径。
|
2天前
|
机器人 测试技术 语音技术
LabVIEW使用软件定义进行汽车电子测试
LabVIEW使用软件定义进行汽车电子测试
|
3天前
|
程序员 测试技术
程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。
程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。复杂的系统易产生意外问题,需求变化导致初始设计难完备,测试无法覆盖所有情况,而技术更新和个体能力差异也会引入错误。因此,持续调试和优化是保证软件质量的关键步骤。
7 0
|
6天前
|
人工智能 大数据 测试技术
深入探索软件自动化测试的未来
【5月更文挑战第8天】随着科技的不断发展,软件测试领域正经历着前所未有的变革。本文将深入探讨软件自动化测试的现状与未来,从人工智能、大数据和云计算等方面分析其对软件测试的影响,以及如何利用这些技术提高测试效率和质量。
|
10天前
|
机器学习/深度学习 人工智能 算法
深入探索软件自动化测试的优化策略
【5月更文挑战第4天】 随着软件开发周期的不断缩短和发布频率的增加,传统的手动测试方法已无法满足快速迭代的需求。因此,本文聚焦于自动化测试流程的优化,旨在提高测试效率和质量。文章首先回顾了自动化测试的基本概念与实施条件,随后分析了当前自动化测试面临的主要挑战,包括维护成本高、测试用例设计复杂等问题。在此基础上,提出了一系列优化策略:持续集成环境下的自动化测试、数据驱动测试、关键字驱动测试、以及基于人工智能的测试用例生成和维护等。通过案例分析和性能评估,验证了这些策略在提升测试覆盖率和减少人工干预方面的有效性。
|
10天前
|
机器学习/深度学习 敏捷开发 人工智能
探索软件自动化测试的未来趋势
【5月更文挑战第4天】 在快速发展的信息时代,软件已成为支撑现代社会运行的核心力量。随之而来的是软件测试领域面临的挑战和机遇,特别是自动化测试技术。本文将深入探讨自动化测试的最新发展,分析其对提高软件开发效率、降低维护成本的重要性,同时预测未来可能的技术趋势。通过实际案例分析和最新研究动态的梳理,旨在为读者呈现一个清晰的自动化测试技术蓝图。
|
13天前
|
测试技术 持续交付 数据安全/隐私保护
深入理解软件自动化测试中的数据驱动策略
【5月更文挑战第1天】 在软件测试领域,自动化测试已经成为提高测试效率和质量的重要手段。其中,数据驱动测试(DDT)作为一种高效实施自动化测试的策略,允许测试用例与测试数据分离,增强了测试脚本的可维护性和灵活性。本文将详细探讨数据驱动测试的核心概念、实现方式以及在实际中的应用案例,帮助读者更深入地理解如何利用数据驱动策略优化自动化测试流程。
|
13天前
|
Java 测试技术 开发者
深入理解与应用单元测试:软件质量的守护者
【4月更文挑战第30天】 在现代软件开发过程中,单元测试作为保障代码健康的重要环节,其地位日益凸显。本文将探讨单元测试的核心概念、实施单元测试的重要性以及如何高效地设计并执行单元测试。通过实例分析,我们将揭示单元测试在确保软件产品质量和加速开发周期中的关键作用。

热门文章

最新文章