软件性能测试(连载16)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 软件性能测试(连载16)
5)网络性能测试工具
ab

abApache开发的性能测试工具。在Ubuntu 中使用要通过apt-get install -yapache2-utils命令来安装。


# ab -c 10 -n 1000 http://192.168.0.23:8000/
This is ApacheBench, Version 2.3 <$Revision: 1807734$>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,http://www.zeustech.net/
Licensed to The Apache Software Foundation,http://www.apache.org/
Benchmarking 192.168.0.23 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:        WSGIServer/0.2
Server Hostname:        192.168.0.23
Server Port:            8000
Document Path:          /
Document Length:        1515 bytes
Concurrency Level:      10
Time taken for tests:   14.477 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      1882000 bytes
HTML transferred:       1515000 bytes
Requests per second:    69.08 [#/sec] (mean)
Time per request:       144.767 [ms] (mean)
Time per request:       14.477 [ms] (mean, across all concurrentrequests)
Transfer rate:          126.96 [Kbytes/sec] received
Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:     0    0    0.1    0        1
Processing: 38  144   42.5   142     330
Waiting:     17  119   39.3   117     298
Total:       38  144   42.5    142     330
Percentage of the requests served within a certaintime (ms)
  50%    142
  66%    158
  75%    171
  80%    177
  90%    197
  95%    219
  98%    244
  99%    263
 100%    330 (longest request)
•ab -c 10 -n 1000 http:// 192.168.0.23:8000/。


测试URL192.168.0.238000端口,并发数为10,共发送1000个请求。


•Server Software: WSGIServer/0.2。


测试服务器的名字。


•Server Hostname: 192.168.0.23。


请求的URL主机名。


•Server Port: 8000。


Web服务器监听的端口。


•Document Path: /。


请求的URL中的根绝对路径,通过该文件的后缀名,一般可以了解该请求的类型。


•Document Length: 1515 bytes。


HTTP响应数据的正文长度。


•Concurrency Level: 10。


并发用户数,即-c中的参数。


•Complete requests: 1000。


总请求数量,即-n中的参数。


•Failed requests: 0。


表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况。


•Total transferred: 1882000 bytes。


有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。


•HTML transferred: 1515000 bytes。


所有请求的响应数据中正文数据的总和,也就是减去了Total transferredHTTP响应数据中的头信息的长度。


•Requests per second: 69.08 [#/sec] (mean) 。


吞吐率,计算公式为Complete requests/Time taken for tests,总请求数/处理完成这些请求数所花费的时间。


•Time per request: 144.767 [ms] (mean)。


用户平均请求等待时间,计算公式:Time token for tests/Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数)。


•Time per request: 14.477 [ms] (mean, across allconcurrent requests)。


表示服务器平均请求等待时间,计算公式为Time taken for tests/Complete requests,恰好是吞吐率的倒数。也可以这么统计Time per request/Concurrency Level


•Transfer rate: 126.96 [Kbytes/sec] received。


表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests。这个统计说明服务器的处理能力达到极限时,其出口宽带的需求量。


•Percentage of requests served within a certaintime(ms)。


这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过177ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。

wrk

 wrk是一款简单的HTTP压测工具,它托管在Github上,https://github.com/wg/wrkwrk的一个很好的特性就是能用很少的线程压出很大的并发量,原因是它使用了一些操作系统特定的高性能I/O机制, 比如select, epoll, kqueue等。它是复用了redisae异步事件驱动框架。确切地说ae事件驱动框架并不是redis发明的, 而是至于Tcl的解释器jim, 这个小巧高效的框架, 因为被redis采用而更多的被大家所熟知。

# wrk -t12 -c100 -d30s --latency http://192.168.0.23:8000
Running 30s test @ http://192.168.0.23:8000
  12 threadsand 100 connections
  ThreadStats   Avg        Stdev     Max     +/- Stdev
   Latency       689.04ms 229.05ms   1.57s    71.98%
   Req/Sec       12.43     9.36      80.00    82.00%
  LatencyDistribution
    50%  736.88ms
    75%  852.13ms
    90%  933.50ms
    99%    1.08s 
  2391requests in 30.09s, 4.29MB read
Requests/sec:    79.46
Transfer/sec:   146.04KB
•--latency。


查看响应时间的分布。


•-t12 -c100 -d30s。


总共12个线程,100个连接(注意:并不是一个线程对应一个连接),持续30秒。


•latency和Req/Sec。


表示单个线程的统计数据,latency代表延迟时间,Req/Sec代表单个线程每秒完成的请求数,都具有平均值、标准偏差、最大值、正负一个标准差占比。


•2391 requests in 30.09s, 4.29MB read。


30秒之内总共有2391个请求,总共读取4.29MB MB的数据。


•Requests/sec和Transfer/sec。


所有线程平均每秒钟完成了79.46个请求,每秒钟读取146.04KB数据量。


6)分析网络的两个重要工具
tcpdump

tcpdump工具可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供andornot等逻辑语句来帮助你去掉无用的信息。在运行性能测试的时候,可以通过tcpdump抓取,然后进行分析。

