软件性能测试(连载15)

简介: 软件性能测试(连载15)
6)小结

本节所涉及的概念有文件储结构(包括索引节点和目录项)、虚拟文件系统VFSLinux I/O分类和磁盘的性能指标。涉及到的命令有stat dfiostat cat /proc/slabinfoslabtoppidstatiotop


4. 网络


1)网络协议栈

在大学的时候,都学过网络的协议栈。OSI7层,TCP/IP模型为4层,其对应关系如图3-32所示。


image.png

3-32  OSI 7层协议与TCP/IP模型4层协议对照表


OSI模型仅为教学提供,在日常工作中使用TCP/IP协议。在LinuxTCP网络包如图3-33所示。

image.png

3-33  Linux中的TCP网络包


在应用层仅为具体要用到的应用数据;到了传输层在头部加上TCP头信息;向下进入网络层,在TCP头信息头部再加上IP头信息;最后到达网络接口层,在数据包的头尾部各加上帧头和帧尾两部分。


TCP/IP的传输过程中,发送方从上而下一层一层地在应用数据前后加上头信息与尾信息,接受方从下而上一层一层地把头信息与尾信息去除,直到在应用层只剩下应用信息为止,如图3-34所示。


image.png

3-34  TCP/IP数据包的发送与接受


2Linux 网络栈

Linux的网络栈如图3-35所示。

image.png

3-35  Linux的网络栈


3)网络性能指标

同磁盘一样,网络也有对应的性能指标。


带宽。

表示链路的最大传输速率。单位通常为b/s(比特/秒)。

吞吐量。

表示没丢包时的最大数据传输速率。单位通常为b/s(比特/秒)或者 B/s(字节/秒),吞吐量受带宽限制,而吞吐量/带宽,也就是该网络的使用率

延时。

表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同的含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时)或一个数据包往返所需的时间(比如 RTT)。

PPS

Packet PerSecond(包/秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即PPS 可以达到或者接近理论最大值)。而基于Linux服务器的转发,则容易受网络包大小的影响。

网络的可用性。

网络能否正常通信

并发连接数。

TCP 的并发连接数量

丢包率。

传输过程中丢包的数量与总包的数量的百分比

重传率。

重新传输的网络数据包占所有包的百分比。


4)常用命令
ifconfig
# ifconfig ens33
ens33:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 192.168.0.108 netmask 255.255.255.0  broadcast192.168.0.255
inet6 fe80::dacc:9183:6dd2:2c6e  prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:55:10:1f  txqueuelen 1000  (Ethernet)
RX packets 23667 bytes 34981398 (34.9 MB)
RX errors 0  dropped 0  overruns 0 frame 0
TX packets 18467 bytes 1668920 (1.6 MB)
TX errors 0 dropped 0 overruns 0  carrier0  collisions 0


ifconfiglinux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。在这里。


RUNNING

表示这个网卡是连通的。

mtu 1500

表示MTU的当前值为1500MTU为最大传输单元,其默认值为1500MTU越大,需要的分包也就越少,自然网络吞吐能力就越好。

inet 192.168.0.108  netmask255.255.255.0  broadcast 192.168.0.255

表示当前的IPv4地址,子网掩码和广播地址。

inet6 fe80::dacc:9183:6dd2:2c6e prefixlen 64  scopeid0x20

表示IPv6地址和子网掩码。


ip
# ip -s addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc fq_codel state UP group default qlen 1000
   link/ether 00:0c:29:55:10:1f brd ff:ff:ff:ff:ff:ff
    inet192.168.0.114/24 brd 192.168.0.255 scope global dynamic noprefixroute ens33
      valid_lft 6024sec preferred_lft 6024sec
    inet6fe80::dacc:9183:6dd2:2c6e/64 scope link noprefixroute 
      valid_lft forever preferred_lft forever
    RX:bytes  packets  errors dropped overrun mcast   
   1066174744 1153443  0       0      0       0       
    TX: bytes  packets errors  dropped carrier collsns 
   313697585  701189   0      0       0       0      
root@ubuntu:/home/ebusiness#


linuxip命令和ifconfig类似,但ip功能更为强大,并旨在取代ipconfig之意。


LOWER_UP

表示这个网卡是连通的。

mtu 1500

表示MTU1500

inet 192.168.0.108/24 brd 192.168.0.255

表示当前的IPv4地址,子网掩码和广播地址。

inet6 fe80::dacc:9183:6dd2:2c6e/64 scope link noprefixroute


表示IPv6地址和子网掩码。

ifconfigip中其他参数如表3-14所示。


3-14 ifconfigip中其他参数

参数

解释

errors

发生错误的数据包的数量,比如校验错误、帧同步错误等

dropped

丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包

overruns

超限数据包的数量,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包

carrier

发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等

collisions

碰撞数据包数


