软件应力试验是一种基本的质量保证行为是各项重要的软件测试工作的一部分软件压力测试的基本思路很简单:
在计算机数量较少或系统资源不足的情况下运行测试,而不是在正常条件下运行手动或自动测试。
通常,进行软件压力测试的资源包括内部存储器、CPU
可用性、磁盘容量、网络带宽。 压力测试覆盖、性能测试、负载测试、并发测试等这些测试点经常交织在一起。
压力测试中存在的问题
什么是压力测试?
软件应力试验是一种基本的质量保证行为是各项重要的软件测试工作的一部分软件压力测试的基本思路很简单:
在计算机数量较少或系统资源不足的情况下运行测试,而不是在正常条件下运行手动或自动测试。
通常,测试软件压力的资源包括内部内存、CPU可用性、磁盘空间和网络带宽。
压力测试覆盖、性能测试、负载测试、并发测试等这些测试点经常交织在一起。
压力测试有那些问题
我总结一下又几点了:
默认情况下安装操作系统,并在不进行优化的情况下执行压力测试
没有考虑磁盘I/o对软件的影响
没有考虑网络带宽对软件的影响
未考虑TCP特征的网络软件测试
各种超时参数的优化
测试客户端未优化
同时理解有错误
未优化WEB服务器、数据库和等服务器
如果以上几个没有优化,压力测试的数据几乎没有参考价值。 如果其中一个未经过优化,压力测试数据将会出现偏差。
以下逐条说明:
操作系统问题
操作系统是大众化软件,出厂时的优化是面向大众的,不能对某个领域进行个别优化。 所以我们的第一步需要优化操作系统。 Linux
系统优化内核参数、Windows系统优化注册表等。
磁盘IO这是一个容易出现瓶颈的地方,在很多情况下,CPU还没有达到极限,给磁盘增加了负担。
网络IO与磁盘IO相同
几乎所有TCP连接的B/S、
C/S软件采用多线程或多进程技术。 该技术具有特点,开发者将程序设计为线程的自动可伸缩模式,开始进程时会启动少量线程,连接提高时线程数逐渐增加,线程随着线程执行的结束逐渐减少。 通过自动化测试工具,您可以更好地利用硬件资源,并在程序空闲时将硬件资源转让给其他进程。 很少有软件被设计为打开服务并独占资源。
这样测试软件进行压力测试,必须采用逐渐增加的方式,而不是一次同时进行很多请求。 否则,在最初的测试中一部分人无法同时应对,测试数据会出现偏差。 还可以多次提出压力请求,从第三次开始记录测试数据,然后突然律上两次测试数据。
提示:另一个问题是TCP连接的复用,这也是重要的构成思路。 如果这个没有被构成的话,我想测试的数据也会有偏差
参数超时参数是压力测试中非常重要的参数。 APP测试工具例如从WEB到数据库的连接超时为60秒。 如果有超过300秒的SQL查询,后续请求将继续排队。当连接数达到数据库连接时,所有以下请求都将失败。
通常,我们的WEB服务器超时不会超过30秒。 有时设定为10秒。 如果发生超时,不如连接Timeout,以免他影响整个服务器。
许多网络软件都需要客户端发出压力测试请求,因此客户端优化也是必要的。 否则,客户端压力就不会出现,服务器端压力就不会出现。
很多人认为合并是同一时间内的大连连接数,这是错误的。 如果你写过多线程程序,你会发现多线程运行时是有规律的。 它是按顺序排队运行的,并不是完全同时运行的。
因此,同步时间是相对能够在时间上完成的连接的总和,例如,每秒同时、每分钟同时等,并且通常我们以秒为单位。
我们现在使用的操作系统叫分时操作系统,该系统的特点是可以实现多用户、多任务。 操作系统对进程进行排队和轮询,但此操作太快,可能有多个进程正在同时运行。
服务器优化关键B/S软件的压力测试、WEB、缓存、数据库等服务器需要逐一优化。