自主编写部署性能测试的备

与以前使用性能工具和终端性能测试做的方式不同,自己亲自部署的性能环境对性能测试的理解,还有测试的经验以及对性能测试开发的一些功底都是一个考验,因为这次是从一行代码都没有到个人发布的第一版性能测试程序(用例)间解决很多难题,所以趁现在有空闲时间备忘下这次做偏网络性能测试的经历。

  设计阶段的时候一定需要弄清楚这次性能测试的目的和要点。与用lr的web网页性能测试不同,我是测试更底层或者说是网络层的性能。与手工测试不同,做性能测试务必有需求,即使没有需求都需要组织会议来自己定制一套需求。在做性能测试的经验中,70%~80%是做和开发组相似的工作,所以没有需求的话,写着写着就会融入自己的主观误区,很容易写出来的东西根本不符合项目组的要求,尤其是做socket的编程。对于网络相关的测试,不用太过于关注一些平常web性能的指标,最重点关注是每秒的处理数,服务器的极限值,模拟真实的流程还有根据这些设置值来定制出一个产品的性能说明书。主要的设计参考为同类产品的对比,主流服务器的性能指标,还有产品的峰值。

  部署性能测试开发阶段需要根据你的设计和项目组或你自身水平(实际项目由我个人弄)来评定需要那些东西来做开发活动。对于测试开发来说,偏应用的语言和脚本是相对好用的。大多情况下我会选择做常链接不错的java和资料充足的python脚本来制作测试开发,假如是有图形界面的话C++和java是比较好的选择。为什么我会重点提这3个语言,我经历过的自动化组虽然不是全部都用以上的语言,但是在google强大的开源帝国中提供了很多自动化测试框架和模块(例如安卓的java robotium,C++的GoogleTest,支持很多API和多个linux支持的python)本身就带有优势。重点在于这3个语言对oracle或其他数据库都有很好的交互,性能测试很少不和数据库打交道。其次也可以选择你很熟悉的语言做自动化。

  开发环境搭建阶段,做测试核心之一的就是返回结果来对期望结果进行匹配,你获取结果的地方最多就是在服务器端,很多时候我们在windows开发,获取结果在linux服务器,所以搭建开发环境对编译器,对打包的工具,对一些项目组现有的工具,还有各自操作系统带有的小工具都要进行考量。必要时甚至可以用lr和QTP来辅助。同时要对项目的协议进行分析,解析包,把底层交互的接口都编写完整,当然项目组做了给你更加好。

  程序设计阶段,好比做C++开发和数据库开发的理念不同,做测试开发也有着不同的理念。我们本身是测试代码,在我此次项目经历考量的最多就是操作系统,编译器,公司网络,本身语言对网络方面的性能和限制。我们做的不是安全防御,不是应用系统,最终目的是提出一个说明书和提交bug,所以我们需要知道我们执行程序发现的问题是产品问题还是上述问题,即使用lr测试也是如此。这里说下几个理论:我们的程序做到什么程度?平台化?程序化?脚本化?因为负责的只有我一个人,所以只做到脚本化。还有脚本的分布。因为我们是用例,而且大多是性能用例,不像别的功能用例自动一个个串行执行。所以在我选择了功能强大的语言时我的测试脚本分为应用层(执行用例的函数),特性层(linux,windows,数据库,网络编程的特性函数),忽略底层(因为语言已经封装很好) ,然后因为性能用例的特征做了一个选择的接口层(每次每台测试机只执行一个性能用例),然后根据用例的目的进行分类,测试模拟真实环境的性能指标用例,测试负载的峰值指标用例,测试压力的用例(分测试客户端用例和备用客户端用例,往往压力挂了,自主开发的主用例很难再去给压坏的服务器做判断)

  测试的部署阶段,当你的用例第一版正式投入测试的时候,需要关注的是:你实现压力的方式,综合客户端和综合服务器的限制。例如lr这样的性能工具是怎么做到超越一般的并发数的,是靠巧妙的编程方式还是通过提供的服务器,在我自己弄整个过程,我大概也摸清了一小部分lr的底。除了评估出各方面性能所需要准备的测试机外,最重要是如何以最小的代价抓出最多的bug日志,打印日志算是一个影响机子性能的关键点。

  总结:下一步不管网页相关的性能是由我做还是使用lr工具,最重要还是要提高代码的函数通用性,我经历的测试组的代码很多封装的惨不忍睹,因为很多测试人员测试时抽空出来写自动化用例不可能会像开发那么专心。其次是继续提升自己对操作系统,数据库和网络本身的一些基本配置问题要更加了解,我提交很多致命单往往都是很简单的东西造成的。最后要按需求走,每做一个改动和新增要知道自己测试和发现的是自己的程序性能问题,还是局域网络问题,或者是原生产品操作系统问题,排除完后提交bug。

  小数据:总编写时间3~4个星期的脚本在一个迭代中发现了15个严重级别或以上的单。自己编写性能脚本效率在初中期开发其实不比lr差。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-05 12:08:34