sar
# sar -n DEV 1
Linux 4.15.0-66-generic (ubuntu) 12/11/2019_x86_64_(4 CPU)
12:45:31 AM  IFACE   rxpck/s txpck/s rxkB/stxkB/s rxcmp/s txcmp/s  rxmcst/s %ifutil
12:45:32 AM  ens33   0.00     0.00    0.00    0.00   0.00    0.00     0.00      0.00
12:45:32 AM  lo       0.00     0.00    0.00    0.00   0.00    0.00     0.00      0.00


sar命令配合-n参数可以查看网络的相关信息,有6个不同的开关:DEVEDEV NFSNFSDSOCKALL DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套接字信息,ALL显示所有5个开关。它们可以单独或者一起使用。这里的参数如表3-15所示。


3-15 sar -nDEV参数

参数

含义

单位

rxpck/s txpck/s

接收和发送的 PPS

/

rxkB/s txkB/s

接收和发送的吞吐量

KB/

rxcmp/s txcmp/s

接收和发送的压缩数据包数

/

%ifutil

网络接口的使用率

(rxkB/s+txkB/s)/Bandwidth(半双工模式下)

max(rxkB/s, txkB/s)/Bandwidth(全双工模式下)

Bandwidth 可以用  ethtool 来查询,它的单位通常是 Gb/s 或者 Mb/s,不过注意这里小写字母 b ,表示比特而不是字节。


ping

ping命令通过ICMP协议查看网络的连通性和延时。

# ping 192.168.0.106 -c3
PING 192.168.0.106 (192.168.0.106) 56(84) bytes ofdata.
64 bytes from 192.168.0.106: icmp_seq=1 ttl=128time=0.280 ms
64 bytes from 192.168.0.106: icmp_seq=2 ttl=128time=0.208 ms
64 bytes from 192.168.0.106: icmp_seq=3 ttl=128time=0.351 ms
--- 192.168.0.106 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss,time 2007ms
rtt min/avg/max/mdev = 0.208/0.279/0.351/0.061 ms


ttl

表示生存时间,或者跳数。

time

表示往返延时。

icmp_seq

表示ICMP 序列号。

rtt min/avg/max/mdev = 0.208/0.279/0.351/0.061 ms


表示ttl的最小值为208ms、平均值为279ms、最大值为351ms以及平均偏差0.061 ms mdev = SQRT(SUM(RTT×RTT) / N – (SUM(RTT)/N) 2RTT(Round-Trip Time)。往返时延。是指数据从网络一端传到另一端所需的时间。时延由发送时延、传播时延、排队时延、处理时延四个部分组成)。


顾翔老师与云测学院联合推出:软件测试分析与设计,请点击https://v.youku.com/v_show/id_XNDQ3MzkyNjk3Ng==.html?spm=a2hzp.8244740.0.0,收看。有不同观念欢迎与顾翔老师交流!


投票已过期

1.以下你用过哪些集中配置管理系统?(多选)

  • puppet
  • Chef
  • ansible
  • saltstack
  • Cfengine
  • Capistrano
  • Resque
  • Rundeck
  • Rundeck
  • 其他

2.以下你用哪些过虚拟机或容器?(多选)

  • VMware
  • Vagrant
  • Amazon EC2
  • AMI(亚马逊云机器镜像)
  • Vagrant
  • Docker
  • Rkt
  • 裸金属服务器
  • 其他

3.以下你用哪些操作系统自动化配置工具?(多选)

  • Solaris10 JumpStart
  • Kickstart
  • Debian-Preseed
  • 其他

4.以下你用哪些云平台?(多选)

  • Amazon Web Services
  • Google App Engine
  • Windows Azure
  • OpenShift
  • Cloud Foundry
  • AWS CloudFormation
  • Microsoft Azure Stack
  • OpenStack Heat
  • 百度云
  • 阿里云
  • 腾讯云
  • 其他

5.以下你用哪些CI/CD工具?(多选)

  • Jenkins
  • ThoughtWorks GoCD
  • Atlassian Bamboo
  • Microsoft Team Foundation Server
  • TeamCity
  • GitLab CI
  • Travis CI
  • SNAP CI
  • Pivotal的Concourse
  • Etsy的Morgue
  • 其他

6.以下你用哪些管理工具?(多选)

  • JIRA
  • LeanKit
  • Mingle
  • 禅道
  • 其他

7.以下你用哪些安全工具?(多选)

  • Vault
  • Keywhiz
  • credstash
  • Red October
  • Metasploit
  • OSSEC
  • Tripwire
  • Unhide
  • OWASP ZAP Zed Attack Proxy Project
  • Lynis
  • The Browser Exploitation Framework
  • OWASP Xenotix XSS Exploit Framework
  • OWASP Offensive Testing Framework
  • Brakeman
  • WPScan
  • nmap
  • Burp Suite
  • AWVS
  • AppScan
  • CSRFTester
  • SQL Map
  • Pangolin
  • DirBuster
  • 其他

8.以下你用哪些静态扫描工具?(多选)

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

热门文章

最新文章