发布新日志

  • QTP视频汇总

    2008-11-14 17:16:50

     


    s7T X7GD [YL ]103337
    [V] 小布老师QTP系列培训视频 - 151Testing软件测试网%o F t5e&q|8D
    http://www.boobooke.com/v/bbk104351Testing软件测试网x4P7FP0^kR;M
    本讲讲了QTP的概述,希望大家喜欢。
    0~:\!Q*^ L103337
    z!W f}LB"y103337[V] 小布老师QTP系列培训视频 - 2
    9PuvEZ"M5R3gUK103337http://www.boobooke.com/v/bbk1044
    pIe!` Y Uw?6F#q103337本讲讲了测试规划,希望大家喜欢。51Testing软件测试网P2|Y_B3k5e w

    O m2l*k'h:Gq103337[V] 小布老师QTP系列培训视频 - 3
    B,gO*t\}J103337http://www.boobooke.com/v/bbk1045
    ;n'aB s7l5wb |$uS1@w103337本讲讲了录制测试脚本,是使用QTP的第一步,希望大家喜欢。
    y2c-HTj4qDdj103337
    s,S{7W6_J3Lc'_b103337 小强作品-零基础学习软件测试-qtp-目录
    +s\7^E T8Hu@a-\1033371 qtp目录分析
    A,],`,R\d/L2B7M!s\1033372 qtp界面分析
    Nfq7teE j s1033373 qtp示例程序分析
    e0e6bF`1033374 qtp学习指南51Testing软件测试网TD'd5t(ZzxS(S}
    5 qtp基本操作录制与回放
    /@ ]L egp6p h1033376 qtp的三种录制绞?br /> 7 增强help步骤
    @i"c:`4P5VY1033378 checkpoint
    $n%yEM#sN'qb:z1033379 参数化
    h-@hB.Rjh)qT10333710 Tools下的工具介绍51Testing软件测试网/_*R@[8~
    11 qtp插件分析51Testing软件测试网w Q|bH
    12 qtp测试用例设计考题51Testing软件测试网;j$]Xx&q%b\ZY C
    13 vbs
    -bZo+HT&X _(@10333714 recovery Scenarios
    !k7Ln.R7O{w10333715 虚拟对象
    m[$b6dP'K"i10333716 专家视图测试脚本开发51Testing软件测试网9]*u%J(Q-z ~
    17 qtp描述性编程51Testing软件测试网0DH~7k W(PkuU
    18 qtp测试脚本编写规范
    1_8T"z5I T:@Y103337
    !v_b*n-gy$F103337[V] 小强老师系列作品:QTP的安装目录分析51Testing软件测试网(ce0E%mim+z h
    http://www.boobooke.com/v/bbk1590
    a8]A(w a4x+AC1U103337在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP安装后的各个目录,重点介绍了大家需要关注的东西,希望对大家有帮助。51Testing软件测试网$f9@#sNg qk2W
    51Testing软件测试网$H2ZV`+}$v
    [V] 小强老师系列作品:QTP界面剖析
    nn.Q2`*_nDN&D103337http://www.boobooke.com/v/bbk159451Testing软件测试网 @"VR6uN(x
    本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP的常用界面和菜单选项,希望对大家有帮助。51Testing软件测试网B1E6G`XlI9_Qi6H
    51Testing软件测试网5s3Ad6B4A
    [V] 小强老师系列作品:QTP示例程序之研究51Testing软件测试网I.@5B9m7W-K dy%wL
    http://www.boobooke.com/v/bbk1598
    ?/g o Y'~bm-Rk103337本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP自带的示例程序-飞机订票系统,别小看这个示例程序,小程序里面有大文章,且听小强老师给你道来, 希望对大家有帮助。
    9`lT.b0L L@1Vx0M10333751Testing软件测试网`r k Ql/s
    [V] 小强老师系列作品:QTP学习指南51Testing软件测试网h!Av,C9s0[1Hsd
    http://www.boobooke.com/v/bbk151551Testing软件测试网 Ug/?H n
    在本集中,小强老师根据自己的经验和体会,向刚刚接触QTP的朋友介绍了如何学习QTP的一些方法和经验,希望对大家有帮助。51Testing软件测试网+xD-|)`!a#{:y
    51Testing软件测试网:bjs'u^
    [V] 小强老师系列作品:QTP脚本的录制和回放51Testing软件测试网-n"J5GWyo9U:r
    http://www.boobooke.com/v/bbk159151Testing软件测试网p sM;of-h
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP最基本的脚本录制回放的功能,希望对大家有帮助。51Testing软件测试网g;t| A1l*H;@+x
    51Testing软件测试网2g7BK.}:x&z9At
    [V] 小强老师系列作品:QTP三种录制方式
    f3}&owqx'~(GETr103337http://www.boobooke.com/v/bbk1516
    \Xg2d _103337这是该系列讲座的第三集。在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP录制脚本的三种模式,希望对大家有帮助。
    y#} g,D-t'xz6F103337
    Rj(y5y5vlv103337[V] 小强老师系列作品:QTP检查点之研究51Testing软件测试网2SJ'W(r'Cg2|3{
    http://www.boobooke.com/v/bbk159551Testing软件测试网]vx+eE
    本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP的重要功能 - 检查点,希望对大家有帮助。
    ^0@9?o-o1G10333751Testing软件测试网a)bC:^ Oy_
    [V] 小强老师系列作品:QTP参数化之研究
    Zr L6VG:^103337http://www.boobooke.com/v/bbk159951Testing软件测试网ey4O#zj rg9U+? U
    本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP重要的功能-参数化, 希望对大家有帮助。51Testing软件测试网1i ]?,CV2Vi e4p

    5P h2@6A:b@Z?e103337[V] 小强老师系列作品:QTP的常用工具阐释51Testing软件测试网 cX @"Tm8R)u
    http://www.boobooke.com/v/bbk1589
    O jW4A$Z UQ'k z103337在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP附带的常用工具,希望对大家有帮助。
    6P;h n$a#OB#FG]w10333751Testing软件测试网|5Z7C;T n }#kB
    [V] 小强老师系列作品:QTP插件分析
    n Lvj } U103337http://www.boobooke.com/v/bbk168951Testing软件测试网5rN Cx,K5m*o2A
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP插件的基本知识,希望对大家有帮助。
    Y-@5~Do103337
    `h~h*R.a"Jbp103337[V] 小强老师系列作品:QTP认证考试试题分析一则
    z6^~Yy6h LaG1g103337http://www.boobooke.com/v/bbk157551Testing软件测试网+wn:K0eV y)r
    小强老师针对想入行软件测试行业的菜鸟级别的朋友,推出了零基础学习软件测试系列培训视频。
    \,dO0] N4S2Zy103337在本集中,小强老师根据自己的经验和体会,向刚刚接触QTP的朋友介绍了如何QTP认证考试的一道典型题目的分析.
    +PQb d3LZR6NP|103337
    .['Ee4e c#l0F*e103337[V] 小强老师系列作品:QTP中VBS介绍
    0Gov7rT^ I103337http://www.boobooke.com/v/bbk1621
    |`#i%f"j}!@ Kov103337在本集中,小强老师给大家介绍了QTP脚本语言VBS的基本知识,希望大家喜欢。
    Db.?E] lausyj103337
    9d@ R7{ Q*pJM103337[V] 小强老师系列作品:QTP之场景恢复(Recovery Scenarios)51Testing软件测试网'q~C XQe B
    http://www.boobooke.com/v/bbk169251Testing软件测试网5yKS}%o
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP的场景恢复(Recovery Scenarios)的基本知识,希望对大家有帮助。
    6{OHYGD'Ty10333751Testing软件测试网n1DW8jTlz
    [V] 小强老师系列作品:QTP中的虚拟对象入门51Testing软件测试网TPU3wBC0X
    http://www.boobooke.com/v/bbk169551Testing软件测试网6{:Z0\sT/}
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP中虚拟对象的基本知识,希望对大家有帮助。
    2YHJ8|2J(L+QG dAu10333751Testing软件测试网(]!]7E'BA
    [V] 小强老师系列作品:QTP之专家视图和测试脚本开发51Testing软件测试网b`{/q? urc
    http://www.boobooke.com/v/bbk169051Testing软件测试网#gVvkv&T
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP的专家视图,并介绍了脚本开发的几个重要对象,希望对大家有帮助。51Testing软件测试网/_ H&TF4o? s

    "aKi'dkd.G{a kj103337[V] 小强老师系列作品:QTP之描述性编程
    jitP0|V(e$ke103337http://www.boobooke.com/v/bbk169151Testing软件测试网,H?O2J/G V J$A C
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP的描述性编程的基本知识,希望对大家有帮助。
    :~(sO lSA&W O10333751Testing软件测试网H:wZ_\]sH(H:nP
    [V] 小强老师系列作品:QTP之测试脚本开发规范51Testing软件测试网.q}-^\W$N+D*L"@!e
    http://www.boobooke.com/v/bbk1693
    $ll5Cgxr103337在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP脚本开发的基本规范,希望对大家有帮助。
    Pvd*X Wnb10333751Testing软件测试网,\+dc#RD,sa-A}3T
    [V] 小强老师系列作品:QTP脚本的增强一则
    )LhU#u/E t103337http://www.boobooke.com/v/bbk159251Testing软件测试网#_'L^2r9D+J
    本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了如何对录制的脚本进行增强,希望对大家有帮助。
    ;YiQD`9A103337
    Sc"X1]L N9cR103337================================================================================51Testing软件测试网BD(c3c(y
    [V] QTP 9的新特性 1 - 英文视频51Testing软件测试网'l{y4P*j(^!H{
    http://www.boobooke.com/v/bbk1050
    B7E;F0q9Y-z*S103337是QTP 9软件中自带的视频讲座,英语讲座
    4A*]h#ud"R B7~^8?5{10333751Testing软件测试网tF;|Wg}
    [V] QTP 9的新特性 2 - 英文视频
    8W H(](a THR103337http://www.boobooke.com/v/bbk1051
    QM)~z&A6u103337QTP 9软件中自带的视频讲座,英语发音
    1p ~R#`~L10333751Testing软件测试网dZ+R$d+A'b t z
    [V] QTP 9的新特性 3 - 英文视频
    Y+AoI$Y!Iz103337http://www.boobooke.com/v/bbk1052
    q&Xb@,f103337QTP 9软件自带的视频讲座,英语发音,希望大家喜欢。
  • LR函数小全(转载)

    2007-10-08 16:36:13

    LR函数:
    lr_start_transaction

    为性能分析标记事务的开始

    lr_end_transaction

    为性能分析标记事务的结束

    lr_rendezvous

     Vuser 脚本中设置集合点

    lr_think_time

    暂停 Vuser 脚本中命令之间的执行 

    lr_end_sub_transaction

    标记子事务的结束以便进行性能分析

    lr_end_transaction

    标记 LoadRunner 事务的结束

    Lr_end_transaction("trans1",Lr_auto);

    lr_end_transaction_instance

    标记事务实例的结束以便进行性能分析

    lr_fail_trans_with_error

    将打开事务的状态设置为 LR_FAIL 并发送错误消息

    lr_get_trans_instance_duration

    获取事务实例的持续时间(由它的句柄指定)

    lr_get_trans_instance_wasted_time

    获取事务实例浪费的时间(由它的句柄指定)

    lr_get_transaction_duration

    获取事务的持续时间(按事务的名称)

    lr_get_transaction_think_time

    获取事务的思考时间(按事务的名称)

    lr_get_transaction_wasted_time

    获取事务浪费的时间(按事务的名称)

    lr_resume_transaction

    继续收集事务数据以便进行性能分析

    lr_resume_transaction_instance

    继续收集事务实例数据以便进行性能分析

    lr_set_transaction_instance_status

    设置事务实例的状态

    lr_set_transaction_status

    设置打开事务的状态

    lr_set_transaction_status_by_name

    设置事务的状态

    lr_start_sub_transaction

    标记子事务的开始

    lr_start_transaction

    标记事务的开始

    Lr_start_transaction("trans1");

    lr_start_transaction_instance

    启动嵌套事务(由它的父事务的句柄指定)

    lr_stop_transaction

    停止事务数据的收集

    lr_stop_transaction_instance

    停止事务(由它的句柄指定)数据的收集

    lr_wasted_time

     
    消除所有打开事务浪费的时间

    lr_get_attrib_double

    检索脚本命令行中使用的 double 类型变量

    lr_get_attrib_long

    检索脚本命令行中使用的 long 类型变量

    lr_get_attrib_string

    检索脚本命令行中使用的字符串

    lr_user_data_point

    记录用户定义的数据示例

    lr_whoami

    将有关 Vuser 脚本的信息返回给 Vuser 脚本

    lr_get_host_name

    返回执行 Vuser 脚本的主机名

    lr_get_master_host_name

    返回运行 LoadRunner Controller 的计算机名

    lr_eval_string

    用参数的当前值替换参数

    lr_save_string

    将以 NULL 结尾的字符串保存到参数中

    lr_save_var

    将变长字符串保存到参数中

    lr_save_datetime

    将当前日期和时间保存到参数中

    lr _advance_param

    前进到下一个可用参数

    lr _decrypt

    解密已编码的字符串

    lr_eval_string_ext

    检索指向包含参数数据的缓冲区的指针

    lr_eval_string_ext_free

    释放由 lr_eval_string_ext 分配的指针

    lr_save_searched_string

    在缓冲区中搜索字符串实例,并相对于该字符串实例,将该缓冲区的一部分保存到参数中

    lr_debug_message

    将调试信息发送到输出窗口

    lr_error_message

    将错误消息发送到输出窗口

    lr_get_debug_message

    检索当前消息类

    lr_log_message

    将消息发送到日志文件

    lr_output_message

    将消息发送到输出窗口

    lr_set_debug_message

    设置调试消息类

    lr_vuser_status_message

    生成带格式的输出,并将其写到 ControllerVuser 状态区域

    lr_message

    将消息发送到 Vuser 日志和输出窗口

    lr_load_dll

    加载外部 DLL

    lr_peek_events

    指明可以暂停 Vuser 脚本执行的位置

    lr_think_time

    暂停脚本的执行,以模拟思考时间(实际用户在操作之间暂停以进行思考的时间)

    lr_continue_on_error

    指定处理错误的方法

    lr_continue_on_error (0
    );lr_continue_on_error 1);

    lr_rendezvous

     
     Vuser 脚本中设置集合点

    TE_wait_cursor

    等待光标出现在终端窗口的指定位置

    TE_wait_silent

    等待客户端应用程序在指定秒数内处于静默状态

    TE_wait_sync

    等待系统从 X-SYSTEM 或输入禁止模式返回

    TE_wait_text

    等待字符串出现在指定位置

    TE_wait_sync_transaction

    记录系统在最近的 X SYSTEM 模式下保持的时间

     

    WEB
    函数列表:

    web_custom_request

    允许您使用 HTTP 支持的任何方法来创建自定义 HTTP 请求

    web_image

    在定义的图像上模拟鼠标单击

    web_link

    在定义的文本链接上模拟鼠标单击

    web_submit_data

    执行“无条件”或“无上下文”的表单

    web_submit_form

    模拟表单的提交

    web_url

    加载由“URL”属性指定的 URL

    web_set_certificate

    使 Vuser 使用在 Internet Explorer 注册表中列出的特定证书

    web_set_certificate_ex

    指定证书和密钥文件的位置和格式信息

    web_set_user

    指定 Web 服务器的登录字符串和密码,用于 Web 服务器上已验证用户身份的区域

    web_cache_cleanup

    清除缓存模拟程序的内容

    web_find

     HTML 页内搜索指定的文本字符串

    web_global_verification

    在所有后面的 HTTP 请求中搜索文本字符串

    web_image_check

    验证指定的图像是否存在于 HTML页内

    web_reg_find

    在后面的 HTTP 请求中注册对 HTML源或原始缓冲区中文本字符串的搜索

    web_disable_keep_alive

    禁用 Keep-Alive HTTP 连接

    web_enable_keep_alive

    启用 Keep-Alive HTTP 连接

    web_set_connections_limit

    设置 Vuser 在运行脚本时可以同时打开连接的最大数目

    web_concurrent_end

    标记并发组的结束

    web_concurrent_start

    标记并发组的开始

    web_add_cookie

    添加新的 Cookie 或修改现有的 Cookie

    web_cleanup_cookies

    删除当前由 Vuser 存储的所有 Cookie

    web_remove_cookie

    删除指定的 Cookie

    web_create_html_param

     HTML 页上的动态信息保存到参数中。(LR 6.5 及更低版本)

    web_create_html_param_ex

    基于包含在 HTML 页内的动态信息创建参数(使用嵌入边界)(LR 6.5 及更低版本)。

    web_reg_save_param

    基于包含在 HTML 页内的动态信息创建参数(不使用嵌入边界)

    web_set_max_html_param_len

    设置已检索的动态 HTML 信息的最大长度

    web_add_filter

    设置在下载时包括或排除 URL 的条件

    web_add_auto_filter

    设置在下载时包括或排除 URL 的条件

    web_remove_auto_filter

    禁用对下载内容的筛选

    web_add_auto_header

    向所有后面的 HTTP 请求中添加自定义标头

    web_add_header

    向下一个 HTTP 请求中添加自定义标头

    web_cleanup_auto_headers

     
    停止向后面的 HTTP 请求中添加自定义标头

    web_remove_auto_header

    停止向后面的 HTTP 请求中添加特定的标头

    web_revert_auto_header

    停止向后面的 HTTP 请求中添加特定的标头,但是生成隐性标头

    web_save_header

    将请求和响应标头保存到变量中

    web_set_proxy

    指定将所有后面的 HTTP 请求定向到指定的代理服务器

    web_set_proxy_bypass

    指定 Vuser 直接访问(即不通过指定的代理服务器访问)的服务器列表

    web_set_proxy_bypass_local

    指定 Vuser 对于本地 (Intranet) 地址是否应该避开代理服务器

    web_set_secure_proxy

    指定将所有后面的 HTTP 请求定向到服务器

    web_set_max_retries

    设置操作步骤的最大重试次数

    web_set_timeout

    指定 Vuser 等待执行指定任务的最长时间

    web_convert_param

     HTML 参数转换成 URL 或纯文本

    web_get_int_property

    返回有关上一个 HTTP 请求的特定信息

    web_report_data_point

    指定数据点并将其添加到测试结果中

    web_set_option

    在非 HTML 资源的编码、重定向和下载区域中设置 Web 选项

    web_set_sockets_option

     
    设置套接字的选项

  • 参数表中select next row和update value on的设置

    2007-09-21 11:08:38

    参数表中select next row和update value on的设置
    LR的参数的取值,和select next row和update value on的设置都有密不可分的关系。 下表给出了select next row和update value on不同的设置,对于LR的参数取值的结果将不同,给出了详细的描述。
    Select next row Update Value on 实际运行结果
    sequential each iteration 在某次循环中所有用户取值相同。
    所有用户第一次循环取第一行值,第二次循环取第二行值
    each occurrence 在某次循环中或者脚本中使用参数的地方,所有用户取值相同。
    脚本中出现要使用参数的话,参数值就更新一次,循环一次值再更新一次。
    once 在所有的循环中所有用户取值相同。
    所有的用户所有的循环中,只用一个值(即参数中的第一行值)
    random each iteration 不同的用户,在不同的循环次数中,随机取值
    each occurrence 不同的用户,脚本中出现要使用参数的话,随机取值一次,循环一次再随机取值一次
    once 不同的用户,不管循环多少次,只随机取值一次。
    unique each iteration 若选择手工自配参数,那LR按照每用户几个参数先分配参数,然后进行循环。
    若选择自动分配参数:
    Controller中edit schedule中run until comletion:按照循环次数先分配第一个VU(例如设置的循环次数为3,那分配给第一个VU 3个参数值),然后接下来的3个参数值分配给第二个VU,依次类推…...
    Controller中edit schedule中run for:若选择自动分配,LR将按照用户数均分参数,剩余的参数不使用。
    each occurrence 只能手工分配用户,给每个用户分配好X个参数后,在脚本中有参数的地方,就使用已经分配好的X个参数。
    once 按照用户数分配给每个用户分配一个参数而已。以后的循环这个用户就使用这一个参数
  • 在QTP中使用描述性编程(实例)

    2007-09-20 17:57:54

    在QTP中使用描述性编程(实例)

     

            在QTP中使用描述性编程是一个提高QTP脚本利用率的很好的方式。
            通常QTP是通过对象库来识别不同的对象,而描述性编程是QTP另外一种能够识别对象的途径,它不依赖于对象库,通过增加一些对象的描述来识别对象的。
     
            说明:本例子是以Flight飞机订票系统的登陆界面为测试页面进行描述的。
     
            步骤一:录制脚本
    Dialog("Login").WinEdit("Agent Name:").Set "Holly"
    Dialog("Login").WinEdit("Password:").SetSecure "46ef0dc7efe5834c73673898279af1204fea51a7"
    Dialog("Login").WinButton("Cancel").Click
    共录制3步操作,输入Agent Name, Password, 点击Cancel按钮
     
            步骤二:初级描述性编程
    Dialog("Regexpwndtitle:=Login").WinEdit("Attached text:=Agent Name:").Set "Holly"
    Dialog("Regexpwndtitle:=Login").WinEdit("Attached text:=Password:").Set “Mercury
    Dialog("Regexpwndtitle:=Login").WinButton("Class Name:=WinButton", "text:=Cancel").Click
            在这里要注意有三点:
            1)如果需要两个以上特性来描述一个对象,需要使用逗号(,)对描述性语言进行分割
            2)使用:=来连接属性和属性值,并且:=两边不能有空格
            3)使用SPY查看对象的属性名和属性值(Tools -> Object Spy)
     
            步骤三:描述性编程提高
    Dim descEditLogin
    Set descEditLogin = Descrīption.Create()
    descEditLogin("Class Name").Value = "Dialog"
    descEditLogin("Regexpwndtitle").Value = "Login"
     
    Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "Holly"
    Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"
    Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click
            在这里需要注意有两点:
            1)把经常使用到的对象定义为一个对象变量,方便以后调用,减少代码工作量和错误
            2)使用SPY获取对象的属性和属性值
     
            步骤四:使用自定义的环境变量
            在File>>Settings>>Environment中选择user-defined,增加一个变量
    dlgLogin = “Login”
     
            这样脚本可以被修改为:
    Dim descEditLogin
    Set descEditLogin = Descrīption.Create()
    descEditLogin("Class Name").Value = "Dialog"
    descEditLogin("Regexpwndtitle").Value = Environment.Value("dlgLogin")
     
    Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "Holly"
    Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"
    Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click
            当然,参数化的方式很多,这边介绍的是使用环境变量
     
            步骤五:从XML文件导入环境变量
    <Enviroment>
           <Variable>
                  <Name>dlgLogin</Name>
                  <Value>Login</Value>
           </Variable>
    </Environment>
    可以使用手工导入,也可以使用LoadFromFile自动导入
     
            总结:
            优点是当对象的一些属性变更后,脚本更容易维护。
            比如说对于一个通用对象,比如save, reset, cancel等按钮,一个页面有3个,30个页面就有90个对象,
            假如save变成保存,reset变成重置,cancel变成取消,那么对象库就会产生很大的变动。
            而使用了描述性编程只需要在导入的XML文件中修改一个值就可以了。
            当然描述性编程的作用远远不止这些,这次只是抛砖引玉,希望大家共同进步。


  • Session.cookie.viewstate .cache

    2007-09-14 10:08:07

    (1)存储在服务端
    (a)Session:为每个用创建的.用于存储单个用户,因为他是相对每个用户的.所以可能来取得在线人数等.
    (b)ViewState跟Session的功能很像,但是ViewState只是Session的一个子集.因为它只对单个session用户的.单个页面,所以它又叫单个页的Session;
    (c)Application用于存储所有用户都可视的信息.所以它存储的是要让所有用户共享的一些信息.如总访问数等;
    (d)cache的功能是Application的扩展,它由Application的基本的功能,又有自己的新特征如超时;而Application只有服务器重启才会消失.cache中还有而面性质的快取.outputCache.此功能可存取得整个页面的返回信息.不管是谁的访问,所以为了区分这些信息,它又有Duration和VaryByParam属性;还有个片断缓冲,它是用于页面被调用页,然用VaryByControl.这几个读者可自行找些网上资料看.

    (2)存储在服务端
    (a)cookie 其实它也可以存储在服务器端,但是大部份我们都把它放在客户端浏览器,大多数,我们用它存储用户的个性设制,和登陆信息.

    综上,我们总结出一些常见而典型的例子:
    电子商务网站的购物车:使用Session,因为购物车信息是会话相关的而且安全性很重要。
    论坛或其它网站的“记住我”功能:使用Cookie,因为这是保存的往往只是一个用户名,而且当用户下次登陆时还需要这个用户名仍然存在。
    站点计数器:如果您不用数据库的话那就是使用Application了,因为计数器是会话无关的。但是即使在使用数据库的情况下我也建议你同时使用Application来保存计数值,然后再每隔一段时间保存到数据库里去,因为这样可以减少访问数据库的次数以提高性能。
    产品信息:Cache是优先的选择,因为产品信息通常是与会话无关、修改频率低且访问频率高的数据,使用Cache来保存可以有效地提高网站的性能。
    最后,我们给出一个表格,列出以上几种数据持久化方式的特性对比,以便您做出决定:
    Application
    Cache
    Session
    Cookie
    ViewState
    存储位置
    服务器
    服务器
    服务器
    客户端
    客户端
    是否会被主动丢弃
    不会
    不会
    不会
    不会
    与会话相关
    是否被序列化
    是否发生服务器-客户端传输
    是(默认情况)
    是否被加密
    否(默认情况)
  • 性能测试分析-中级测试师用

    2007-07-17 09:07:42

    性能测试分析-中级测试师用

    2007-06-26 15:27:35 / 个人分类:loadrunner

    性能测试(并发负载压力)测试分析-简要篇
    在论坛混了多日,发现越来越多的性能测试工程师基本上都能够掌握利用测试工具来作负载压力测试,但多数人对怎样去分析工具收集到的测试结果感到无从下手,下面我就把个人工作中的体会和收集到的有关资料整理出来,希望能对大家分析测试结果有所帮助。

    分析原则:
        • 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)
        • 查找瓶颈时按以下顺序,由易到难。
        服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)
        注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。
        • 分段排除法 很有效

    分析的信息来源:
        •1 根据场景运行过程中的错误提示信息
        •2 根据测试结果收集到的监控指标数据

    一.错误提示分析
    分析实例:
    1 •Error: Failed to connect to server "10.10.10.30:8080": [10060] Connection
      •Error: timed out Error: Server "10.10.10.30" has shut down the connection prematurely

      分析:
    •A、应用服务死掉。
       (小用户时:程序上的问题。程序上处理数据库的问题)
    •B、应用服务没有死
       (应用服务参数设置问题)
        例:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%
    •C、数据库的连接
       (1、在应用服务的性能参数可能太小了 2、数据库启动的最大连接数(跟硬件的内存有关))

    2  Error: Page download timeout (120 seconds) has expired

    分析:可能是以下原因造成
    •A、应用服务参数设置太大导致服务器的瓶颈
    •B、页面中图片太多
    •C、在程序处理表的时候检查字段太大多

    二.监控指标数据分析
    1.最大并发用户数:
    应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。
    在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。
    如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。

    2.业务操作响应时间:
    • 分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。
    • 细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关?
    • 如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用“网络监视器”图确定导致性能瓶颈的网络问题
    3.服务器资源监控指标:
    内存:
        1 UNIX资源监控中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。

        2 Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。

    内存资源成为系统性能的瓶颈的征兆:
        很高的换页率(high pageout rate);
        进程进入不活动状态;
        交换区所有磁盘的活动次数可高;
        可高的全局系统CPU利用率;
        内存不够出错(out of memory errors)

    处理器:
        1 UNIX资源监控(Windows操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQL Server,可接受的最大上限是80-85%
        合理使用的范围在60%至70%。
        2 Windows资源监控中,如果System\Processor Queue Length大于2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。

    CPU资源成为系统性能的瓶颈的征兆:   
         很慢的响应时间(slow response time)
         CPU空闲时间为零(zero percent idle CPU)
         过高的用户占用CPU时间(high percent user CPU)
         过高的系统占用CPU时间(high percent system CPU)
        长时间的有很长的运行进程队列(large run queue size sustained over time)

    磁盘I/O:
        1 UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。
        2 Windows资源监控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。

    I/O资源成为系统性能的瓶颈的征兆 :
         过高的磁盘利用率(high disk utilization)
        太长的磁盘等待队列(large disk queue length)
        等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk I/O)
        太高的物理I/O速率:large physical I/O rate(not sufficient in itself)
        过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
        太长的运行进程队列,但CPU却空闲(large run queue with idle CPU)

    4.数据库服务器:
    SQL Server数据库:
        1 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。
        2 如果Full Scans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。
        3 Number of Deadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。
       4 Lock Requests/sec(锁请求/秒),通过优化查询来减少读取次数,可以减少该计数器的值。

    Oracle数据库:
      1 如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
        快存(共享SQL区)和数据字典快存的命中率:
       select(sum(pins-reloads))/sum(pins) from v$librarycache;
        select(sum(gets-getmisses))/sum(gets) from v$rowcache;
        自由内存:    select * from v$sgastat where name=’free memory’;
    2 如果数据的缓存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS参数的值(单位:块)。
      缓冲区高速缓存命中率:
        select name,value from v$sysstat where name in ('db block gets’,
        'consistent gets','physical reads') ;
       
        Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))
    3 如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。
        日志缓冲区的申请情况 :
         select name,value from v$sysstat where name = 'redo log space requests' ;
    4 如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序 。
       内存排序命中率 :
  • 成为一名好的测试人员应具备的基本素质(转载)

    2007-07-04 09:37:56

    1.探索精神  2.故障排除能手  3.不懈努力  4.创造性  5.追求完美

    6.判断准确  7.老练稳重 8.说服力   9.在编程方面受过教育。

  • 怎么样提高软件测试员自身素质培养?(转载)

    2007-07-04 09:20:06



      (1) 首先,应对软件测试感兴趣和对自己有自信,如果具备了这两点,那么在开发过程中不管遇到什么样的困难,我相信你一定能克服。

      (2) 善于怀疑,世界上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。别人认为是对的,我却认为不是对的。

      (3) 打破砂锅问到底的精神,对于只出现过一次的bug,一定找出原因,不解决誓不罢休。

      (4) 保持一个良好的心情,否则可能无法把测试作好。不要把生活中的不愉快的情绪带到工作中来

      (5) 做测试时要细心,不是所有的bug都能很容易的找出,一定要细心才能找出这些bug。

      (6) 灵活一些,聪明一点,多制造一些容易产生bug的例子。

      (7) 在有条件的情况下,多和客户沟通,他们身上有你所需要的。

      (8) 设身处地为客户着想,从他们的角度去测试系统。

      (9) 不要让程序员,以“这种情况不可能发生”这句话说服你,相反,你应该去说服他,告诉他在客户心里,并不是这样的。

      (10) 考虑问题要全面,结合客户的需求、业务的流程、和系统的构架,等多方面考虑问题。

      (11) 提出问题不要复杂化,这一点和前面的有点矛盾,如果你是一新手,暂时不要管这一点,因为最终将有你的小组成员讨论解决。

      (12) 追求完美,对于新测试员来说,努力的追求完美,这对你很好,尽管有些事无法做到,但你应该去尝试。

      (13) 幽默感,能和开发小组很好的沟通是关键,试着给你的开发小组找一个“BUG杀手”,或对他们说“我简直不敢相信,你写的程序居然到现在没有找到BUG”。

      (14) 到此是不是对测试很有兴趣呢?不过我要告诉你,测试过程中有酸甜苦辣,其中的滋味只有你知道,也许你会感到枯燥,要学会放松自己,去溜冰或做你喜欢做的事,不过,别放弃,因为你的自信告诉过你“你会是很优秀的测试员”不是吗?

    我们常见软件测试的技巧 :

      软件测试虽然辛苦,但是掌握了一定的技巧之后将使你事半功倍。

      (1) 边界测试,测试用户输入框中的数值的最大数和最小数,以及为空时的情况。

      (2) 非法测试,例如在输入数字的地方输入字母。

      (3) 跟踪测试,跟踪一条数据的流程,保证数据的正确性。

      (4) 在开始测试时应保证数据的正确性,然后在从系统中找出各种BUG。

      (5) 接口测试,程序往往在接口的地方很容易发生错误,要在此模块测试勿掉以轻心。

      (6) 代码重用测试,在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码上修改或修改不全面,而造成的错误。

      (7) 突发事件测试,服务器上可能发生意外情况的测试。

      (8) 外界环境测试,有些系统在开发时依赖于另外一个系统,当另外一个系统发生错误时, 这个系统所受到的影响的情况。

      (9) 在程序员刚修复Bug之后的地方,再找一找,往往程序员只修复报告出来的缺陷而不去考虑别的功能在修改时可能会重新造成错误。

      (10) 认真做好测试记录在做完一天的测试记录之后,第二天再根据第一天的测试记录重复测试你会发现有未修正的错误。

      (11) 文字测试,如果在系统中有用词不当的地方,我想这是不应该的。

      (12) 系统兼容测试,例如有些程序在IE6能运行正常,到IE5下不能运行。有些程序在WIN2000下能运行,而到WIN98却不能运行。像一些很特别的用户去使用系统,你很有可能发现BUG。

      (13) 用户的易用性测试,往往用户的需求是不断的变化的,而其中的一部份变化的原因,是有用户操作上不方便引起的。
Open Toolbar