软件性能测试(连载3)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 软件性能测试(连载3)

1.5性能测试环境


性能测试对环境是非常重要的,特别是网络环境。

image.png

3-13  测试环境与工作环境在一起


image.png

3-14  测试环境各个客户端不在一个网下


在图3-13中,测试环境与工作环境在一起,既使得别人的正常工作不能进行,也使得测试的数据不准确。在图3-14中,测试环境各个客户端在两个不同的网段下进行(这里是C类网),大家都知道跨网段是需要路由的,路由里面有软件,会干扰性能测试的数据,从而也会造成测试数据不准确。图3-15的环境是正确的。所有的性能测试机器都在一个网段下,且与工作环境相隔离。

image.png

3-15  正确的性能测试环境


1.6 观察性能的四个维度


3-16展示的是通过终端用户、系统运维人员、软件设计开发人员和性能测试人员四个维度来观察系统的性能。

image.png

3-16  观察性能的四个维度


1.从终端用户角度看性能

对于最终用户,性能主要体现在响应时间,第4.1节介绍性能响应时间包括响应时间=用户响应时间+前端响应时间+网络响应时间+服务器端响应时间+数据库响应时间。而这里面的过程对用户来说是透明的,用户只关心按下鼠标到页面出现所希望的信息之间的时间越短越好。


2.从系统运维人员角度看性能

从运维人员的角度来看,软件性能除了包括单个用户的响应时间外,更要关注大量用户并发访问时的负载,以及可能的更大负载情况下的系统健康状态、并发处理能力、当前部署的系统容量、可能的系统瓶颈、系统配置层面的调优、数据库的调优,以及长时间运行的稳定性和可扩展性。比如一个产品有两种设计方案,这两种设计方案体现了两种不同的性能。


方案一。最多支持100万个在线用户,平均响应时间为3秒。

方案二。最多支持500万个在线用户,平均响应时间为5秒。


作为技术人员可能比较看重方案一,因为平均响应时间为3秒,比方案二5秒要快2秒。但是方案一仅能支持100万个在线用户,而方案二是它的五倍,可以支持500万个在线用户。所以作为系统运维人员肯定会选择方案二的。


3.从软件设计开发人员角度看性能

软件设计开发人员角度需要从以下5个维度来看性能。


1)算法设计

核心算法的设计与实现是否高效。

必要时,设计上是否采用buffer机制以提高性能,降低 I/O

是否存在潜在的内存泄露。

是否存在并发环境下的线程安全问题。

是否存在不合理的线程同步方式。

是否存在不合理的资源竞争。


2)架构设计

站在整体系统的角度,是否可以方便地进行系统容量和性能扩展。

应用集群的可扩展性是否经过测试和验证。

缓存集群的可扩展性是否经过测试和验证。

数据库的可扩展性是否经过测试和验证。


3)性能最佳实践准则

代码实现是否遵守开发语言的性能最佳实践。

关键代码是否在白盒级别进行性能测试。

是否考虑前端性能的优化。

必要的时候是否采用数据压缩传输。

对于既要压缩又要加密的场景,是否采用先压缩后加密的顺序。


4)数据库

数据库表设计是否高效。

是否引入必要的索引。

SQL 语句的执行计划是否合理。

SQL 语句除了功能是否要考虑性能要求。

数据库是否需要引入读写分离机制。

系统冷启动后,大量缓存命不中的时候,数据库承载的压力是否超负荷。


5)软件性能的可测试性

是否为性能分析(Profiler)提供必要的接口支持。

是否支持高并发场景下的性能打点。

是否支持全链路的性能分析。


4.从测试人员角度看性能

由于性能牵扯到代码、系统架构、数据库、硬件、操作系统、中间件等几乎涵盖计算机知识的方方面面,所以性能测试工程师如在第2.2.2节所述,应该是一专多能的T型人才的集合体。性能测试人员对软件性能需要做到以下几点。


根据性能测试目标以及线上数据收集,精准的性能测试场景设计和计算能力。

性能测试场景和性能测试脚本的开发和执行能力。

测试性能报告的分析解读能力。

性能瓶颈的快速排查和定位能力。

性能测试数据的设计和实现能力。

面对互联网产品,全链路压测的设计与执行能力,能够和系统架构师一起处理流量标记、影子数据库等的技术设计能力。

深入理解性能测试工具的内部实现原理,当性能测试工具有限制时,可以进行扩展二次开发。

极其宽广的知识面,既要有“面”的知识,比如系统架构、存储架构、网络架构等全局的知识,还要有大量“点”的知识积累,比如数据库 SQL 语句的执行计划调优、JVM 垃圾回收(GC)机制、多线程常见问题等等。

目录
相关文章
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
617 3
|
9月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
396 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
433 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
629 4
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
|
测试技术
软考软件测评师大题——案例分析之白盒测试
历年下午案例试题一固定考察白盒测试,主要包含三大核心问题:推导逻辑条件、绘制控制流图及计算环路复杂度、确定线性无关路径集合。内容涵盖覆盖层级标准(语句、分支、判定、条件覆盖等)、控制流图构建规范(顺序、分支、循环结构转换原则)、环路复杂度计算公式以及线性无关路径生成方法。通过典型题型示例解析,如代码路径分析与验证指标,帮助考生掌握解题思路和技巧。
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
安全 测试技术 持续交付
软考软件评测师——基于风险的测试技术
本文详细阐述了测试计划的核心要素与制定流程,涵盖测试范围界定、实施策略规划、资源配置及风险管理机制。通过风险识别方法论和评估模型,构建了完整的质量保障体系。同时,针对不同测试级别与类型提供具体配置建议,并提出技术选型原则与实施规范,确保测试活动高效有序开展,为项目成功奠定基础。内容结合实际经验,具有较强指导意义。