# tcpdump -nn udp port 53 orhost 123.56.135.186
tcpdump: verbose outputsuppressed, use -v or -vv for full protocol decode
listening on ens33,link-type EN10MB (Ethernet), capture size 262144 bytes
22:42:01.829302 IP192.168.58.129.39735 > 192.168.58.2.53: 49863+ A? www.3testing.com. (34)
22:42:01.829565 IP192.168.58.129.43751 > 192.168.58.2.53: 24308+ AAAA? www.3testing.com. (34)
22:42:01.960297 IP192.168.58.2.53 > 192.168.58.129.39735: 49863 1/0/0 A 123.56.135.186 (50)
22:42:01.961346 IP192.168.58.2.53 > 192.168.58.129.43751: 24308 0/1/0 (94)
22:42:01.961820 IP192.168.58.129 > 123.56.135.186: ICMP echo request, id 2414, seq 1, length64
22:42:01.996723 IP123.56.135.186 > 192.168.58.129: ICMP echo reply, id 2414, seq 1, length 64
22:42:01.997380 IP192.168.58.129.49101 > 192.168.58.2.53: 29852+ PTR?186.135.56.123.in-addr.arpa. (45)
22:42:02.856462 IP192.168.58.129.49101 > 192.168.58.2.53: 29852+ PTR?186.135.56.123.in-addr.arpa. (45)
22:42:04.606587 IP192.168.58.129.49101 > 192.168.58.2.53: 29852+ PTR? 186.135.56.123.in-addr.arpa.(45)
22:42:07.856421 IP192.168.58.129.49101 > 192.168.58.2.53: 29852+ PTR?186.135.56.123.in-addr.arpa. (45)
22:42:12.008686 IP192.168.58.129 > 123.56.135.186: ICMP echo request, id 2414, seq 2, length64
22:42:12.050959 IP123.56.135.186 > 192.168.58.129: ICMP echo reply, id 2414, seq 2, length 64
•tcpdump -nn udp port 53 or host 123.56.135.186。


Ø-nn

表示不解析抓包中的域名(即不反向解析)、协议以及端口号。

Øudp port 53

只显示UDP协议的端口号(包括源端口和目的端口)为53的包。

Øhost123.56.135.186

只显示 IP 地址(包括源地址和目的地址)为123.56.135.186的包。这两个过滤条件中间的"or"表示或的关系,也就是说,只要满足上面两个条件中的任一个,就可以展示出来。


•22:42:01.829302 IP 192.168.58.129.39735 > 192.168.58.2.53: 49863+A? www.3testing.com. (34)


Ø22:42:01.829302

时间戳。

ØIP

协议。

Ø192.168.58.129.39735

源地址.源端口。

Ø>

到。

Ø192.168.58.2.53:

目的地址.目的端口。

Ø49863+ A? www.3testing.com.(34)

网络包详细信息。

u49863+

查询标识值,它也会出现在响应中,加号表示启用递归查询。

uA?

查询A记录。

uwww.3testing.com.

表示待查询的域名。

u(34)

报文长度。


wireshark

wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。在运行性能测试的时候,首先通过tcpdump工具加上-w 把结果存储在.pcap文件中。

tcpdump -nn host 192.168.58.129 -w web.pcap

然后启动wireshark工具就可以分析软件性能了。如图3-36所示。


image.png

3-36  wireshark


关于wireshark的介绍资料在网上很多,在这里不进行详细介绍。


7)小结

本节所涉及的概念有网络协议栈、Linux 网络栈和网络性能指标。涉及到的命令有ifconfigipsarping、性能测试工具:abwrk、性能分析工具:tcpdumpwireshark


5.性能监控工具nmon


Linux性能分析工具nmon请查看第8.4.1节,一般在做性能测试的时候,采用这个工具进行服务器端的监控,而上面进到的命令作为调试的时候使用。


顾翔老师与云测学院联合推出:软件测试分析与设计,请点击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进行规格选择与性能压测。
目录
相关文章
|
2月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
3月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
2月前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
94 3
|
3月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
95 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
3月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
本文是《软件质量保护与测试》(第2版)第十章的学习总结,介绍了黑盒测试的基本概念和方法,包括等价类划分、边界值分析和因果图法,并通过具体例子展示了如何设计测试用例来验证软件的功能性需求。
87 1
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
|
3月前
|
人工智能 人机交互 数据库
软件质量保护与测试(第2版)学习总结第一章
本文是《软件质量保护与测试》(第2版)第一章的学习总结,概述了软件的特征、分类、软件工程的层次化技术、现代软件开发的变化,以及软件质量的概念和评价体系,包括黑盒、白盒和灰盒测试方法。
46 1
软件质量保护与测试(第2版)学习总结第一章
|
3月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
45 5
|
3月前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
36 2
|
3月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十一章 白盒测试
本文是《软件质量保护与测试》(第2版)第十一章的学习总结,详细讲解了白盒测试中的控制流测试技术,包括语句覆盖、判断覆盖、条件覆盖、判定-条件覆盖和路径覆盖等方法,并通过具体代码示例展示了如何设计测试用例来验证程序中的不同执行路径。
84 2

热门文章

最新文章