发布新日志

  • 测试人员最宝贵的是什么(原创)

    2008-05-21 09:15:32

    回想这几天有一些bug的遗漏,感觉测试人员最宝贵的经验不是技术,也不是心态,而是对bug的敏感度。这倒不是说技术、心态不重要,如果没有它们测试也是没有质量的。技术、心态也是老是挂在嘴边说的,我也就不想多说什么了。

    谈谈对bug的敏感度吧。

    何为对bug的敏感度呢,就是看到一个功能就条件反射的知道有一些地方是bug多发的,什么地方开发容易疏忽,什么地方可能会隐藏bug

    比如一个查询:

    C/S系统中查询条件很多开发就是疏忽判断(如%*/

                       查询时是否刷新输出框

                       被查询数据的选择是否正确

                       未查询到是否有提示说明

                       ………………

     

    B/S系统中条件反射的就是有没有防止DOS攻击

     

     

    希望各位测试平时多回想自己的bug,想想哪些bug是经常出现的,这些都将慢慢转变你对bug的敏感度,才能成为一个大师级测试人员

     

     

    Ps:人的第一次都会痛,何况是软件,万一软件闹点别扭,o(_)o…###……

    特别注意:窗体中数据第一次保存到数据库中(需要完全输入)

                      第一次打开软件

                      第一次录入文件

                      好多好多第一次哦!~~~~~

  • 关于loadrunner安装和卸载的一下看法

    2007-07-10 11:48:31

    51论坛转载!!谢谢原版的作者!

     

     

     

    loadrunner安装的问题很多,各个网站的帖子也很多,51test中就有很多。

            安装的时候基本上的问题就是安装包所在路径为汉字名称或者别的什么。

            主要说一下自己遇到的问题,和解决的方法,希望遇到的人可以绕过而行,不用在走弯路了。
            安装的问题:
            整个装的过程都是OK的,完成后,提示需要重启系统蔷椭仄袅耍墒堑鹊锹嫉胶螅岜ù恚谌荽筇迦缦拢骸八凳莝ystem32下的BHOManager.dll    DLLRegisterServer  return  error 8007007e”(我的系统是番茄花园的xp系统),当你确定以后,lr安装目录下bin中的所有dll文件都不能注册了,所以安装就失败,就这个问题,刚开始我一直没有定位好,等看了一段时候之后发现,BHOManager虽然在system32下,但是不是系统本身的dll,而是lr自己写入的(因为以前装好的lr中IE加载项中,印象是见过的), DLLRegisterServer  return  error 8007007e 意味着没有找到BHOManager这个dll文件,或者这个dll没有注册,但是手动去注册却是报错,那现在问题基本上已经可以看出端倪了,所有的不能成功的因素,全都是BHOManager.dll没有成功注册的缘故,(找到根源就可以迎刃而解了)。

            在百度中搜索,发现如下内容:

            你问题的解决方法,我今天也遇到同样的问题,给你做回答,呵呵,这个跟双核没关系,可能是你用的也是番茄花园的xp系统把,它的atl.dll是没有注册的,导致lr的BHOManager。dll无法成功注册!!!(原理就是这些),方法如下:

    附:
            我再重新安装时遇到的另一个问题。可能遇到的朋友并不多,放上来给大家参考吧。
            在安装到最后的时候遇到这样一个报错:BHOManager.dll 注册失败。
            于是在提示重启时未重启,而是去手动注册该dll文件,却弹出了另一个提示,"DLLRegisterServer in BHOManager.dll failed
    Return code was 0x8007007e"

            于是到网上搜了下,终于找到了解决方法。
            1. 需要IE 6.0 及以上版本支持, 请检查你的IE浏览器是否为 6.0 以上版本。
            2. 请检查Windows系统目录中是否存在以下三个文件: msvcp60.dll, mfc42.dll, msvcrt.dll 文件, 如果有缺少,请下载并拷贝到Windows系统目录中去即可。
            3. 请查看您的系统中是否缺少 atl.dll 文件, 如果没有, 请从其他相同操作系统的机器上拷贝这个文件到Windows系统目录, 然后打开命令行窗口并在该目录下运行命令:
            regsvr32 atl.dll
            看到成功提示后,再次手动注册BHOManager.dll(注册方法:打开命令行窗口并在该目录下运行命令regsvr32 c:\windows\system32\BHOManager.dll),提示注册成功。
            全部完成后重启电脑,该问题就解决拉 :)
            LR终于装好了。
            那就意味这,BHOManager.dll的注册是和atl.dll的注册有关,前者调用后者中的东西,只要后者成功注册,前者就可以OK解决了!呵呵~~~~世界清净了许多!!哈哈!!


            卸载:
            因为之前一直没有分析正确问题的所在,所以卸载和重新安装loadrunner好几次,关于卸载的一些问题,及时你按照卸载工具卸载了loadrunner,下次装的时候还是会包license失效,解决方法,要登录到注册表regedit中(当发现报错后,立即去注册表删除下边的内容,只要有相同的就删除,这样注册码就可以再次使用了,并不会报错,呵呵)。
            删除如下内容:
            HKEY_CLASSES_ROOT\Mercury.Lm70Control
            HKEY_CLASSES_ROOT\Mercury.Lm70Control.1
            同时删除
            Mercury.Lm70ControlMgr
            Mercury.Lm70ControlMgr.1

            然后就使用查找功能,搜索“Mercury”,发现有Lm70Contro字样的东西都要删除掉。

            最后删除下面内容:

            HKEY_CURRENT_USER\Software\Mercury Interactive
            HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive

            删除完成后,继续填入license,下一步,如果还是不行,继续去注册表中删除上边内容,知道没有了,就OK了。
            这些都是自己做过实际操作的内容,希望对大家有帮助。

     

     

     

       此文来源51testing论坛,转载请注明出处!

  • 验证码

    2007-07-10 11:44:35

    录制邮箱的注册流程时,需读出随机的附加码。自动化测试过程中遇到这个问题,应该和开发人员交流,了解随机的附加码的产生原理后在自动化脚本中可以随机控制。

    猜测:
    随机附加码功能为每次当用户注册的时候,程序中产生一个随机值,调用存储在服务器上的图片(附加码的图片),在前台显示出来。

    根据和开发人员了解到的:
    知道原理后,测试人员和开发人员交流有哪些图片在服务器上,只要知道图片都有哪些,就可以做到如下工作
    这里是某个网站的登陆需要添加附加码的网页源文件

    验证码:<!--验证码表单-->
    <input type="text" name="codestr" maxlength="4" size="4"> <img src="xxx.xxx">
    看到上边<img src=“调用的图片”>,你只要每次读取这个img src的值就可以,你可以根据和开发人员了解的图片顺序,写个函数--图片索引函数,通过读取的值你就知道那个图片对应的那个附加码

    然后直接处理就可以了,各个程序有自己的实现算法,需要你自己去寻找答案!

  • LoadRunner监视的性能计数器

    2007-07-10 11:27:05

    Memory: 内存使用情况可能是系统性能中最重要的因素。如果系统“页交换”频繁,说明内存不足。“页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。尽管某些页交换使 Windows 2000 能够使用比实际更多的内存,也是可以接受的,但频繁的页交换将降低系统性能。减少页交换将显著提高系统响应速度。要监视内存不足的状况,请从以下的对象计数器开始:
    Available Mbytes:可用物理内存数. 如果Available Mbytes的值很小(4 MB 或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。


    page/sec: 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。一般如果pages/sec持续高于几百,那么您应该进一步研究页交换活动。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。Pages/sec 的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。


    page read/sec:页的硬故障,page/sec的子集,为了解析对内存的引用,必须读取页文件的次数。阈值为>5. 越低越好。大数值表示磁盘读而不是缓存读。
    由于过多的页交换要使用大量的硬盘空间,因此有可能将导致将页交换内存不足与导致页交换的磁盘瓶径混淆。因此,在研究内存不足不太明显的页交换的原因时,您必须跟踪如下的磁盘使用情况计数器和内存计数器:
    Physical Disk\\ % Disk Time
    Physical Disk\\ Avg.Disk Queue Length
    例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。
    要确定过多的页交换对磁盘活动的影响,请将 Physical Disk\\ Avg.Disk sec/Transfer 和 Memory\\ Pages/sec 计数器的值增大数倍。如果这些计数器的计数结果超过了 0.1,那么页交换将花费百分之十以上的磁盘访问时间。如果长时间发生这种情况,那么您可能需要更多的内存。


    Page Faults/sec:每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存的指定工作集中立即使用。
    Cache Bytes:文件系统缓存(File System Cache),默认情况下为50%的可用物理内存。如IIS5.0 运行内存不够时,它会自动整理缓存。需要关注该计数器的趋势变化
    如果您怀疑有内存泄露,请监视 Memory\\ Available Bytes 和 Memory\\ Committed Bytes,以观察内存行为,并监视您认为可能在泄露内存的进程的 Process\\Private Bytes、Process\\Working Set 和Process\\Handle Count。如果您怀疑是内核模式进程导致了泄露,则还应该监视 Memory\\Pool Nonpaged Bytes、Memory\\ Pool Nonpaged Allocs 和 Process(process_name)\\ Pool Nonpaged Bytes。


    Pages per second :每秒钟检索的页数。该数字应少于每秒一页。

    Process:
    %Processor Time: 被处理器消耗的处理器时间数量。如果服务器专用于sql server,可接受的最大上限是80-85%
    Page Faults/sec:将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。
    Work set: 处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。
    Inetinfo:Private Bytes:此进程所分配的无法与其它进程共享的当前字节数量。如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。

    Processor:监视“处理器”和“系统”对象计数器可以提供关于处理器使用的有价值的信息,帮助您决定是否存在瓶颈。
    %Processor Time:如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。
    %User Time:表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。
    %Privileged Time:(CPU内核时间)是在特权模式下处理线程执行代码所花时间的百分比。如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。
    此外,跟踪计算机的服务器工作队列当前长度的 Server Work Queues\\ Queue Length 计数器会显示出处理器瓶颈。队列长度持续大于 4 则表示可能出现处理器拥塞。此计数器是特定时间的值,而不是一段时间的平均值。
    % DPC Time:越低越好。在多处理器系统中,如果这个值大于50%并且Processor:% Processor Time非常高,加入一个网卡可能会提高性能,提供的网络已经不饱和。

    Thread
    ContextSwitches/sec: (实例化inetinfo 和dllhost 进程) 如果你决定要增加线程字节池的大小,你应该监视这三个计数器(包括上面的一个)。增加线程数可能会增加上下文切换次数,这样性能不会上升反而会下降。如果十个实例的上下文切换值非常高,就应该减小线程字节池的大小。

    Physical Disk:
    %Disk Time %:指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。若数值持续超过80%,则可能是内存泄漏。
    Avg.Disk Queue Length:指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。
    Average Disk Read/Write Queue Length:指读取(写入)请求(列队)的平均数。
    Disk Reads(Writes)/s: 物理磁盘上每秒钟磁盘读、写的次数。两者相加,应小于磁盘设备最大容量。
    Average Disksec/Read: 指以秒计算的在此盘上读取数据的所需平均时间。
    Average Disk sec/Transfer:指以秒计算的在此盘上写入数据的所需平均时间。
    Network Interface:
    Bytes Total/sec :为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较

    SQLServer性能计数器:
    Access Methods(访问方法) 用于监视访问数据库中的逻辑页的方法。
    . Full Scans/sec(全表扫描/秒) 每秒不受限的完全扫描数。可以是基本表扫描或全索引扫描。如果这个计数器显示的值比1或2高,应该分析你的查询以确定是否确实需要全表扫描,以及S Q L查询是否可以被优化。
    . Page splits/sec(页分割/秒)由于数据更新操作引起的每秒页分割的数量。
    Buffer Manager(缓冲器管理器):监视 Microsoft&reg; SQL Server? 如何使用: 内存存储数据页、内部数据结构和过程高速缓存;计数器在 SQL Server 从磁盘读取数据库页和将数据库页写入磁盘时监视物理 I/O。 监视 SQL Server 所使用的内存和计数器有助于确定: 是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。 是否可通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
    SQL Server 需要从磁盘读取数据的频率。与其它操作相比,例如内存访问,物理 I/O 会耗费大量时间。尽可能减少物理 I/O 可以提高查询性能。
    .Page Reads/sec:每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理 I/O 的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。
    .Page Writes/sec (.写的页/秒) 每秒执行的物理数据库写的页数。
    .Buffer Cache Hit Ratio. 在“缓冲池”(Buffer Cache/Buffer Pool)中没有被读过的页占整个缓冲池中所有页的比率。可在高速缓存中找到而不需要从磁盘中读取的页的百分比。这一比率是高速缓存命中总数除以自 SQL Server 实例启动后对高速缓存的查找总数。经过很长时间后,这一比率的变化很小。由于从高速缓存中读数据比从磁盘中读数据的开销要小得多,一般希望这一数值高一些。通常,可以通过增加 SQL Server 可用的内存数量来提高高速缓存命中率。计数器值依应用程序而定,但比率最好为90% 或更高。增加内存直到这一数值持续高于90%,表示90% 以上的数据请求可以从数据缓冲区中获得所需数据。
    . Lazy Writes/sec(惰性写/秒)惰性写进程每秒写的缓冲区的数量。值最好为0。
    Cache Manager(高速缓存管理器) 对象提供计数器,用于监视 Microsoft&reg; SQL Server? 如何使用内存存储对象,如存储过程、特殊和准备好的 Transact-SQL 语句以及触发器。
    . Cache Hit Ratio(高速缓存命中率,所有Cache”的命中率。在SQL Server中,Cache可以包括Log Cache,Buffer Cache以及Procedure Cache,是一个总体的比率。) 高速缓存命中次数和查找次数的比率。对于查看SQL Server高速缓存对于你的系统如何有效,这是一个非常好的计数器。如果这个值很低,持续低于80%,就需要增加更多的内存。
    Latches(闩) 用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。
    . Average Latch Wait Ti m e ( m s ) (平均闩等待时间(毫秒)) 一个SQL Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。
    . Latch Waits/sec (闩等待/秒) 在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。
    Locks(锁) 提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server 资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。
    . Number of Deadlocks/sec(死锁的数量/秒) 导致死锁的锁请求的数量
    . Average Wait Time(ms) (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间
    . Lock Requests/sec(锁请求/秒) 每秒钟某种类型的锁请求的数量。
    Memory manager:用于监视总体的服务器内存使用情况,以估计用户活动和资源使用,有助于查明性能瓶颈。监视 SQL Server 实例所使用的内存有助于确定:
    是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQL Server 必须从磁盘检索数据。
    是否可以通过添加更多内存或使更多内存可用于数据高速缓存或 SQL Server 内部结构来提高查询性能。
    Lock blocks:服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。
    Total server memory:sql server服务器当前正在使用的动态内存总量.

    监视IIS需要的一些计数器
    Internet Information Services Global:
    File Cache Hits %、File CacheFlushes、File Cache Hits
    File Cache Hits %是全部缓存请求中缓存命中次数所占的比例,反映了IIS 的文件缓存设置的工作情况。对于一个大部分是静态网页组成的网站,该值应该保持在80%左右。而File Cache Hits是文件缓存命中的具体值,File CacheFlushes 是自服务器启动之后文件缓存刷新次数,如果刷新太慢,会浪费内存;如果刷新太快,缓存中的对象会太频繁的丢弃生成,起不到缓存的作用。通过比较File Cache Hits 和File Cache Flushes 可得出缓存命中率对缓存清空率的比率。通过观察它两个的值,可以得到一个适当的刷新值(参考IIS 的设置ObjectTTL 、MemCacheSize 、MaxCacheFileSize)
    Web Service:
    Bytes Total/sec:显示Web服务器发送和接受的总字节数。低数值表明该IIS正在以较低的速度进行数据传输。
    Connection Refused:数值越低越好。高数值表明网络适配器或处理器存在瓶颈。
    Not Found Errors:显示由于被请求文件无法找到而无法由服务器满足的请求数(HTTP状态代码404)

  • cmm结构体系

    2007-07-10 11:10:07

  • QTP日志校验(研究)

    2007-07-06 22:01:23

    If browser("    ").Dialog("Microsoft Internet Explorer").Exist(1) Then

     Call WriteLogMsg("fail"+","+Environment("TestName")+"--"+"查找用户失败"+"," +"wjj登陆")
     browser("    ").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
     else
           If browser("    ").Page("    ").Frame("Disp_3").WbfUltraGrid("UlUserGrid").ColumnCount then
                 Call WriteLogMsg("Success"+","+Environment("TestName")+"--"+"查找用户成功"+"," +"wjj登陆")
      else
             Call WriteLogMsg("Fail"+","+Environment("TestName")+"--"+"查找用户失败"+"," +"wjj登陆")
      end  if
    End If

     

     

  • Visual Studio.Net已检测到你的服务器运行的不是Asp.Net 1.1版,您将无法运行Asp.Net

    2007-07-06 21:17:05

    解决办法:
    1.检查IIS是否可以用;
    不行就得重装。

    2.检查.NET是否可以用,就是运行***.aspx页面,看是否正常;
    如果IIS可用,.NET不可以用,运行
    cd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
    aspnet_regiis.exe -i
    或者在.NET自带的工具下输入

    aspnet_regiis -i 即可
  • QTP下脚本不能录制

    2007-07-06 21:16:01

    打开IE,在菜单中选择[工具]/[Internet选项]进入Internet配置界面。选择[程序]/[管理加载项],查看目前加载的ActiveX的情况。

    当看到存在BHOManager Class并且其状态是“禁用”时,点击“启用”开启这个功能,并保存后退出即可解决问题。
    当在管理加载项里找不到BHOManger Class这个加载项时,如果你安装了QTP,那么在C:\WINDOWS\system32下会存在一个叫BHOManager.dll,或者可以直接在计算机里搜索BHOManager.dll,然后查看其路径。加载这个dll,加载,然后定位到dll所在目录,键入regsvr32 BHOManager.dll命令
Open Toolbar