让你提前认识软件开发(42):性能测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 第3部分 软件研发工作总结性能测试 【文章摘要】        对于通信领域的某些中间模块,其主要功能是对收到的消息进行处理然后发送,在两个模块之间充当了一个“桥梁”的作用。

第3部分 软件研发工作总结

性能测试

 

【文章摘要】

        对于通信领域的某些中间模块,其主要功能是对收到的消息进行处理然后发送,在两个模块之间充当了一个“桥梁”的作用。由于消息的条数有多有少,这就对其性能提出了要求。

        本文结合作者的实际项目经验,描述了性能测试的整个过程,并对性能测试过程中的一些常见问题进行了简单的介绍。

 

1. 前言

        在完成项目新需求的编码之后,对代码进行自测以验证功能的正确性是在所难免的。一般说来,花在测试上面的时间要更多一些。通过对自己所编写程序的详细测试,开发人员可以发现设计上、编码上的不足,及时对程序进行修改,减少了后续修改所带来的成本的增加。

        某些中间模块位于两个重要模块之间,充当了“桥梁”的作用。它需要对收到的消息进行处理,并将处理之后的消息发送出去。消息的条数有多有少,当消息条数很大时,就要求中间模块能够有比较高的性能,不会因为处理不过来而瘫痪掉。因此,对中间模块进行性能测试以验证其处理大量消息的能力是很有必要的。

       本文对性能测试的整个过程进行了详细的描述,并对测试过程中的一些注意事项进行了简单的介绍。

 

2. 性能测试环境的搭建

2.1 系统结构示意图

        一般而言,对于要处理大量消息的系统,都需要进行性能测试。其通用的系统结构如图1所示。

1 性能测试系统结构图

        如图1所示,中间模块C需要与模块A和模块B进行消息的交互。首先由模块A发送消息到中间模块C,中间模块C按照协议组装好消息后,发送到模块B;模块B收到消息之后,会给中间模块C返回应答消息,中间模块C再按照协议组装应答消息返回给模块A

        由此可见,中间模块C需要处理不同的消息,当消息量很大的时候,就对其处理性能提出了要求。

 

2.2 模拟程序的编写

        从图1可以看出,要对中间模块C进行性能测试,需要模拟模块A和模块B的功能。

        为了方便操作,一般在自己的工作PC上编写模拟程序来完成简单的性能测试。如果要想进行大规模的性能测试,需要专门的测试人员和测试环境的配合。

        一般而言,可以编写可视化的操作界面来模拟模块A和模块B,这样方便对消息进行跟踪和调试。模拟界面的示意图如图2所示。

2 模拟界面示意图

        如图2所示,整个操作界面比较简单,包括“开始测试”按钮、“退出系统”按钮、消息类别按钮、“发送次数”控制框、“发送间隔”控制框和显示框等。

       “开始测试”按钮用于控制测试的开始。

       “退出系统”按钮用于控制测试的结束。

        消息类别按钮用于控制发送消息的内容。在系统建立起来之后,当选中其中的某项功能并点击“开始测试”按钮之后,模块A就会将消息发送到中间模块C,并接收来自中间模块C的消息。发送和接收的消息会显示在中间的显示框中。

       “发送次数”控制框用于控制消息的发送条数,这是性能测试最重要的体现。对于某一类消息,可以逐渐增加该项的取值。

       “发送间隔”控制框用于控制消息的发送间隔。这是为了方便观察到每条消息的发送情况,可根据实际情况进行调节。

        显示框用于展示消息的执行情况,方便跟踪与调试。

        在模拟模块A和模块B程序中,最为重要的是要严格按照协议来组装发送的消息,不仅要保证字段内容和顺序的正确性,还要保证格式的正确性。为了确保发送消息的准确无误,可以增加一个配置文件,在该文件中将消息配置好。

 

3. 性能测试的操作过程

        性能测试操作过程与程序实际的测试过程没有什么两样。在测试之前,要保证系统的正常运行、要保证相关配置文件内容的正确性,并确保测试软件的正确性。

3.1 启动模拟界面

       模拟程序成功启动后的界面如图3所示。

