学历代表过去、能力代表现在、学习力代表未来

发布新日志

  • Linux性能监控:/proc/loadavg

    2011-01-12 10:59:28

    转载自:http://www.bitscn.com/os/linux/200802/128193.html

    /proc/loadavg

    该文件中的所有值都是从系统启动开始累计到当前时刻。该文件只给出了所有CPU的集合信息,不能该出每个CPU的信息。

    [root@localhost ~]# cat /proc/loadavg

    4.61 4.36 4.15 9/84 5662

    每个值的含义为:

    参数 解释

    lavg_1 (4.61) 1-分钟平均负载

    lavg_5 (4.36) 5-分钟平均负载

    lavg_15(4.15) 15-分钟平均负载

    nr_running (9) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思

    nr_threads (84) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)

    last_pid(5662) 最大的pid值,包括轻量级进程,即线程。

    假设当前有两个CPU,则每个CPU的当前任务数为4.61/2=2.31

  • Linux性能监控:/proc/stat

    2011-01-12 10:50:49

    [work@tester ~]$ cat /proc/stat

    cpu  4648777 242817 2539007 699596054 8396284 0 42795 89960
    cpu0 1411403 145057 861446 169629599 6803337 0 14491 23587
    cpu1 1164400 29715 661794 176372871 628842 0 9782 21518
    cpu2 1042000 39424 516241 176764077 495361 0 9320 22497
    cpu3 1030972 28621 499524 176829506 468742 0 9200 22356
    intr 1620630787 0 2 0 0 0 0 0 0 1 0 0 0 4 0 0 0 0 0 106 0 19557449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 639817 734310 860777 188320 64664118 0 15555559 0 0 0 0 0 0 0 0 0 0 0 0 361839192 19478113 44 19020227 179 350986900 18785624 177 365970867 18587107 161 363761636 93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    ctxt 5732137946
    btime 1293011125
    processes 2373776
    procs_running 1
    procs_blocked 0

    输出解释

    CPU 以及CPU0、CPU1、CPU2、CPU3每行的每个参数意思为:

    参数 解释

    user:从系统启动开始累计到当前时刻,用户态的CPU时间,不包含 nice值为负进程。1jiffies=0.01秒(单位:jiffies)

    nice:从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间(单位:jiffies)

    system:从系统启动开始累计到当前时刻,核心时间(单位:jiffies)

    idle:从系统启动开始累计到当前时刻,除硬盘IO等待时间以外其它等待时间(单位:jiffies)

    iowait:从系统启动开始累计到当前时刻,硬盘IO等待时间(单位:jiffies)

    irq:从系统启动开始累计到当前时刻,硬中断时间(单位:jiffies)

    softirq:从系统启动开始累计到当前时刻,软中断时间(单位:jiffies)

    CPU时间=user+system+nice+idle+iowait+irq+softirq

    “intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。

    “ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。

    “btime”给出了从系统启动到现在为止的时间,单位为秒。

    “processes”:自系统启动以来所创建的任务的个数目。

    “procs_running”:当前运行队列的任务的数目。

    “procs_blocked”:当前被阻塞的任务的数目。

  • 转载:如何监控TOMCAT性能

    2011-01-12 09:48:03

    转载自:http://bbs.51testing.com/thread-113013-1-1.html

    基本思路:利用Tomcat自带的Status页面

    基本实现步骤:

    1.打开Tomcat的status页面,方法为编辑Tomcat的conf目录下的tomcat-users.xml文件,在文件中添加
    <tomcat-users>
      <role rolename="manager"/>
      <user username="admin" password="pass" roles="manager"/>
    </tomcat-users>
    这里的password和username请自行修改,保存之后重启tomcat,打开http://localhost:8080/manager/status就可以看到status页面了

    2.通常我们需要读取的是另一个页面,即http://localhost:8080/manager/status?XML=true,这样整个服务器性能数据就以一个单行的xml文件形式表示了。

    3.读取这个页面的信息,然后对其进行xml或者字符串分析和处理,以取得我们需要的性能数据。

    4.上面得到的只是当前情况下的性能数据,要获得一个阶段的性能数据,必须设定采样频率,定时读取,将数据汇总并分析

    5.对得到数据进行生成图表等操作。

  • 什么是swf

    2011-01-10 15:29:08

    swf:shock wave flash 一种支持矢量和点阵图形的动画文件格式(档案格式),主要用于网页设计和动画制作领域。swf文件也可称为Flash文件。

    swf文件的整体结构是 header + body 组成的。

  • 什么是css

    2011-01-10 15:15:19

    CSS:Cascading Style. Sheet,层叠样式表。是一组格式设置规则,用于控制Web页面的外观。

    通过使用CSS样式设置页面的格式,可将页面的内容与表现形式分离。页面内容存放在HTML文档中,而用于定义表现形式的CSS规则则存放在另一个文件中或HTML文档的某一部分,通常为文件头部分。将内容与表现形式分离,不仅可使维护站点的外观更加容易,而且还可以使HTML文档代码更加简练,缩短浏览器的加载时间。

    CSS样式表加入网页的方式:内联样式优先级最高,其次是链接样式,再次是内嵌式,最后是导入样式。

    CSS构成部分: 选择符(selector),属性(properties)和属性的取值(value)。

    语法: selector {property: value} (选择符 {属性:值})

    参考链接:http://baike.baidu.com/view/15916.htm

  • 转载:LoadRunner web_add_cookie函数

    2011-01-10 13:57:30

    1、为什么要使用cookie模拟

    从日常项目测试过程中的问题说起。比如要进行论坛中的文件下载功能的测试。我们都知道只有登录用户才能进行下载操作,这样我们的测试过程可能就变成了先登录系统,然后再进行下载操作。在使用loadrunner设计脚本时就要先在初始化部分写登录脚本,然后再action中写下载操作,当单个用户运行时我们可能看不到什么问题。当用户并发量较多时,问题马上暴露出来了。大部分用户可能很长时间也没有下载成功,大量的初始化登录操作已经给系统造成了很大的压力,而在日常访问中,这种大量短时间登录的压力是不容易出现的。这样的测试结果可能无法达到我们的测试目标。

    的确,不能处理较大的登录吞吐可能已经是系统的瓶颈了,我们可以通过这种全流程的测试方式发现登录的问题。但是后续的测试我们可能就无法进行下去了。当项目组解决了登录的吞吐问题时,可能项目工期已经十分紧张了,再进行重要的下载功能测试可能已经太晚了。

    这种情况在测试过程中经常会出现,我们要如何绕过登录尽早的进行后续的下载操作呢?如果网站使用了cookie的机制,则我们可以尝试使用下面的方法。

    2、怎么使用loadrunner模拟

        Loadrunner的web函数中提供了几个关于cookie的函数。
        web_remove_cookie()
        web_add_cookie()
        web_cleanup_cookies();
        web_reg_add_cookie();

    这里我们为了模拟cookie绕过登录使用web_add_cookie();

    首先获取网站留在客户端上的cookie都存储了什么。通常主要内容包括名字,值,过期时间,作用域和路径,分为会话cookie和文件cookie。会话cookie存储在内存里,关闭浏览器后就没有了,这种很难模拟。文件cookie是将cookie信息写到硬盘上,关闭浏览器再次打开后仍可以使用。

    我们要模拟的就是存储在硬盘文件里的cookie。我们观察cookie文件的内容,如果使用ie的话,在“C:\Documents and Settings\用户名\LocalSettings\Temporary Internet Files”中的用户名@域名的文件里,cookie存储都是加密的,所以我们直接看并看不出什么特别的东西,也搞不清楚具体是什么。这时我们借助IE webdeveloper 工具获取cookie值如下所示:cdb_cookietime=2592000;cdb_smile=1D1; cdb_sid=71WKOd; cdb_auth=TzsVl16XRFahjqkfuWyoF5OzI%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMsa9s; cdb_visitedfid=20; cdb_onlineusernum=28

    获得了cookie信息后,我们进行编辑loadrunner脚本。将cookie每个分号分行,使用UltraEdit进行列模式操作,在每句后面加上域名。(域名在webdeveloper的Attributes下也可以找到domain对应值),修改完成后如下:
    web_add_cookie("cdb_cookietime=2592000;domain=172.16.1.3");
    web_add_cookie("cdb_smile=1D1;domain=172.16.1.3");
    web_add_cookie("cdb_sid=71WKOd;domain=172.16.1.3");
    web_add_cookie("cdb_auth=TzsVl16XRFahjqkfuWyoF5OzI%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMsa9s;domain=172.16.1.3");
    web_add_cookie("cdb_visitedfid=20;domain=172.16.1.3");
    web_add_cookie("cdb_onlineusernum=28;domain=172.16.1.3");

    把这些值放在要访问的url的web函数之前,你就可以绕过登录进行后续操作了。
    如:
    Action()
    {

    web_add_cookie("cdb_cookietime=2592000;DOMAIN=172.16.1.3");
    web_add_cookie("cdb_smile=1D1;DOMAIN=172.16.1.3");
    web_add_cookie("cdb_oldtopics=D280D39523D39418D;DOMAIN=172.16.1.3");
    web_add_cookie("cdb_sid=eSuWgw;DOMAIN=172.16.1.3");
    web_add_cookie("cdb_auth=TzsVl16XRFahjqkfuWyoF5OzI%2BrekHgiy0YXJd8m1y9vq6aV4bg3GGMsa9s;DOMAIN=172.16.1.3");
    web_add_cookie("cdb_visitedfid=20;DOMAIN=172.16.1.3");

            web_url("cookies",
            "URL=http://172.16.1.3:8080/bbs/index.php",
            "referer=http://172.16.1.3/newiweb/index/dealIndex.do?action=Index",
            "Mode=HTML",
            "RecContentType=text/html",
            LAST
            );

            return 0;
    }

        最后注明一下:loadrunner的web录制功能是自动的增加cookie的,只要在cookie不过期的情况下,我们不需要手工的增加cookie,当出现录制不上或录制的值发生变化时可以手工进行添加。

        在loadrunner场景设计使用其他负载机器时,同样可以使用你本机的这个cookie值进行,不会因为客户端机器发生变化而产生影响。

  • BSS

    2011-01-10 11:18:27

    BSS:Business Support System 业务支持系统。BSS往往指计费、结算、帐务、客服、营业等系统。

    OSS:Operation support system 运营支撑系统。OSS往往指网管、网优等系统。

    两者合称BOSS:Business and Operation support system 业务运营支持系统。主要应用于电信行业,是一种综合的运营和管理平台。BSS是面向运营商业务和服务的,而OSS是对BSS提供技术(特别是计算机技术)支撑和管理的。

  • HTML和SHTML区别

    2011-01-10 11:01:34

    HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。

    SHTML不是HTML而是一种服务器API。SHTML是服务器动态产成的HTML。虽然两者都是超文本格式,但SHTML是一种用于SSI技术的文件,也就是Server Side Include--SSI 服务器端包含指令。如果Web Server有SSI功能的话(大多数的WEB服务器如Netscape Enterprise Server等均支持SSI命令),会对SHTML文件特殊招待。 先扫一次SHTML文件看没有特殊的SSI指令现在,有就按Web Server设定规则解释SSI指令,解释完后跟HTML一样处理。

    总之,HTML是静态的网页文件,只包含简单的网页语言,不包含服务器脚本和命令;而SHTML是动态的可执行文件,包含服务器脚本和命令。

  • Loadrunner脚本回放 场景运行过程中常见错误分析

    2011-01-07 16:22:59

    引用自http://www.bybdqn.com/open_xue.asp?Newsid=1541

    问题一:Loadrunner超时错误问题描述

      Loadrunner超时错误:在录制Web协议脚本回放时超时情况经常出现,产生错误的原因也有很多,解决的方法也不同。

      问题现象Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)。

      错误分析对于HTTP协议,默认的超时时间是120秒(可以在LoadRunner中修改),客户端发送一个请求到服务器端,如果超过120秒服务器端还没有返回结果,则出现超时错误。

      解决办法首先在运行环境中对超时进行设置,默认的超时时间可以设置长一些,再设置多次迭代运行,如果还有超时现象,需要在“Runtime Setting”>“Internet Protocol:Preferences”>“Advanced”区域中设置一个“winlnet replay instead of sockets”选项,再回放是否成功。

      问题现象Error -27498: Timed out while processing URL=http://172.18.20.70:7001/workflow/bjtel/leasedline/ querystat/ subOrderQuery.do

      错误分析

      这种错误常常是因为并发压力过大,服务器端太繁忙,无法及时响应客户端的请求而造成的,所以这个错误是正常现象,是压力过大造成的。

      如果压力很小就出现这个问题,可能是脚本某个地方有错误,要仔细查看脚本,提示的错误信息会定位某个具体问题发生的位置。

      解决办法例如上面的错误现象问题定位在某个URL上,需要再次运行一下场景,同时在其他机器上访问此URL。如果不能访问或时间过长,可能是服务器或者此应用不能支撑如此之大的负载。分析一下服务器,最好对其性能进行优化。

      如果再次运行场景后还有超时现象,就要在各种图形中分析一下原因,例如可以查看是否服务器、DNS、网络等方面存在问题。

      备注:增加一下运行时的超时设置,在“Run-Time Settings”>“Internet Protocol:Preferences”中,单击“options”,增加“HTTP-request connect timeout”或者“HTTP-request receive”的值。

    问题二:LoadRunner脚本中出现乱码问题现象某个链接或者图片名称为中文乱码,脚本运行无法通过。

      错误分析

      脚本录制可能采用的是URL-based script方式,如果程序定义的字符集合采用的是国际标准,脚本就会出现乱码现象。

      解决办法重新录制脚本,在录制脚本前,打开录制选项配置对话框进行设置,在“Recording Options”的“Advanced”选项里先将“Surport Charset”选中,然后选中支持“UTF-8”的选项。

    问题三:LoadRunner HTTP(404/500)服务器状态代码问题现象HTTP404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运行直到结束。

      错误分析

      此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。

      解决办法在出现错误的位置进行脚本关联,在必要时插入相应的函数。

      错误现象HTTP 500 Internal Server Error服务器内部错误,脚本运行停止。

      错误分析

      服务器碰到了意外情况,使其无法继续回应请求。

      解决办法出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,此时需要此程序的开发人员配合来解决,而且产生的原因根据实际情况来定,测试人员无法单独解决问题,而且应该尽快解决,以便于后面的测试。

    问题四:LoadRunner请求无法找到错误现象Error -27979: Requested form. not found [MsgId: MERR-27979]

      web_submit_form. highest severity level was "ERROR",0 body bytes, 0 header bytes [MsgId: MMSG-27178]"

      这时在tree view中看不到此组件的相关URL。

      错误分析

      所选择的录制脚本模式不正确,通常情况下,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的Java Applet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用HTTPS安全协议,这时则使用“URL-based script”模式进行录制。

      解决办法打开录制选项配置对话框进行设置,在“Recording Options”的“Internet Protocol”选项里的“Recording”中选择“Recording Level”为“HTML-based script”,单击“HTML Advanced”,选择“Script. Type”为“A script. containing explicit”。然后再选择使用“URL-based script”模式来录制脚本。

    问题五:LoadRunner不执行检查方法错误现象在脚本中插入函数Web_find,在脚本中设置文本以及图像的检查点,但是在回放过程中并没有对设置的检查点进行检查,即Web_find失效。

      错误分析

      由于检查功能会消耗一定的资源,因此LoadRunner默认关闭了对文本以及图像的检查,所以在设置检查点后,需要开启检查功能。

      解决办法打开运行环境设置对话框进行设置,在“Run-time Settings”的“Internet Protocol”选项里的“Perference”中勾选“Check”下的“Enable Image and text check”选项。

      =======================================================================

      在使用LoadRunner进行WEB脚本录制的时候,很多人不清楚URL-based 方式和 HTML-based方式的差别,

      以及何种情况下使用何种录制方式,这里给出一个简单的判断方法。

      HTML-based 方式

      HTML-based 方式对每个页面录制形成一条语句,对LoadRunner来说,在该模式下,访问一个页面,

      首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),

      然后建立几个连接分别获取相应的元素。

      URL-based 方式

      URL-based 方式将每条客户端发出的请求录制成一条语句,对LoadRunner来说,在该模式下,一条语句只建立一个到服务器的连接,

      LoadRunner提供了web_concurrent_start和web_concurrent_end函数模拟HTML-based的工作方式。

      如何决定选择何种录制方式?

      1、如果应用是WEB应用,首选是HTML-based方式;
      2、如果应用是使用HTTP协议的非WEB应用,首选是URL-based方式;
      3、如果WEB应用中使用了java applet程序,且applet程序与服务器之间存在通讯,选用URL-based方式;
      4、如果WEB应用中使用的javascript、vbscript脚本与服务器之间存在通讯(调用了服务端组件),选用URL-based方式

    测试Web的常见问题

    • 网络带宽问题。

    对Web进行压力测试时,通常百兆网络是不够的,当网络带宽不够的时候server端没有足够压力。用LoadRunner所在的Windows的性能管理器看一下网络利用率就知道了。

    • Vuser脚本的检查。

    虽然Loadrunner提供了方便的脚本录制功能,但由于录制时可能出现的操作偏差,也应手工检查生成的Vuser脚本。去除某些与压力测试无关的东西。否则可能会出现Loadrunner测试结果有误或压力上不去的情况(比如vuser访问一些不存在的资源)。

    • Runtime setting。

    在创建Loadrunner scenario时,每台机器的vuser的runtime setting都应该分别设置并检查,不能只对第一个vuser的runtime setting进行设置。通常你会关掉think time,以便能用较少的机器达到较大的压力。另外,如果返回页面里包含了一些访问其它资源的链接比如图片服务器,这时应关掉 download non-html resources。

    • 没有检查返回页面。

    当server端出错时应用程序有可能返回错误信息,但对HTTP来讲仍是成功的响应,返回码为200 O.K. 这样在Loadrunner就被记为成功的transaction。于是,server端出错越多,Loadrunner测出的性能越好。解决办法:开启并检查应用的错误日志;或者启用Loadrunner的返回内容检查功能。

    • 当心Loadrunner所在机器的磁盘空间。

    缺省情况下Loadrunner会把运行结果的详细信息放在C盘的Documment and Settings的用户目录下,当大压力长时间运行或有大量出错时,Loadrunner会生成大量的数据到该目录下。当磁盘空间满了后,机器的响应将变得很慢。

  • PLSQL常用功能

    2011-01-07 15:35:32

    文件->新建:

       测试窗口、命令窗口、SQL窗口、程序窗口

    工具:

       查找数据库对象、导入表、导出表(Oracle/SQL/PLSQL Developer)、数据生成器、事件监视器、测试管理器

    PLSQL美化器

    查看Oracle数据库所有表名称:

    SQL> SELECT table_name FROM user_tables;

    备注:dba_tables,all_tables,user_tables都可以。

    查看某张表talbe结构:

    SQL> DESC table

    查看某张表talbe的所有数据:

    SQL> SELECT * FROM table;

  • wsdl

    2011-01-07 11:54:17

    传统上,我们把计算机后台程序(Daemon)提供的功能,称为"服务"(service)。比如,让一个杀毒软件在后台运行,它会自动监控系统,那么这种自动监控就是一个"服务"。通俗地说,"服务"就是计算机可以提供的某一种功能。
    根据来源的不同,"服务"又可以分成两种:一种是"本地服务"(使用同一台机器提供的服务,不需要网络),另一种是"网络服务"(使用另一台计算机提供的服务,必须通过网络才能完成)。
    举例来说,我现在有一批图片,需要把它们的大小缩小一半。那么,我们可以把"缩放图片"看成是一种服务。你可以使用"本地服务",在自己计算机上用软件缩小图片,也可以使用"网络服务",将图片上传到某个网站,让服务器替你缩小图片,完成后再通过网络送回给你。这就好比,一件事你可以自己做,也可以交给另一个人去做。肚子饿了,你可以自己做饭,也可以打电话去订一份比萨,让店家替你做好送上门。
    "网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。
    举例来说,去年我写过一个"四川大地震图片墙",它能动态显示关于四川地震的最新图片。但是,所有的图片都不是储存在我的服务器上,而是来自flickr.com。我只是发出一个动态请求,要求flickr.com向我提供图片。这种情况下,flickr.com提供的就是一种Web service。如果我把图片都存放在本地服务器,不调用flickr.com,那么我就是在使用"本地服务"。
    所以,Web service让你的网站可以使用其他网站的资源,比如在网页上显示天气、地图、twitter上的最新动态等等。

    WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL,可描述Web服务的三个基本属性:
    ·服务做些什么——服务所提供的操作(方法)
    ·如何访问服务——和服务交互的数据格式以及必要协议
    ·服务位于何处——协议相关的地址,如URL

    WSDL基本信息:

    Web Services Description Language的缩写,是一个用来描述web服务和说明如何与Web服务通信的XML语言。用于描述Web Service的服务,接口绑定等,为用户提供详细的接口说明书。

    元素:

       Type:使用某种语法(如 XML 模式)的数据类型定义(string、int)

      Message:要传递的数据

      Part:消息参数

      Operation:服务支持的操作的抽象描述

      Port Type / Interface:一个或多个端点支持的操作的抽象集。

      Binding:特定端口类型的具体协议和数据格式规范

      Port / Endpoint:绑定和网络地址的组合。

       Service:相关端点的集合,包括其关联的接口、操作、消息等。

    WSDL 文档的主要结构是类似这样的:

      <definitions>

      <types>

      definition of types........

      </types>

      <message>

      definition of a message....

      </message>

      <portType>

      definition of a port.......

      </portType>

      <binding>

      definition of a binding....

      </binding>

      </definitions>

  • SOAP基础

    2011-01-07 10:15:29

    简单对象访问协议。一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。

    SOAP 包括四个部分:

    • SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。
    • SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
    • SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。
    • SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。

    SOAP 消息格式:

      SOAP 标头

      <SOAP-ENV: Envelope

      Attributes>

      <SOAP-ENV:Body

      Attributes>

      </SOAP-ENV:Body>

      </SOAP-ENV:Envelope>

    语法规则:

    • SOAP 消息必须用 XML 来编码
    • SOAP 消息必须使用 SOAP Envelope 命名空间
    • SOAP 消息不能包含 DTD 引用
    • SOAP 消息不能包含 XML 处理指令

    soap扩展库中主要包括三种对象:

    • SoapServer:用于创建php服务器端页面时定义可被调用的函数及返回响应数据。
    • SoapCliet :用于调用远程服务器上的SoapServer页面,并实现了对相应函数的调用。
    • SoapFault :用于生成soap访问过程中可能出现的错误。

  • PLSQL Developer连接数据库

    2011-01-04 22:23:02

    使用PLSQL Developer连接Oracle数据库,要同时安装PLSQL Developer和Oracle客户端(或精简版客户端)。

    安装完毕后,修改安装目录下:\Oracle9\network\admin\tnsnames.ora文件。加入你要访问的数据库的连接串,一般形式为
    DATABASE_NAME=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.2)(PORT   =1521)))(CONNECT_DATA=(SERVICE_NAME=test)))

    然后登录的时候DataBase选择DATABASE_NAME,用户名密码输入要访问的数据库的用户名和密码就行了。

  • 数据库大表小表

    2010-12-29 12:09:43

    The "select * from big where object_id in ( select object_id from small )" will sort BIG once and SMALL once and join them (sort merge join) in all likelyhood.

    But: The "select * from big where exists ( select null from small where  small.object_id = big.object_id )" will tend to FULL SCAN big once and FOR EVERY   ROW in big -- FULL SCAN small

  • LoadRunner的并发concurrent

    2010-12-21 16:48:01

    web_concurrent_start和web_concurrent_end函数间的脚本是URL并发执行。(脚本先顺序编译,最后一起发送)
  • HttpWatch

    2010-12-16 11:16:01

    一款强大的网页数据分析工具。集成在Internet Explorer工具栏。包括网页摘要、Cookies管理、缓存管理、消息头发送/接受、字符查询、POST数据和目录管理功能、报告输出。

    可以检查页面加载的时间和速度,可以定位页面加载慢的原因(图片过大、组件加载慢、后台处理时间),为优化网页提供参考依据。

    1.安装HttpWatch,建议使用英文版

    2.使用方法:打开IE浏览器,选择菜单“查看-浏览器栏”,再选择“HttpWatch Professional”即可。

    HttpWatch工具使用技巧:

    http://www.cnblogs.com/mayingbao/archive/2007/11/30/978530.html

  • 软件测试过程模型

    2010-12-13 13:42:37

    1、V模型

        软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系。

        局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现。

    2、W模型

        在V模型的基础上,增加开发阶段的同步测试,形成W模型。测试与开发同步进行,有利用尽早的发现问题。

        局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整。

    3、H模型

        软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行。

    4、X模型

        提出针对单独的程序片段进行相互分离的编码和测试,然后经过频繁的交接,通过集成最终合成为可执行的程序。

  • 黑盒测试的组成阶段

    2010-12-13 13:32:48

        黑盒测试又被称为功能测试、数据驱动测试或基于规格说明的测试,实际上是站在最终用户的立场上,检验输入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需求的规定。

    一套完整的测试应该由五个阶段组成:

    1.测试计划

      首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准,以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。

    2.测试设计

      将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响到测试结果的有效性)。

    3.测试开发

      建立可重复使用的自动测试过程。

    4.测试执行

      执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。

    5.测试评估

      结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行综合评价。

      显然,黑盒测试只有严格按照步骤进行,才可能对应用程序的质量进行把关。然而,如果没有一种优秀的测试工具的帮助,单纯凭借手工测试,不但将耗费大量的人力、物力和财力,而且有很多测试工作是难以实现甚至是无法实现的。

  • LoadRunner常用功能

    2010-12-13 10:01:33

    1、事务

    事务就是一个计时标识。通常事务时间所反映的是一个操作过程的响应时间。

    使用事务的原因:

    a.事务是LoadRunner度量系统性能指标的唯一手段;(没有事务则没有办法衡量系统的响应时间,也许有人说LoadRunner可以通过编程来计时得到,不错如果你编程能力够强是能够实现的,但肯定不如LoadRunner中的事务用的简单而且方便)

    b.事务能够用于度量高风险业务流程的性能指标;

    c.事务能够度量在一组操作中每一步的性能指标;

    d.通过事务计时实现了不同压力负载下的性能指标对比;

    e.通过事务计时可以帮助定位性能瓶颈;

    lr_start_transaction

    lr_end_transaction

    2、集合点(常用于并发)

    集合点(Rendezvous)就是一个并发访问的点。当在系统上模拟大量的用户负载,需要同步各个Vuser以便在同一时刻执行任务。通过创建集合点,可以确保多个Vuser同时执行操作。

    只能在Action部分。一般是配合事务适用。

    lr_rendezvous

    3、检查点(文本和图像)

    对于查询类的脚本,通过添加检查点来保证在测试时结果的正确性(是否返回正确网页,页面内容是否齐全)。

    4、虚拟IP

    开始-〉程序-loadrunner-tools-ip wizard

    模拟多个用户多台PC操作的情况

    5、参数化

    避免重复使用数据,可以动态更换数据。

  • LR8.1(中文版)破解方法大公布

    2010-12-11 20:12:21

    http://bbs.51testing.com/thread-47514-1-1.html

    LR8.1版本已经将7.8和8.0中通用的license封了,因此目前无法使用LR8.1版本,包括该版本的中文补丁。

    破解思路:由于软件的加密程序和运行的主程序是分开的,因此可以使用7.8的加密程序覆盖8.1中的加密程序,这样老的7.8和8.0中通用的license就可以使用了。

    操作步骤:
    1、用官方版的LR8.1安装,也可以安装中文补丁。安装包可以到51testing的ftp上下载
    地址是:
    LR8.1安装文件:
    http://www.17testing.com/download/LR_8.1.iso

    LR8.1中文补丁
    http://www.17testing.com/download/LR_8.1ChinesePack.iso

    2、
    将LR7.8或者LR8.0(安装包或者安装后目录中的都可以)中的
    lm70.dll
    mlr5lprg.dll
    这两个文件复制并粘贴到LR8.1安装目录下的bin文件夹下,一般是C:\E:\Program Files\Mercury\LoadRunner\bin;

    lm70.dll 文件的描述是 with conbined license support,是一个license的支持文件;
    mlr5lprg.dll应该是一个保存license的文件。
    大家可以试一试,其实不要替换mlr5lprg.dll也是可以的,只替换lm70.dll文件,老的license一样能注册通过,但是软件的试用的license还在。

    3、运行LR8.1,打开license管理器,点击添加new license,将老license复制进去,OK,验证通过!
    7.8、8.0通用的license有:
    golba-100: AEAMAUIK-YAFEKEKJJKEEA-BCJGI
    web-10000: AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB

    此方法适用于英文原版8.1和中文版8.1。

623/4<1234>
Open Toolbar