lr之java Vuser

上一篇 / 下一篇  2017-06-12 15:54:34 / 个人分类:性能测试相关

因为一直做自动化测试,对java比较熟悉,学习lr过程中C语法老是会混,终于发现lr是支持java的,这下就好了。

LoadRunner中的JavaVuser的特点:

一、使用方便,有强大的开源类库。

二、可以更方便的使用自定义类、算放,节省开发时间。

三、JavaVuser是编译的,出错提示更准确。

四、有的java语法支持不太好,例如静态代码块

五、需要使用者懂java语言。

六、使用JavaVuser时若脚本中包含自定义类,需要确保这个类的线程是安全的。

七、使用JavaVuser时不要在Java Vuser衍生出来的线程中使用Java Vuser Api,运行时需要设置解析

LoadRunner中的JavaVuser的使用场景:

一、是不太适合录制的业务功能点的性能测试,例如网页上Http文件的下载过程、视频播放等,因为用Java Vuser实现无法录制的测试需求  这类测试需求往往关注于对服务器产生的压力,重点测试在一定压力下服务器的负载情况,为评估、部署、调优系统提供参考。在这类测试工作中,Java的作用仅是一门语言,用于辅助测试人员完成测试程序的开发。  在性能测试工作中,不能录制的测试点很多,主要有以下几类:    含有控件的Web应用  在Web应用中,很多包含一些插件的浏览器应用经常不能录制。这类应用往往涉及很多协议,因此录制起来不是特别方便。  对于这类应用,可以用Java语言调用其功能来完成用户行为的模拟。    一些和媒体播放、文件下载等相关的应用  媒体播放或文件下载等过程的录制往往不容易控制,如果是应用基于P2P的协议,则会更加复杂。因此,这类测试只能由测试人员开发虚拟用户脚本来完成。  

二、是基于Java语言开发的应用系统的性能测试,这类应用更适合采用Java虚拟用户进行测试。  基于Java语言开发的应用系统,在性能测试中采用Java虚拟用户更显得“门当户对”。这类虚拟用户主要应用在下面两类测试中:核心算法或业务的执行效率  对银行、电信等大型的基于J2EE的架构应用系统中,开发阶段的性能测试是必不可少的。为了降低后期遇到性能问题的风险,往往在开发阶段进行一些核心业务的性能测试。这些核心业务或要求较高的执行效率,或者要求支持较多用户的并发。因此,可以利用Java Vuser来测试这些业务的执行效率。    Java应用中不能录制的业务模块  很多时候,一些J2EE架构的业务系统用 LoadRunner录制起来不是特别方便,例如一些Java智能客户端程序。这时可以手工编写测试代码,完成测试任务。与非Java应用相比,Java 应用中不能录制的业务功能更适合采用Java虚拟用户,因为可以直接对一些方法进行调用。

线程安全的含义是:序中开启多个线程对同一个对象或者同一个变量进行资源争夺,在大压力或者cpu资源紧张的时候更容易出现,这样就会导致数据混乱等问题,因此就需要控制多个线程对某个资源的有序访问或修改如果一个类在多线程的访问下,其状态是可以预测的,并且不需要额外的同步,那么这个类就是线程安全的类。没有修改只有读的操作或者操作不同的对象或者变量是线程安全的。

若要写出线程安全的代码,那么就需要注意以下事项


1.不变对象 
(1)它的所有字段都是 final
(2)该类声明为 final
(3)不允许 this 引用在构造期间逸出
(4)任何包含对可变对象(如数组、集合或类似 Date 的可变类)引用的字段:
    a.是私有的 
    b.从来不被返回 
    c.是对它们所引用对象的唯一引用
    d.构造后不会更改被引用对象的状态 
2.可变对象
1)明确共享资源 :类变量、实例变量
2)利用同步和锁机制 :解决内存的可见性和互斥性
    a)synchronized
    保证可见性和互斥性
    执行顺序如下:
    (1)获得同步锁(互斥)
    (2)清空线程工作内存
    (3)从主存拷贝变量副本到线程工作内存(对本线程可见)
    (4)在线程中对变量进行处理
    (5)将变量从线程工作内存写回到主存(对其他线程可见)
    (6)释放锁(解除互斥)
    b)volatile
    只保证了可见性
    直接操作主存
    (1)本线程可以看到其他线程写入的最新结果
    (2)其他线程也可以看到本线程写入的最新结果
    c)wait,notify,notifyAll
    用于线程间进行协调,从而使得共享资源不可能达到不一致的状态,因此共享资源是线程安全的
    d) j.u.c
    也包括锁机制(Lock)、协调机制(Condition
    包结构:
    (1)线程池
    (2)同步集合
    (3)锁
    (4)原子操作 
3.  ThreadLocal
线程本地变量,防止内存泄漏
编写JavaVusr步骤:
1)分析被测项目和使用的技术,分析是否适合使用java Vuser
2)在eclipse中编写一个正确的模拟代码
3)将eclipse中代码移到lr中的Java Vuser
4)结合业务特点对脚本进行增强
5)使用controler设计场景
LR中怎么从web脚本转换到Java Vuser
1.把web中的lr脚本复制出来到1.txt中
2.在txt中把参数界定符部分需要手动改为<>
3.cmd打开Dos
4.cd c:\program Files\HP\LoadRunner\dat\
5.运行..\bin\sed -f web_to_java.sed c:\1.txt c:\java.txt

TAG: java

 

评分:0

我来说两句

Open Toolbar