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

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

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

性能测试

 

【文章摘要】

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

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

 

1. 前言

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

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

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

 

2. 性能测试环境的搭建

2.1 系统结构示意图

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

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

1 性能测试系统结构图

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

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

 

2.2 模拟程序的编写

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

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

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

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

2 模拟界面示意图

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

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

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

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

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

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

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

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

 

3. 性能测试的操作过程

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

3.1 启动模拟界面

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

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

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

 

3.2 对单条消息进行测试

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

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

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

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

 

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

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

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

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

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,欢迎关注!)