金鳞

目标->软件测试架构师

背景:
本次testage.net沙龙主题:Perl快速搭建自动化性能测试框架整体解决方案-Linux(2008-12-21)
主讲嘉宾:刘林
嘉宾介绍:北京慧灵科技有限公司技术经理    

软件事业部资深测试经理,从事过java、Perl等开发,对网络通信、数据库、Linux平台测试工作多年,熟练使用多种软件测试工具WinRunner、LoadRunner、QTP,积累丰富行业经验和项目质量控制经验。具有丰富的软件测试设计、自动化测试、测试团队管理、软件测试培训经验。

声明:以下例子归刘林所有@  : )

***********************************************************************
#本次用perl做自动化测试用到的模块,O(∩_∩)O哈哈~,我的小perl,
#怪不得第一眼看到你,就喜欢上你了,我押宝总是这么准....

use IO::Socket;
use threads;
use threads::shared;
use Time:HiRes qw(gettimeofday  tv_interval);  #时间戳
***********************************************************************

#启用多线程代码
for (my $i=0;$i<$maxThread;$i++){

$threadHDLArry[$i]=threads->new(\&subThread,$i);
}
***********************************************************************
#取得每台测试执行机的socketHandle
push @sockethandle,CreatSktConn($_,$remote_port)    foreach @IPS;

#send start to each IP
print $_"start\n" foreach @sockethandle;
*********************************************************************************************************************
$startTimeSec =Get CurrentTime(); #CurrentTime()是自己写的函数,需要时直接调用,这样代码简洁整齐,忌讳把所有功能都一下子写在一堆。

$endTimeSec =Get CurrentTime();
*********************************************************************************************************************
每一条服务器状态监控CPU,内存,硬盘空间等信息,每3秒一个统计时刻,记录结果写入**.log

while(1){

$currentTime =Get currentTime();
@ProCpuMemRatio =Get ProCpuMenRatio($PEOCNAME);
@AllCpuMemRatio =Get AllCpuMenRatio();
$DiskMSG= Get DiskMSG();
if (0 == @ProcCpuMemRatio){
    $msg = sprintf("The process is not in the memory: %-20s%-13s%-13s%-12s%-11s\n",$currnetTime,$AllCpuMemRatio,$DiskMSG);
} else {
    $msg = sprintf("The process is running: %-20s%-13s%-13s%-12s%-11s\n",$currnetTime,$AllCpuMemRatio,$DiskMSG);
}


*************************************************************
#数据驱动的例子

#送文件config.dat去要发要送的数据,格式样式:
#initID=1000
#endID=9999
#initSEQ=1
#endSEQ=10
#remote_host=192.168.78.128
#remote_port=3086


#以上为已知内容,以下为程序执行
sub GetDiveData{
 
 open (FILEHANDLE,file) or die "$!";
 my @msg = <FILEHANDLE>;
 chomp(@msg);

 $initID =$1 if $msg[0]=~/initID=(\d+)/;
 $endID  =$1 if $msg[1]=~/endID=(\d+)/;
 $initSEQ =$1 if $msg[2]=~/initSEQ=(\d+)/;
 $endSEQ =$1 if $msg[3]=~/endSEQ=(\d+)/;
 $remote_host =$1 if $msg[4]=~/remote_host=(\.+)/;
 $remote_port =$1 if $msg[5]=~/remote_port=(\d+)/;
 $fileID =$initID;
close FILEHANDLE;
 }


*********************************************************************************
系统架构图如下:





*****************************************************************************************
perl_韬 11:07:29
贴一下昨天的perl测试交流会的概要(有一些细节需要补充)

一、报告内容
1.性能测试概述
2.perl概述
3.框架编写
4.脚本编写
5.测试过程编写

二、性能测试:CPU、Memory性能测试 负载测试

三、Perl概述:
1.perl模拟多用户
2.控制并发操作
3.控制多台客户端(服务器)对一台服务器
4.监控服务器

四、测试框架部分
1.测试计划
2.项目软件分析
3.测试用例
4.代码编写

(一)测试计划
1.根据项目的需求进行分析,每一个单节点交互信息在设计时都要覆盖
2.对于每一个服务器,都要有单点监控测试用例,以监控服务器的状态(CPU, Memory)
3.多组数据的传送以及日志记录,包括发送端以及接收端记录
4.统计信息汇报,关键信息的输出,测试结果分析

(二)测试脚本编写
1.测试脚本模块划分
2.与服务器的交互接口
3.服务器之间的数据输入方式

(三)如何模拟多用户
测试脚本:在每个脚本中,启用多线程,模拟多用户发送数据

(四)模拟多用户并发操作
1.执行测试脚本
1)初始化数据
2)Socket连接
2.发送'start'至客户端,启动
3.执行脚本
1)初始化
2)阻塞直到'start'收到
3)执行脚本。

************************************************************************************************
1. 笔记就记下了这些,嘿嘿!perl  可以作自动化测试,为了perl更强大,我会对c好一点的!
2.笔记的补充和完善感谢 韬同学 的大力支持,大半夜还在那里抗议,你够威风的哈 :)

posted on 2008-12-21 20:59 金鳞 阅读(2910) 评论(8)  编辑 收藏 引用 所属分类: 测试随聊

评论

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会[未登录] 2008-12-25 22:05 kk
强列要求补全  回复  更多评论
  

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会 2008-12-26 14:56 Ego
大晚上的不睡觉,你叫啥! - -  回复  更多评论
  

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会 2008-12-27 13:58 北京论坛
强列要求补全  回复  更多评论
  

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会 2008-12-28 14:08 Ego
已经做修补了,如果还有哪里不全,给偶指出来 - -  回复  更多评论
  

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会[未登录] 2008-12-29 23:44 kk
发送请求和压力的部分,能写出来吗?这只有一个框。。。不知详细的压力部分是怎么实现的  回复  更多评论
  

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会 2009-01-19 17:44 Ego
@kk

不好意思,没有,当时是在虚拟机中演示的,代码也只是过一遍,我没跟上。刘林是测试时代的核心成员,你可以尝试通过网络找到他,呵呵!  回复  更多评论
  

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会 2011-01-07 20:47 彭晶
希望学习perl软件测试  回复  更多评论
  

# re: Perl自动化测试脚本笔记--testage第三十四次(北京)软件测试交流会 2011-01-19 16:00 金鳞
@彭

给你介绍一本书:

Perl Testing /程序高手秘笈/Ian Langworth&chromatic著/盛春 蒋永清 译/东南大学出版社
  回复  更多评论
  

只有注册用户登录后才能发表评论。