测试学习进行中

发布新日志

  • LoadRunner监控Window/Unix系统资源的配置

    2012-11-01 17:05:52

    http://www.51testing.com/html/78/n-217778.html

    LoadRunner监控Window/Unix系统资源需要做两件事情:

      1、配置被监视的服务器,以便于LoadRunner能够获取系统资源使用情况的数据

      2、在LoadRunner的Controller中添加计数器

      添加计数器比较简单,这里主要讲如何配置Window/Unix服务器。

      一、配置UNIX系统:

      1、修改/etc/xinetd.d/下的三个conf文件rlogin,rsh,rexec这三个配置文件,把这三个文件里的disable = yes都改成disable = no(disabled用在默认的 {} 中禁止服务),或是把#default:off都设置成on这个的意思就是在xinetd启动的时候默认都启动上面的三个服务。

      2、执行:rpc.rstatd

      3、检查是否启动rstatd,输入命令:rpcinfo–p。如果能看到:

      程序 版本 协议 端口

         *** **** udp 741 rstatd

      那就说明rstatd服务启动了

      4、LR中添加计算器

      如果系统没有安装rstatd的话,上面的操作将会不成功,需要先安装rstatd,安装rstatd过程很简单:

      (1)从安装光盘或网上找到安装文件(一般是rstatd***.tar.gz)

      (2)解压缩安装包:

      tar xzvf rstatd***.tar.gz

      (3)进入源文件目录运行配置文件和编译:

    $./configure
    $ make
    $ makeinstall

      安装好之后,就按上面的步骤启动rstatd即可。

      (说明:以上的操作需要root用户权限)


  • 一个水杯的测试(转载)

    2012-02-29 16:53:50

    在论坛上看到一个经典的用例:“一个水杯的测试”,其中涉及的设计用例思想挺值得学习!故整理收藏起来。
     
    需求:一个带有广告图案的花纸杯。查看需求说明书。
    可从功能性、性能性、易用性、稳定性、安全性……方面进行测试
    功能性:
        水杯的特性:
          1、杯子的容量:能装多少升水,少量、半杯、满杯。
          2、杯子的形状eg:圆形、上口大、下口小。
          3、杯子的材料:纸杯。
          4、杯子的耐温度:装冷水、冰水、热水。
          5、杯子是否会漏水。
          6、用杯子装水,看是否能喝到
        广告的图案:
          1、广告图案是否容易剥落。
          2、广告图案是否合法。
          3、广告图案遇水是否是否会掉落。
     
    性能性:
          1、盛冷水和热水时分别盛多少水杯能够承受。 
     
    易用性:
          1、杯子是否方便饮用。
          2、装热水时杯子是否烫手。
          3、杯子是否有防滑措施。
     
    稳定性:
          1、装入液态多久后会漏水。
          2、杯子从不同高度落下的损毁程度。
     
    安全性:
          1、杯子有没有毒或细菌。
          2、杯子装入热水是否会变形或有异味。
          3、装入不同液体,是否发生化学反应。eg:啤酒、可乐、咖啡等饮料。
     
    可移植性:
          1、杯子再不同的地方、温度等环境下是否都可以正常使用。
     
    破坏测试:
          1、检查水杯最大抗挤压和拉扯承受力。
          2、检查水杯被破坏后,是否会造成使用者伤害。

    用户手册:
          1、用户手册是否对杯子的用法、限制、使用条件等做了详细的说明。
  • LoadRunner 分析结果图笔记(转)

    2011-12-21 16:18:15

    Vusers (虚拟用状态)

    Vusers 用户状态计数器组提供了产生负载的虚拟用户运行状态的相关信息,可以帮助了解负载生成的过程。 

    Running Vusers(负载过程中的虚拟用户运行情况)

    此图反映系统形成负载的过程,随着时间的推移,虚拟用户数是如何变化的。 

    Rendezvous(负载过程中集合点下的虚拟用户)

    当场景中设置了集合点后会出现该图,反映了随着时间的推移各个时间点上并发用户的数目,方便了解并发用户数的变化情况。

     

    Errors(错误统计)

    当场景在运行中出现错误时,错误信息将会保存在该计数器组中,通过 Error 信息可以了解错误产生的时间和错误的类型,帮助定位产生错误的原因。 

    Errors per Second(每秒错误数)

    可以了解在每个时间点上错误产生的数目,该数据越小越好,通过该图可以了解错误随负载的变化情况,定位何时系统在负载下开始不稳定甚至出错,配合系统日志可以定位产生错误的原因。

     

    Transactions(事务)

    给出所有和事务相关的数据统计,方便了解被测系统业务处理的响应时间和吞吐量。

    事务默认状态:PASS、FAIL、STOP,如果是手工事务那么状态会有 PASS 和 FAIL 两种。 

    Average Transaction Response Time(平均事务响应时间)

    反映了随着时间的变化事务响应时间的变化情况,时间越小说明处理的速度越快。

    结合负载生成图合并一起看,可以发现用户负载增加对系统事务响应时间的影响规律。 

    Transactions per Second(每秒事务数)

    另一个关键数据是 TPS 吞吐量,该数据反映了系统在同一时间内能处理业务的最大能力,这个数据越高,说明系统处理能力越强。

    TPS 会受到负载的影响,也会随着负载的增加而逐渐增加,当系统进入繁忙期后,TPS 会有所下降。 

    Transaction Summary(事务概要说明)

    说明事务的 Pass 个数和 Fail 个数,了解负载的事务完成情况。通过的事务越多,说明系统的处理能力越强,失败的事务越少,说明系统越可靠。

    结合每秒错误数图进一步分析错误产生的原因。 

    Transaction Performance Summary(事务性能概要)

    事务的平均时间、最大时间、最小时间柱状图,方便分析事务响应时间的情况。

    柱状图的落差越小说明系统响应时间的波动较小,如果落差很大,说明系统不够稳定。 

    Transaction Response Time Under Load(在用户负载下事务响应时间)

    在负载用户增长的过程中响应时间的变化情况,改图的线条越平稳,说明系统越稳定。 

    Transaction Response Time(Percentile)(事务响应时间的百分比)

    不同百分比下的事务响应时间范围,可以了解有多少比例的事务发送在某个时间内,也可以发现响应时间的分布规律,数据越平稳说明响应时间变化越小。 

    Transaction Response Time(Distribution)(每个时间段上的事务数)

    每个时间段上的事务个数,响应时间较小的分类下的事务数越多越好。

     

    Web Resources(网页资源信息)

    给出的是对于 Web 操作的一些基本信息,这些信息在服务器端也能获得,当 Controller 的 RunTime Setting 中 Preferences 下的 Generated Web performance graphs 选相处于开启状态时,才会得到该图。 

    Hits per Second(每秒点击数)

    每秒点击数提供了当前负载中对系统所产生的点击量记录。每一次点击相当于对服务器发出了一次请求,一般点击数会随着负载的增加而增加,该数据越大越好。 

    Throughput(宽带使用)

    在当前系统下所使用的带宽,该数据越小说明系统的带宽依赖越小,通过这个数据能确定是否出现了网络带宽的瓶颈(注意使用单位为字节)。 

    HTTP Responses per Second(每秒 HTTP 响应数)

    每秒钟服务器返回各种状态的数目,该数值一般和每秒点击量相同。点击量是指客户端发出的请求数,而 HTTP 响应数是指服务器返回的响应数。如果服务器返回的响应数小于客户端发出的点击数,那么说明服务器无法应答超出负载的连接请求。

    结合每秒点击数看,如吻合,则说明服务器能够对每一个客户端请求进行应答。 

    Connections Per Second(每秒连接数)

    给出两种不同状态的连接数,即中断的连接和新建的连接,方便了解当前每秒对服务器产生连接的数量。

    同时的连接数越多,说明服务器的连接池越大,当连接数随着负载上升而停止上升时,说明系统的连接池已满,无法连接更多的用户,通常服务器会返回504错误。

    可以通过修改服务器的最大连接数来解决该问题。

     

    Web Page Diagnostics(网页分析)

    当在场景中打开 Diagnostics 菜单下的 Web Page Diagnostics 功能,就能得到网页分析组图。

    通过该图,可以对事务的组成进行抽丝剥茧的分析,得到组成这个页面的每一个请求时间的分析,进一步了解响应时间中有关网络和服务器处理时间的分配关系。通过该功能,可以实现对网站前端的性能分析,明确系统响应时间较长是由服务器端处理能力不足还是客户端连接到服务器的网络消耗导致的。 

    Web Page Diagnostics(网页分析)

    添加改图先会得到真个个场景运行后虚拟用户访问 Page 列表,也就是所有页面下载时间列表。

    通过 Select Page to Break Down 命令选择具体的 Page 来获得每个请求的相关详细信息。 

    Diagnostics options 选项提供四大块功能。 

    Download Time(下载时间分析)

    可以得到组成页面的每个请求下载时间。 

    Component(Over time)(各模块的时间变化)

    列出组成页面的每个元素,以及随着时间的变化所带来的响应时间变化。

    通过该功能可以分析响应时间变长是因为页面生成慢,还是因为图片资源下载慢。 

    Download Time(Over time)(模块下载时间)

    提供了针对每个组成页面元素的时间组成部分分析,方便确认该元素的处理时间组成部分。 

    Time to First Buffer(Over time)(模块时间分类)

    这里会列出该元素所使用的时间分配比例,是受 Network Time 影响的多还是 Server Time 影响的多。

    Network Time:指网络上的时间开销。

    Server Time:服务器对该页面的处理时间。 

    Page Download Time Breakdown(页面响应时间组成分析)

    这张图显示了每个页面响应时间的组成分析,一个页面的响应时间一般由以下内容组成: 

    Client Time

    客户端浏览器接收所需要使用的时间,可以不考虑。 

    Connections Time

    连接服务器所需要时间,越小越好。 

    DNS Resolution Time

    通过 DNS 服务器解析域名所需要的时间,解析受到 DNS 服务器的影响,越小越好。 

    Error Time

    服务器返回错误响应时间,这个时间反映了服务器处理错误的速度,一般是 Web 服务器直接返回的,包含了网络时间和 Web 服务器返回错误的时间,该时间越小越好。 

    First Buffer Time

    连接到服务器,服务器返回第一个字节所需要的时间,反映了系统对于正常请求的处理时间开销,包含了网络时间和服务器正常处理的时间,该时间越小越好。

     

    FTP Authentication Time

    FTP 认证时间,这是进行 FTP 登录等操作所需要消耗的认证时间,越短越好。 

    Receive Time

    接受数据的时间,这个时间反映了带宽的大小,带宽越大,下载时间越短。

     

    SSL Handshaking Time

    SSL加密握手时间

    得到页面请求的组成比例图,便于分析页面时间浪费在那些过程中。 

    Page Download Time Breakdown(Over Time)(页面组成部分时间)

    提供了随着时间的变化所有请求的响应时间变化过程。将整个负载过程中每个页面的每个时间组成部分都做成单独的时间线,以便分析在不同的时间点上组成该页面的各个请求时间是如何变化的。

    首先找到变化最明显或者响应时间最高的页面,随后再针对这个页面进行进一步的分析了解时间偏长或者变化快的原因。 

    Time to First Buffer Breakdown(页面请求组成时间)

    提供了组成页面时间请求的比列说明(客户端时间/服务器时间),通过这个图,可以直观的了解到整个页面的处理是在服务器端消耗的时间长,还是在客户端消耗的时间长。从而分析得到系统的性能问题是在前端还是后端。 

    Time to First Buffer Breakdown(Over Time)(基于时间的页面请求组成分析)

    给出了整个负载过程中,每一个请求的 Server Time 和 Client Time 随着时间变化的趋势,可以方便定位响应时间随着时间变化的原因到底是由于客户端变化导致的还是由于服务器端变化导致的。


    http://blog.csdn.net/expect88/article/details/6430527

  • 接口测试从零开始系列

    2011-12-08 14:10:50

  • QTP小技巧不断积累更新(转)

    2011-11-30 16:33:34

    1.在脚本运行过程中屏蔽鼠标键盘输入
       SystemUtil.BlockInput ‘开始处
      这里是你的脚本
      SystemUtil.UnblockInput ’结尾处

    ---------------------------------------

      补充关闭进程的方法:Systemutil.closeprocessbyname "GreenBrowser.exe"
    2.检查页面对象是否可用
       yanzheng=Browser("电子政务").Page("::::行政审批系统::::").Frame("10_3").WebButton("验证").GetTOProperty("disabled")
      用GetTOProperty("disabled")获得对象disabled 的属性值,如果为1,则不可用,为0 则可用
    3.WebTable 的index属性

       今天才发现原来,WebTable原来还有index这个属性,设置了index属性后问题得以解决。不知道咱们搞的,公司的那个系统在找WebTable时,增加对个对属性去匹配,搞了好久才发现原来是自己需要的WebTable有多个,添加index属性后,问题得以解决。

    4.WebTable 的RowCount重新获值
     在第一次获得RowCount值后,比如要执行删除操作,这时要重新获取表格的属性值(用set ...),这样RowCount才能变化,否则还是之前(第一次)的值。

    5.qtp识别的mandatory和assistive属性

       qtp识别属性有mandatory和assistive,如果是mandatory 属性变了就识别不到,assistive属性变了就不一定

    6.qtp执行页面刷新

    方法1,使用IE上自带的刷新按钮
    方法2,使用Refresh函数
    Sub Refresh_Example()
    'The following example uses the Refresh method to refresh the
    'objects in the Mercury Tours browser.
    Browser("Mercury Tours").Refresh
    End Sub
     7.对象获得焦点
    Browser("审批工作平台").Page("工作平台").WebEdit("user_pass").Object.focus
    一定是Object.focus而不是focus。
     8.QTP和Loadrunner获取系统内置环境变量方法(通用)
    os=environment.Value("OS")
    provesi=environment.Value("ProductVer ")
    hostname=environment.Value("LocalHostName")
    msgbox os &","& provesi &","& hostname
     9.通过浏览器打开网址操作
    systemutil.run "iexplore.exe","http://mail.163.com","","",2
     注意2为最小化,3为最大化。
    10.编辑共享对象对象库
       通过Resources-Object Repository Manager,进入后,打开共享的对象库文件,默认对象库是不能编辑的,要在file菜单中点击 enable editing,就可以编辑了!
    11。Call to copy of Action与call existing Action的区别
       在QTP中可以使用两种调用其他Action的方法分别是call to copy of Action与call existing Action,他们之间的区别如下:

       两种方式都是将以被保存的Action调用过来,但是copy Action是将原本Action中的所有属性,及其参数值调用过来,并且可以在其上随意的更改,而且这些更改并不影响源Action,而call existing Action虽然也是将源Action的所有属性及其参数值都调用过来,但是你不能更改其中的任何步骤和参数值,如果一定要更改,需要重新打开源Action,在源Action上进行更改,所作的改动将自动体现在调用的Action上。

    12.QTP中计算脚本执行时间方法

       如果要计算一个action或者要计算一段脚本执行的时间,这里的解决方法是:添加事物开始Services.StartTransaction "trans_test"和 Services.EndTransaction "trans_test",运行完成后,在result中就可以看到该事务的执行时间。如图:

    [原创] <wbr>QTP <wbr>小技巧不断积累更新(拿来备忘)

     13.设置可重用检查点个人感觉有点创意

       方法一:

       将检查点全用描述性编程定义成function函数,然后每次都调用这些function。

       方法二:

       (1)录制可重用检查点,将QTP record and run setting设为录制当前页,开始录制,不录制步骤,直接在录制过程中添加检查点,将这个只有检查点的Action设为可重用。(2)调用可重用检查点,在第一步录制好的脚本中调用这个可重用检查点,首先选中需要添加检查点的步骤,然后选择insert—call existing Action 选择after current step(3)检查点添加到步骤之后,通过这种发放这个检查点可以被多次使用。

     14.关于Reporter.filter用法

       问题描述:在你查看QTP的reporter时当有参数化时,reporter右边的选择树会很长,即使看起来很不方便,也不利于查找错误。
       处理流程:(1)录制脚本(2)在expert view中设定
       Reporter.filter分为四个属性:
           0或者rfenableall 所有的报告都显示在test result中
            1或者enableerrorandwarning错误和警告信息显示在test result中
           2或者rfenableerroronly只把错误显示在test result中
           3或者rfdisableall不在test result中显示任何信息
       你可以根据需要设定你要显示的错误
      举例:

    Reporter.filter=2
    reporter.ReportEvent micPass,"测试通过01","pass"
    reporter.ReportEvent micFail,"测试失败01","fail"

    reporter.ReportEvent micPass,"测试通过02","pass"
    reporter.ReportEvent micFail,"测试通过02","pass"

    reporter.ReportEvent micPass,"测试通过02","pass"
    reporter.ReportEvent micFail,"测试通过02","pass"

    reporter.ReportEvent micPass,"测试通过02","pass"

    reporter.ReportEvent micFail,"测试通过02","pass"

     15.用回车键查询问题的解决
        (1).(用Sendkey方法)
     Browser("系统登录").Page("***信息管理系统").Frame("main").WebEdit("ylzh").FireEvent("onfocus")
    set WshShell =CreateObject("WScript.Shell")
    WshShell.SendKeys "{ENTER}"
         (2)用 “Type micReturn ”
     16.我们在用Object Spy 识别对象时注意的问题。
        我们一定要在QTP加载相关插件后,再用Object Spy 去识别对象,否则,识别出来的对象不是我们需要的。如果,我在识别web页面的button,但是我如果不加载web插件时,识别出来的确是一个WinObject,呵呵。所以一定要加载web插件后,在用qtp去spy对象。
     17.运用childobjects获取桌面上的顶级对象!实现关闭特定browser的方法。

       Desktop对象允许访问桌面上的顶级对象.运用childobjects方法可以返回此对象中的所有对象列表:以下代码实现了,从桌面顶级对象中查找name=“新浪首页”,然后将该browser的图像抓取出来存到特定的文件夹下.

     Set des=description.Create()
    set  dobj=desktop.ChildObjects(des)
     For i=0 to dobj.count-1
      If dobj(i).Getroproperty("name")="新浪首页" then
      dobj(i).CaptureBitmap"D:\Software testing\QTP\temp\"&i&".bmp",true
      dobj(i).close
      end if
     Next

     18.参数化Link的一种方法

     Linkvar=DataTable("linktext",dtGlobalSheet)
    Browser("163网易免费邮--中文邮箱第一品牌").Page("163网易免费邮--中文邮箱第一品牌").LinK("text:="&Linkvar).click

    Datatable中的数据为:

     linktext
     126免费邮
     Yeah.net
     VIP
     188
     贺卡
     帮助

     19.将日期写入日期控件文本框的方法

    Browser("电子政务").Page("::::行政审批系统::::").Frame("9_3").webedit("日期控件文本框名字").Object.value="2009-04-06"

     20.关于 在线文本编辑器 QTP不能写入文字的方法

        因为QTP将 在线文本编辑器 识别成了一个 WebElement,这块用到object.document.write"你想要写的内容" 方法.

        其实 object.document.write""  这个方法很牛! 大家在后边就会发现.

     21.QTP脚本不能录制的解决方法

       问题起因:
       在安装QTP后,或者禁用IE浏览器里的一些ActiveX控件后,正常录制QTP事,不能产生相应的录制脚本,脚本内容为空。
       解决方法:

       根据实践,我发现QTP在IE中录制脚本是依靠一个叫BHOManager Class的动态链接库来完成的。当这个控件没有被加载,或者被禁用时,就会出现上述症状。于是,解决方法就很简单了,重新加载,或启用这个控件,一切就OK啦。
       具体步骤:
       打开IE,在菜单中选择[工具]/[Internet选项]进入Internet配置界面。选择[程序]/[管理加载项],查看目前加载的ActiveX的情况。
    当看到存在BHOManager Class并且其状态是“禁用”时,点击“启用”开启这个功能,并保存后退出即可解决问题。
       当在管理加载项里找不到BHOManger Class这个加载项时,如果你安装了QTP,那么在C:\WINDOWS\system32下会存在一个叫BHOManager.dll的动态链接库,或者可以直接在计算机里搜索BHOManager.dll,然后查看其路径。加载这个dll,加载方法为:点击[开始]/[运行],输入cmd,然后定位到dll所在目录,键入regsvr32 BHOManager.dll命令,即可注册此dll。问题解决。

     22.qtp关闭IE进程方法

       SystemUtil.CloseProcessByName "iexplore.exe"

     23.qtp测试web 超级链接的方法

      方法一:用 CheckProperty("url","")


  • [转]webservice功能测试

    2011-11-18 17:58:33

  • 开源的Web Service测试工具

    2011-11-18 11:45:49

  • QTP提供三种不同的录制方式(转载)

    2011-11-10 14:57:57

     QTP提供三种不同的录制方式:正常录制(Normal Recording)、模拟录制(Analog Recording)和低级录制(Low Level Recording)。

    1. 正常录制(Normal Recording

    正常录制模式是QTP默认的录制模式,这种模式最突出的特点,是直接对对象,如对标准控件的的操作,录制完之后,不管再次打开的对象位置在哪,它都能执行到。此模式可以录制下对于应用程序的对象的一些列操作,但是对于一些鼠标的运动轨迹却无能为力。经典的例子是Windows的画图程序,不能对于画图的过程进行录制。

    2. 模拟录制(Analog Recording

    为解决上面的问题,QTP提供了模拟录制的方式。模拟录制模式是鼠标和键盘的精确操作进行录制。录制鼠标的拖动,捕捉鼠标的运动轨迹,主要用与绘图此类软件的录制。

    模拟录制模式分为两种:一种是相对于指定窗口录制;另一种是相对于屏幕录制。选择相对于指定窗口录制,就会只录制鼠标键盘的指定窗口内的所有动作,在窗口外的动作不会录制。而屏幕录制就可以录制在整个屏幕内所做的所有动作,包括点击win任务栏上的Quicktest图标,但在QTP窗口内所做的所有操作不会进行录制。

    3. 低级录制(Low Level Recording

    把所有的对象识别为WinObject,是对正常录制下不能识别的环境和对象的一个补充。对对象的位置要求非常严格,不是Object.Operation value 而是记录屏幕坐标点上的操作。对象的坐标有一点改变就有可以录制失败,稳定性较差。

    实际的应用中应该根据实际情况,具体问题具体分析,取舍得当。

  • TD里BUG状态

    2010-12-01 09:03:47

    用了一段时间TD了,但BUG的状态有一些还是不太明白,今天在网上搜了一下,看到了一些资料,记录下来,方便以后查看。

    Bug状态

     只有Closed才是bug的最后状态,当前我们有7种状态,每种状态的意思为:

     

    Ø       New:这是一个bug的初始状态,我们所有的新发现的bug,其状态都是New

    Ø       Open:项目负责人或者资深的人员review所有的New bug后,认为bug是有效的话,将bug的状态从New改为Open.

    Ø       Fixed:开发人员把相应的代码修正后,并通过了单元测试,将对应的bug状态改为Fixed,并加一定的注释.

    Ø       Closed: QA人员拿到新的测试版本后,验证Fixed bug,确实不存在的,把bug的状态改为Closed.并要加注释

    Ø       Rejected:开发人员认为这个Bug是无效的,将会把bug的状态改为Rejected,这种状态不是最后的状态,QA人员要仔细的分析,如果真的是无效的,那么需要将其状态改为closed;否则改为Reopen

    Ø       Reopen: QA验证Fixed/Rejected bugs后,bug仍然存在或者有效的,将其状态改为Reopen

    Ø       Deferred:这是新增加的一种状态,其目的避免开发人员将一些设计的问题改为Rejected状态;当前,一些设计需求已经确定,但是一些设计确实存在不合理的地方,而因为项目周期的原因,当前项目无法做需求上的改动,所以只有在下个版本了做Fixed,我们将会把这些bug放到下个版本里fixed.

  • GET与POST方法

    2009-02-20 11:15:31

    1.GET方法

    GET方法把参数作为统一资源指示器(Uniform. Resource Indicator,或者人们更习惯用统一资源定位器,Uniform. Resource Locator,或URL)查询字符串的一部分,从一个页面传递到另一个页面。当用于表单处理时,GET用问号作为分隔符把变量名和值附加给在ACTION属性中指定的URL,并把所有内容提交给处理代理。

    表单处理中的GET方法有一个POST方法不具备的很大的优点:它创建了一个真正新的、完全不同的URL查询字符串。这样,用户现在可以把这一页记作书签。从使用POST方法的表单得到的结果是不能被记作书签的。

    GET方法的缺点:

    l        GET方法不适合用于登陆,因为在把用户名和密码作为访问过的页面潜在地存储在客户浏览器内存中时,在屏幕上是完全可见的。

    l        每个GET提交被记录在WEB服务器日志中,数据集也被包括在内。

    l        因为GET给服务器环境变量分配数据,所以URL的长度受到限制。

     

    尽管GET方法仍然是表单处理的默认选项,但是,笔者极力推荐只把它用于没有长期副作用的地方。把两个优点和两个缺点放在一起考虑,使用GET处理表单的最合适的用途是搜索框。除非迫不得已的原因使用GET用于非搜索性质的表单处理程序,否则使用POST

     

    使用GET更好的方法:

    在导航栏的超链接中,添加代码:

    <a href=”fleece.php?Name=alpaca”><b>alpaca</b></a>

     

    注意,当被单击时,导航栏上的链接被浏览器处理,就好像是提交了GET一样。

     

    2.POST方法

    POST是当今更好的表单处理方法,尤其适合需要得到长期的副作用效果的情况,如给数据库添加信息。当表单数据被送到处理程序时被包括在表单体内。提交的数据不同时,在URL中看不出什么变化。

     

    POST方法有以下这些优点:

    l        它比GET更安全,因为在URL查询字符串、服务器日志中,或者(如果采用了预防措施)在屏幕上从来看不到用户输入的信息。

    l        对能被传递的数据的数量限制放宽了(二千字节,而不是两百多个字符)。

    但是POST也有一些缺点:

    l        结果不能被记作书签

    l        该方法和某些防火墙设置不兼容,为了安全,防火墙要去掉表单数据

     

     

    主要有三种方法用于传递信息:GETPOST、或cookie。主要使用GET构建复杂的URL字符串,用于动态站点的模板,不被推荐用于表单。POST是被推荐用于表单的方法。

     

     

     

    GET方法和POST方法的区别

    HTTP请求消息使用GET或POST方法以便在Web上传输请求。

    GET 方法
    用于检索信息(如文档、图表或数据库请求结果)
    请求的页面可以被设置为书签和使用电子邮件发送
    请求信息作为查询字符串发送。但是根据不同的服务器,查询字符串的长度限制在240-255个字符。

    举例:搜索引擎Google使用GET方法对用户输入的搜索字符串检索搜索结果

    POST 方法
    用于发送敏感信息(如信用卡号、密码等)或要保存到数据库中的信息
    请求的页面不能设置为书签或不能通过电子邮件发送
    发送的数据没有大小限制

    举例:登入窗口表单使用POST方法

Open Toolbar