3 模拟程序成功启动后的界面示意图

 

3.2 对单条消息进行测试

        选择某一个消息类别,并设置“发送次数”为1,可以看到发送消息和接收消息的情况,如图4所示。

4 发送1条消息成功示意图

        通过图4的显示框可以验证程序的功能是否正确。

 

3.3 对中间模块C进行性能测试

        编写模拟程序的一个主要目的就是要对中间模块C进行性能测试,也就是要不间断地向中间模块C发送多条消息,看一下其功能是否正常。

        例如,选择某类消息,并设置“发送次数”为10000,可以看到发送消息和接收消息的情况,如图5所示。

5 发送10000条消息成功示意图

        图5中,模拟程序不停地向中间模块C发送消息,直到发送10000条为止。当消息发送完之后,可以查看中间模块C处理消息是否正常,也就是看性能测试是否达到预期的目的。

        一般说来,要保证中间模块C能够承受100000次乃至1000000次以上的性能测试。当某一项功能的性能测试通过之后,还要对该中间模块C涉及到的其它功能进行性能测试,以确保其性能的稳健性。

 

4. 性能测试常见问题及其解答

         在性能测试过程中,常见的问题及解答如下:

         1) 为什么模拟程序无法发送消息?

        答:出现这种情况,一般都是配置的问题。在进行性能测试之前,一定要确保各配置文件的正确性,要确保服务器和客户端配置的正确性,以及连接端口的准确性。连接不通,一般都是由端口号不对引起的。

         2) 为什么发送过来的消息解析不对?

        答:这一般是由于未按照协议的要求组装消息引起的。

         3) 为什么对于有些功能,处理少数几条消息的时候不会有什么问题,而多条消息时程序就会崩溃?

        答:肯定是中间模块C程序有问题,性能测试的目的就是为了发现这类问题。可以对照相关日志文件来检查,看程序在哪里崩溃的。一般说来,通过检查对应的代码可以发现问题之所在。

 

5. 总结

        本文主要介绍了对中间模块C进行性能测试的整个过程,并对测试过程中的常见问题进行了描述。

        性能测试的主要目的是保证代码的质量,进而确保产品的质量。开发人员在编写完代码之后,一定要对代码进行充分的测试,以减少后续修改所带来的麻烦。


 

 

 

(本人微博: http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
15天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
122 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
5月前
|
缓存 运维 数据库
【测试人员兼职指南】利用专业技能:如何从测试转向开发赚钱
本文分享了作者作为测试人员如何利用专业技能转向开发来兼职赚钱的经验,包括分析和解决登录页面跳转、避免重复账号注册、用户登录后首页显示用户名以及添加退出功能等问题,并提供了Django项目中使用sqlite3数据库和后台管理的扩展技巧。
145 1
【测试人员兼职指南】利用专业技能:如何从测试转向开发赚钱
|
5月前
|
Java 测试技术 开发者
在软件开发中,测试至关重要,尤以单元测试和集成测试为然
在软件开发中,测试至关重要,尤以单元测试和集成测试为然。单元测试聚焦于Java中的类或方法等最小单元,确保其独立功能正确无误,及早发现问题。集成测试则着眼于模块间的交互,验证整体协作效能。为实现高效测试,需编写可测性强的代码,并选用JUnit等合适框架。同时,合理规划测试场景与利用Spring等工具也必不可少。遵循最佳实践,可提升测试质量,保障Java应用稳健前行。
60 1
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
67 1
|
2月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
53 2
|
3月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
322 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
2月前
|
安全 测试技术 持续交付
云计算时代的软件开发与测试:高效、灵活、可扩展
云计算时代的软件开发与测试:高效、灵活、可扩展
|
3月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
82 2
|
3月前
|
敏捷开发 测试技术
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
文章详细介绍了软件开发过程中的不同开发模型(瀑布、螺旋、Scrum)和测试模型(V模型、W模型),以及增量和迭代的概念,最后阐述了敏捷思想及其在敏捷开发(如Scrum)中的应用。
169 0
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
|
4月前
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
102 1