自主编写部署性能测试的备的相关文章

利用LoadRunner编写socket性能测试脚本

一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socket概述 socket是操作系统中I/O系统的网络延伸部分,它扩展了操作系统的基本I/O到网络通信,使进程和机器之间的通信成为可能.如果想完全地理解socket在Loadrunner中如何工作的,熟悉一些关于它的历史会很有帮助. 当前常用的socket,最早起源于BSD UNIX类的操作系统.在UNIX系统上,比如BSD,把对网络的支持加入操作系统,以一

MySQLCluster7.2.15安装部署性能测试

1 下载 Download the cluster tar.gz wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.2/mysql-cluster-gpl-7.2.15.tar.gz MySQL Cluster 7.2.15 Select Version: 下拉框选择 7.2.15 Select Platform: 下拉框选择 Linux Generic 然后再下面连接一栏里面选择: Linux - Generic 2.6 (x86,

性能测试知多少---测试工具介绍

继续这个系列的学习,这一节重点介绍目前流行的性能测试工具以及如何选择适合项目的工具.在此之前,我已经对性能测试工具的原理与架构做了分析. http://www.cnblogs.com/fnng/archive/2012/07/31/2617546.html      性能测试工具的选择与评估                                                 在性能工具原理与架构一章中,我们了解到性能测试工具的原理通常是:通过录制.回放脚本,模拟多用户同时访问被测试系

云时代的容灾备份数易云备虚位以待

 大约十年前,随着信息化的不断发展和深入,一种按使用量付费的全新信息服务交付和使用模式哗然现世,这就是"云计算".用户可以通过服务供应商提供的可用的.便捷的.按需的网络访问,进入可配置的计算资源共享池,获得包括网络在内的服务器.存储.应用软件和服务."云计算"的出现使得信息化进程产生了巨大的变化,各种"云计算"的应用服务范围逐渐扩大,影响力不可估量,云时代就此来临. 该不该上云? 过去十余年时间里,这一话题始终是各行业讨论研究的热点.对于企业而言

部署Python的框架下的web app的详细教程

  这篇文章主要介绍了Python部署web app的详细教程,示例代码基于Python2.x版本,需要的朋友可以参考下 作为一个合格的开发者,在本地环境下完成开发还远远不够,我们需要把Web App部署到远程服务器上,这样,广大用户才能访问到网站. 很多做开发的同学把部署这件事情看成是运维同学的工作,这种看法是完全错误的.首先,最近流行DevOps理念,就是说,开发和运维要变成一个整体.其次,运维的难度,其实跟开发质量有很大的关系.代码写得垃圾,运维再好也架不住天天挂掉.最后,DevOps理念

服务器安全部署文档

原文:服务器安全部署文档 年前一直在赶项目,到最后几日才拿到新服务器新添加的硬盘,重做阵列配置生产环境,还要编写部署文档做好安全策略,交给测试部门与相关部门做上线前最后测试,然后将部署文档交给相关部门同事,让他根据部署文档再做一次系统,以保证以后其他同事能自己正常部署服务器,最后终于赶在放假前最后一天匆忙搞定测试后,简单的指导同事按部署文档将服务器重新部署了一次就先跑路回家了,剩下的就留给加班的同事负责将服务器托管到机房了.年后回来上班后按工作计划开始做文档(主要对之前编写的部署文档进行修正和将

GDS携云灾备方案参加第十届灾备论坛 助力大数据价值挖掘

ZDNet至顶网服务器频道 05月28日 新闻消息:5月26日-27日,第十届中国灾难恢复行业高层论坛在贵州举行,作为国内灾备服务的领军企业和开创者,以及国家灾备标准的制定者,万国数据(GDS)副总裁刘东红于论坛上做了题为<大数据时代下的灾备建设和管理体系>,介绍了大数据时代下的灾备需求.国家灾备体系现状.企业灾备体系建设和管理要点,并展示了GDS云灾备解决方案.在大数据时代背景下,该解决方案将帮助用户高效.低成本地建立安全.可靠的灾难恢复体系,保证数据的安全性.可用性.完整性. 万国数据副总

图解:SQL Server SSIS包和job的部署攻略

原文:图解:SQL Server SSIS包和job的部署攻略 以下将建立一个SQL Server SSIS包 然后在job中使用这个包,并将job部署到目标机器 1. 首先建立ssis包,使用sql server 自带的business intelligence development stdio即可定制自己所需的SSIS package 2. 将SSIS包中需要动态改变的配置导出config文件,比如数据库的连接字符串等, 在包的work flow的空白处右键,选择包配置 3. 勾选启用包配

并发性能测试程序编写

一般要测试软件或者库的性能,需要在多线程条件下进行.本文提供一种编写多线程性能测试的模板,方便大家参考和使用. 本文以AES加密和解密为例,并指出Cipher的获取在程序中的不同位置会对程序性能造成的影响. 程序代码如下: package com.lazycat.secure.aes; import java.nio.charset.Charset; import java.security.NoSuchAlgorithmException; import java.util.concurren