偶是测试新手,希望前辈们能多多指教。

发布新日志

  • Oracle安装程序所在路径不可有中文

    2011-07-18 11:42:07

    去年我装Oracle数据库的时候也曾遇到这个问题,费尽九牛二虎之力排除了介质损坏的原因后,从安装日志里的几个乱码中发现了蛛丝马迹:是不是不认中文路径?果然,安装程序是放在了一个中文目录下,把中文改成英文后便一路顺风顺水,安装成功。这小小的几个汉字,却让我折腾了一个晚上!这么惨痛的经历怎么能轻易忘掉呢,马上让同事把路径一改,呵呵,成功!
            查了一下Oracle的安装文档,Oracle公司只是说不能把OraWin9204文件放到TMP目录下,其实放到中文目录下也不可以。在计算机里面关于命名的问题我自己一直坚持能用英语尽量不用中文,这跟对中英文的喜好无关,纯粹是不想被这种没多少意义的问题折磨
        还有,安装路径要在根目录下,必须是这样的:D:\oracle\product
  • 设置或不设置duration,事务何时开始停止?用户停在什么状态【转载】

    2011-05-24 18:41:26

    今天上午看了Zee一篇早期的文章,其中针对的问题是:“设置或不设置duration,事务何时开始停止?用户停在什么状态?”他就此问题进行了两个场景实验,对duration和事务停止的关系进行了验证,个人对此感觉理解不够透彻,自己重新做了一遍,并新增三个场景方案,也相信即使是刚入门的都能理解,其中脚本将继续采用他的作为例子。

    脚本:
    Action() {
       lr_start_transaction("TEST");
       lr_log_message("思考时间开始");
       lr_think_time(10);
       lr_log_message("思考时间结束");
       lr_end_transaction("TEST", LR_AUTO);

       return 0; 
       }

     

    场景1
    虚拟用户数:100
    Ramp up:同时加载全部
    Duration:所有虚拟用户只运行一遍
    Ramp down:同时停止所有虚拟用户

    根据上图,得知场景执行情况:100虚拟用户大概花了4秒完成了加载,同时也全部都完成了int部分的执行,在6秒后,有一个用户完成了action部分的执行(此时正好是一个Vuser跑完整个脚本需要的时间——10秒——InitTime + ActionTime + EndTime = 4 + 6 + 0 = 10),END部分也迅速的完成了。

    结论:

    虚拟用户数最高的时候不一定就是服务器压力最大的时候。

    场景2
    虚拟用户数:100
    Ramp up:10个虚拟用户/10秒
    Duration:所有虚拟用户只运行一遍
    Ramp down:同时停止所有虚拟用户

     

    根据上图,得知场景运行情况:1个虚拟用户在完成脚本的int部分以后,花了10秒执行完毕action部分,并立即进入到END部分。但是,整个场景中虚拟用户最高在线只有10。
    结论:

    QUANTITY 不一定等于 目标并发用户数

     而实际上,许多的初学者都误以为在Controller中QUANTITY即目标并发用户数。


    场景3
    虚拟用户数:100
    Ramp up:10个虚拟用户/10秒
    Duration:1min
    Ramp down:同时停止所有虚拟用户

     

    根据上图,得知场景运行情况:1个虚拟用户在完成脚本int部分以后,开始执行脚本Action部分,当执行完Action部分以后,该虚拟用户没有立即进入End部分,而是继续脚本的执行。 再通过Int事务数的查看,发现整个场景中,Int事务总数为100,也就是说虚拟用户执行完Action部分以后既没有进入到End,也没有进入到Int,这段时间继续重复的执行Action部分。
    结论:
    脚本在场景中,Int部分以及End部分仅会被每个虚拟用户执行一次,若场景中存在Duration时间上的设置,则虚拟用户将在这段时间内重复的执行脚本中的Action部分。

      

    场景4
    虚拟用户数:100
    Ramp up:10个虚拟用户/10秒
    Duration:1min
    Ramp down:10个虚拟用户/10秒

    根据上图,得知场景运行情况:在Duration时间结束以后,虚拟用户总数开始下降,下降是以每10秒减少10用户的速度执行,未开始被“释放”的虚拟用户仍继续执行Action中的事务,直到Controller对其进行“释放”。
    结论:
    在Ramp down部分,虚拟用户并不是仅仅在等待Controller对其进行“释放”,未“释放”的用户仍然继续执行脚本Action部分,已“释放”的用户,执行完End部分后退出(根据End事务总数100得出)。


    场景5
    虚拟用户数:100
    Ramp up:100个用户/秒
    Duration:1min
    Ramp down:100个用户/秒

    根据上图,得知场景运行情况:在Duration时间结束以后,即时设置为每秒释放100虚拟用户,但实际上Controller仍将等待Duration部分中未执行完事务的用户执行完以后才进入脚本End部分(如图:Action中事务的结束伴随的是Action的结束,Action的结束伴随的是End的开始并结束)。
    结论:
    随着Ramp down时间的开始,虚拟用户并没有立即停止“手上”的事务,而是在事务执行完以后才开始执行End

     

  • 去掉把每个action作为事务的选项【转载】

    2011-05-16 11:57:33

    a.点击菜单栏中的Vuser,也可以直接按F4

    b.点击运行时设置,并选择"常规"中的"其他选项",

    c.此时可以将"将每个Action定义为一个事务"选项前的 勾 去掉,即可.

    这样在结果分析时,便不会显示Action相应的事务数据了.

  • 即时通讯客户端版测试经历

    2011-05-13 14:07:03

        即时通讯客户端版是OA附带的企业内部聊天工具,有点类似于QQ,简称IM。它的好友就是OA系统所有账号。此工具功能比较简单,基本就是发信息,发文件。但是我忽略了重要的一点,那就是客户端在登录时会加载好友列表,而当oa系统的账号比较多时,就导致了客户端加载不过来好友而登录不了的情况。

       一开始是测试即时通讯网页版的性能,环境部署在虚拟机上,cpu的性能不太好,导致测试结果中cpu占用率基本都在95%以上,后来换了一台服务器,是物理机。同样的场景,性能方面提升了很多。首先是cpu占用率明显下降,基本都在40%-55%;其实是响应时间,曲线图波动比较平缓了,不像之前的在用户数逐渐达到最高时,响应时间几乎直线上升。目前我只能从这两个方面分析出程序没有问题,能支持虚拟用户1000,同时运行数最高达120,并发数最高达80的场景运行13~14分钟。

     

    待续。。。。。

  • 在同一 IIS 进程中不可能运行两个不同的 ASP.NET 版本

    2011-05-12 09:57:15

    问题:在同一 IIS 进程中不可能运行两个不同的 ASP.NET 版本。请使用 IIS 管理工具重新配置服务器以在一个单独的进程中运行应用程序

    解决方法:找到IIS下“应用程序池”,新建一应用池。后找到对应网站虚拟目录,属性下找到主目录,将应用程序池选择为自己新建的应用程序池名称即可。

  • Schedule Group 与 think time【转载】

    2011-05-05 14:20:23

    问题2:如何在同一个场景中运行一个脚本多次,每次都用不同的用户数运行。例如:我录制了一个脚本,我想让这个脚本运行20次,前十次设置虚拟用户为50,后十次设置虚拟用户为100。如果可以这么设置的话应该如何设置,这种情况下运行的时候是否可以分别记录两种情况下的响应时间等结果。
    答:可以按照你说的进行设置的, 请参考以下界面的设置。
    runtime-setting.JPG

    问题3:在lr7.8里面,run-time里面的pacing设置,think-time的设置,都会对结果产生什么影响,响应时间里面是否会把think-time也考虑进去。
    答:不管是那个版本的LR,run-time setting中的pace time, think time的设置,尤其是设置适当放大pace time, think time的时间,可以缓解系统的压力。
    如果设置了think time,在最终的运行结果中,think time会被考虑进去的。在analysis中可以设置将think time过滤掉,即不包括think time。
    过滤Think time的方法:打开analysisviewset filter/group by界面,作如下界面的设置即可。

    think_time.JPG
  • “并发用户数”与“每秒事务数”[转载】

    2011-05-05 14:09:44

    “并发用户数”与“每秒事务数”是性能数据中不同性质的名词,没有直接关系。“并发用户数”针对的是时刻,比如我查看上午8时31分32秒这个时刻的在线人数是23,这个23就是这一时刻的“并发用户数”;而我提取31分到35分这5分钟的访问量是600,那么每秒平均事务数就是2了。

    但是“并发用户数”与“每秒事务数”也不是完全割裂的。

    比如有20个并发用户,每个用户4秒钟做一次访问,那么1分钟里每个用户访问15次,20个并发用户就做了300次,每秒平均事务数就是5。

    一般来说,当用户操作的样本数量足够多的时候,用户表现的操作会体现出规律与一致性,假设用户表现因子为α,可以近似的认为每秒事务数tps与并发用户数nu之间为一元关系

    tps=α×nu

    正确认识并发用户数和每秒事务数,是做好性能测试的充要条件。

  • 集合点-策略 【转载】

    2011-05-05 11:05:50

    集合点函数“lr_rendezvous("Meeting")“

    集合点应该放在事务的外面,这样就不包括等待并发的时间,平均事务响应时间准确一些。

    controller--scenario--rendezvous-- policy---进入弹出层去选择---第一个是按vuser百分比的 第二个running状态下vuser百分比的,第三个是数量的
    您可以为每个集合设置下列策略属性:

    释放策略:用来设置集合中能够一次释放的 Vuser 数。

    超时:在集合释放 Vuser 之前,Controller 等待的时间。

    要设置集合的策略属性,请执行下列操作:

    1. 选择“场景”>“集合”。将打开“集合信息”对话框。
    2. 从“集合”框中选择集合,然后单击“策略”按钮。将打开“策略”对话框。



    3. 在“策略”部分中,可以选择下列三个选项之一:
      • 当所有 Vuser 中的 X% 到达集合点时释放:仅当指定百分比的 Vuser 到达集合点时,才释放 Vuser。
      • 注意:此选项会干扰场景的计划。如果选择此选项,场景将不按计划运行。

      • 当所有正在运行的 Vuser 中的 X% 到达集合点时释放:仅当场景中指定百分比的正在运行的 Vuser 到达集合点时,才释放 Vuser。
      • 当 X 个 Vuser 到达集合点时释放:仅当指定数量的 Vuser 到达集合点时,才释放 Vuser。
    4. 在“Vuser 之间的超时值”框中输入一个超时值。每个 Vuser 到达集合点之后,LoadRunner都会等待下一个 Vuser 到达,等待的最长时间为您设置的超时间隔。如果下一个 Vuser 没能在超时间隔内到达,Controller 就会从集合中释放所有的 Vuser。
    5. 每当有新的 Vuser 到达时,计时器就会重置为零。默认的超时间隔是三十秒。

    6. 单击“确定”保存设置并关闭“策略”对话框。

    转载地址:http://www.51testing.com/?uid-71943-action-viewspace-itemid-70737


  • QTP加载外部文件函数,三种方法比较【转载】

    2011-03-10 11:41:03

    QTP加载外部文件函数,三种方法比较

    Author :Terry Yu     Orz : Terry's Station

    方式1:Executefile
    方式2:加到QTP的Resorece
    方式3:ExecuteGlobal方法

    在比较之前先简明叙述一下使用方法,以给初学者由浅入深的理解
    比如我们有一个函数Terry.vbs放在了C:盘下, 其中有如下函数(获取本机的IP地址):
    Function GetIPAddr()
    Set bjWMI = GetObject("winmgmts://./root/cimv2")
    Set colIP = objWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
    For Each IP In colIP
    temp = IP.IPAddress(0)
    Exit For
    Next
    GetIPAddr = temp
    End Function

    方式1的使用方法:
    直接在QTP中打:
    Executefile "c:\Terry.vbs"
    随后就可以引用wally.vbs中的任意函数了,如 msgbox GetIPAddr()

    方式2的使用方法:
    点击QTP菜单的File->Settings->Resources,之后添加Terry.vbs到QTP的resource中
    随后就可以引用Terry.vbs中的任意函数了,如 msgbox GetIPAddr()

    方式3的使用方式:
    ExecuteGlobal是VBS的函数而非QTP特有的函数,ExecuteGlobal的功能可以引入其它vbs文件的函数,就和C++的include,Java的import一样。使用范例:
    dim fso : set fso = createobject("scripting.filesystemobject")
    executeglobal fso.opentextfile("c:\Terry.vbs", 1).readall
    set fso = nothing
    大家可以看到其实它是把Terry.vbs全部读入内存中
    随后就可以引用Terry.vbs中的任意函数了,如 msgbox GetIPAddr()

    下面是一些我使用中的心得:
    方式1:Executefile的好处:
    QTP可以使用这个函数方便了自己写语句来引入函数,灵活性非常高
    方式1:Executefile的缺点和解决方案:
    1.会使得QTP的语句执行的黄色指针工作异常,狂跳
    2.Debug很头疼。我以前的上周有一段经历,一个很小的Bug,调试的时候Step into不进正确的函数体,竟然跳到了一行空行。后来这个小Bug竟然足足花了我3整天的时间。这个应该是QTP的Bug,希望它后续的版本可以改进
    3.会莫名其妙的执行一些本不应该有的操作,大大降低QTP执行时间效率,之间屏幕在闪,但是不知道在执行些什么。我曾经遇到过这样的情况:任其自然执行,屏幕狂闪,执行了半小时;我单步执行,只花了5分钟执行完毕。可见这会使得原本就受质疑的QTP的Performance更受谴责
    解决方案:
    以上三点我找不出解决方案,属于Hp的严重Bug还是需要HP来完善

    方式2:加到QTP的Resorece的好处:
    毕竟是QTP自带的引用外部VBS函数的,非常稳定
    方式2:加到QTP的Resorece的缺点和解决方案:
    灵活程度大打折扣,经常的情况是使用同一个测试框架对于不同的项目需要引入不同的VBS文件,非常不灵活
    解决方案:
    不过这也是有方法可以解决的:在外部调用AOM的函数中添加:
    Set bj = CreateObject("QuickTest.Application")
    Set qtLibraries = obj.Test.Settings.Resources.Libraries ' Get the libraries collection object
    If qtLibraries.Find("C:\Terry.vbs") = -1 Then
    qtLibraries.Add "C:\Terry.vbs", 1
    End If
    这样子就可以通过外部文件调用QTP对象模型来加载指定的VBS,也可以非常灵活

    方式3:ExecuteGlobal方法的优势:
    1.自己写代码,非常灵活
    2.外部函数由于从内存中读取,避免了I/O,执行速度加快,而且通过这个方法调用其它文件函数非常稳定
    方式3:ExecuteGlobal方法的缺点:
    1.一下子把可能需要用到的VBS文件全部读入内存,势必会增加内存开销
    2.Debug时候Step into不到指定的函数,调试不方便
    解决方案:
    对于1的解决方案的答案是没有解决方案,因为采取了ExecuteGlobal方法后内存开销增大是不可避免的。但是这点内存对于运行QTP来说并不是个不可承受的内存,微不足道
    对于2的解决方案其实可以在需要调试的时候手工加入到QTP专家视图窗口,调试完毕后再采用ExecuteFile调用

    事实上如果要我排个序的话我的优先顺序是:
    方式2:加到QTP的Resorece >> 方式3:ExecuteGlobal >> 方法方式1:Executefile
  • 测试过程总结[转载](用例,执行,沟通)

    2011-02-16 16:31:31

    1、测试过程中往往容易忽略最简单的测试,比如:系统的单词拼写,界面的显示与兼容性,易用性测试等。测试人员认为将单词放在最后测试,会出现测试疲劳,导致忽略这部分的测试。(建议:测试人员在针对一个需求进行验证的时候,应该明白存在哪几个方面的测试,比如:功能测试,业务需求测试,兼容性测试,安全性测试,界面测试,易用性测试等,将这几种融入到自己的意识里,每次测试过程中检查是否覆盖或遗漏了上述测试

    2、测试用例里没有区分用例的重要级别,输入数据及预置条件不是很准确。(建议:在写测试用例的时候,要注意分清楚测试用例的重要等级(H、M、L),在后期的测试执行中可以根据重要等级来划分执行的先后顺序,在时间不充足的情况下,可以安排只执行High与Medium级别的用例。说明:跟业务流程或需求紧密相关的测试用例可以定义为High,一般的功能点及异常检查或数据内容显示的测试用例可定义为Medium,对于界面性显示的测试用例可定义为Low。同样预置条件与输入数据对于在测试执行的时候起了很大的帮助作用,测试人员应该根据实际需要准确的定义预置条件与输入数据。)

    3、测试人员编写测试用例不能把握编写的粒度,到底写到哪个程度用例应该算恰到好处的。(建议:测试人员首先应根据项目组的要求,允许投入的时间及不同类型的业务系统去着手编写测试用例,其次测试人员每针对一个需求点编写测试用例的时候,尽量从以下几种测试类型去考虑测试点的覆盖:用户界面、数据的初始化、数据的同步性、数据的一致性、数据的有效性、出错处理测试、关键功能点、权限检查、业务数据流、业务状态转换、系统间接口集成、可用性、安全性、性能。因为测试用例的粗细同样决定着后续的测试执行工作以及测试用例维护工作的投入时间,不能因为测试用例而导致整个测试工作的后延。)

    4、测试人员编写的测试用例没有注意到每种测试用例类型的排列先后顺序,以及测试用例执行的连贯性,同时没有与实际的测试执行结合起来。(建议:一个需求所扩展出来的测试用例应尽量按照一定的顺序进行排列,如:界面显示检查 -> 数据内容检查 -> 功能点的出错处理检查 -> 功能点的正常处理检查 -> 业务流程的检查 -> 权限检查,这样可以让用例看起来条理清晰,可读性较强。同时测试用例更应该与测试执行时所做的操作相吻合,比如测试人员首先登录系统,进入某一个页面,先检查界面文本显示,然后查看数据内容是否正确,接着检查某个功能是否进行了出错处理,它是否达到了正常的可用性,最后提交数据,检查业务流程流转是否正确等。所以用例应该根据上面的这些检查操作来编写,通过一连串测试用例来实现这些操作。)
    5、一旦测试任务较多时,测试人员不能较好的把握测试的主次及优先顺序。不知道业务集中在哪些地方,哪些场景用户操作比较多。(建议:测试人员应该了解业务人员的基本操作习惯以及业务集中区域,对于业务人员经常操作的模板及业务,或者业务人员依赖性很强的功能点,测试人员应该重点对待,认真测试,比如:创建合同,邮件通知等。同时对于的不同的业务流程,测试人员应该与需求人员进行咨询,得出测试的优先级,比如:在某系统里,合同的业务单数最多,其次为开票,站点。)

    6、测试过程中提交问题单的占用的时间过多,导致测试的时间不够。 (建议:测试人员在前期提单尽量标准化,规范化。随着测试的深入以及工作量的增加,测试人员可以通过标题准确来描述问题单,让开发人员通过标题就可以知道问题所在。其次测试人员对于比较容易重现的问题单或者容易理解的,可以尽量忽略问题描述,但还是需要提供截图。对于组合操作发现的问题单,描述里面需要写明重现步骤及测试数据与条件。)
    7、问题单的严重级别定义不准确。在测试过程中,测试人员往往对于系统权限,流程错误等问题单给予提示或一般的严重级别,这样可能导致开发经理在分发问题的时候产生误导,或者导致项目质量分析报告中出现误差。(建议:测试人员应该根据缺陷给用户所带来的影响,以及与业务操作的关系等多方面去考虑,实事求是的给出准确的定义。bug严重级定义请参考缺陷填写规范V0.2.doc

    8、测试人员的沟通积极性不足。测试人员在整个软件开发生命周期里需要跟各种不同的角色进行沟通,比如需求人员,开发人员,开发经理,项目经理,架构师,运维人员及编辑人员等,与各种不同角色的人员进行沟通可以更好的支撑测试人员顺利的完成测试工作。(建议:测试人员在熟悉需求及编写用例的时候,应该主动与需求人员进行沟通,明确需求,解答需求疑惑。主动与开发人员进行沟通,咨询系统原型,获取开发人员的开发思路,从而完善测试用例,更全面的覆盖测试执行;应主动向项目经理或开发经理,提出风险问题或者自己的建议,如测试的面太广,测试时间不够等问题。性能测试人员更应该向系统架构师咨询系统的设计与架构,为后面的性能测试打下结实的基础,尽早的发现测试过程中的难点与问题点)  
  • 如何设置windows 2003的最大远程连接数

    2010-12-09 17:31:01

     

    按以下操作执行:

    开始 - >
    运行 - >
    gpedit.msc  - >
    管理模板 - >  
    Windows组件 ->
    终端服务 - > 
    限制连接数量 - > 
    启用 TS允许的最大连接数 。

    完成。
    操作如下图:

    如何设置windows 2003的最大远程连接数 - 我爱看火影 - wodexinlihua1 的博客
    如何设置windows 2003的最大远程连接数 - 我爱看火影 - wodexinlihua1 的博客
  • VMware Snapshot 工作原理[转载]

    2010-12-07 10:14:10

    VMware中的快照是对VMDK在某个时间点的“拷贝”,这个“拷贝”并不是对VMDK文件的复制,而是保持磁盘文件和系统内存在该时间点的状态,以便在出现故障后虚拟机能够恢复到该时间点。如果对某个虚拟机创建了多个快照,那么就可以有多个可恢复的时间点。

      当我们为虚拟机创建的快照时,当前可写的VMDK文件变成为只读状态,并且创建一个新文件(称之为快照文件)来保存变化的内容(使用in-file delta technology)。在初始状态下,快照文件的大小为16MB,并随着虚拟机对磁盘文件的写操作而增长。快照文件按照16MB的大小进行增长以减少SCSI reservation冲突。当虚拟机需要修改原来的磁盘文件的数据块时,这些修改会被保存到快照文件中。当在快照文件中的已经修改过的数据块需要被再次修改时,这些修改将覆盖快照文件中的数据块,此时,快照文件大小不会改变。因此,快照文件的大小永远不会超过原来的VMDK文件的大小。快照文件的变化频率取决于虚拟机应用的写的繁忙程度,例如对于Exchange和SQL等应用,快照文件变化比较快。多个快照的情况下,在创建新的快照时,之前的快照文件变成只读的状态。

    不同类型的快照文件:

    *-delta.vmdk文件:该文件就是前面我们所提到的快照文件,也可以理解为redo-log文件。在每创建一个快照时就会产生一个这样的文件。而在删除快照或回复到快照时间点状态时该文件会被删除。

    *.vmsd文件:该文件用于保存快照的metadata和其它信息。这是一个文本文件,保存了如快照显示名、UID(Unique Identifier)以及磁盘文件名等。在创建快照之前,它的大小是0字节。

    *.vmsn文件:这是快照状态文件,用于保存创建快照时虚拟机的状态。这个文件的大小取决于创建快照时是否选择保存内存的状态。如果选择的话,那么这个文件会比分配给这个虚拟机的内存大小还要大几兆。

    创建快照:

      快照的创建可以通过VMware VI客户端的Snapshot Manager来实现,或者通过ESX服务器的Service Console的命令行vmware-cmd来实现。无论虚拟机是在运行、关机还是挂起的状态,都可以创建快照。Snapshot可以通过VI客户端直接连接到ESX Server或者连接到VirtualCenter来管理。

    删除快照或者回滚到快照点状态

      当删除虚拟机的所有快照时,针对该虚拟机所创建的所有delta文件中的内容将会合并到原来的vmdk文件中,合并完成后再删除vmdk文件。如果只选择删除一个快照,那么这个快照的delta文件将和其父快照的delta文件进行合并。如果选择回滚到某一个快照,那么当前的磁盘和内存状态将会被丢弃,而且虚拟机会转变到revert-to的状态。无论选择哪个快照进行回滚,该快照都会变成当前的父快照,就是说当前运行的虚拟机会在这个快照之下。因此,父快照不一定是最近所创建的快照(在没有回滚的情况下,父快照一般都是最近所创建的快照)。在Snapshot Manager中父快照之下一般有“You are here”的标记。

      如果选择回滚的快照不包含内存状态,那么该虚拟机将会被关机,在管理员启动该虚拟机时应用所选择的快照。如果包含内存状态的话,那么虚拟机会短暂的停顿一下,然后回复到快照时的磁盘和内存状态。

    磁盘空间和删除多个快照:

      在创建快照前,所有的写操作都写入磁盘文件。但是有了快照之后,磁盘文件保持不变,而写操作写入delta文件,同时,如果保存内存状态的话,vmsn文件还要占用比该虚拟机稍大一些的空间。在只有一个快照时,在删除快照时不需要额外的空间。因为要么直接删除快照文件,要么把快照文件和VMDK磁盘文件相合并。但是在有多个快照的情况时,效果就不一样了。

      假设要删除一个虚拟机的所有快照,该虚拟机有三个快照,snap1、snap2和snap3。首先,snap3的快照文件要被合并到snap2的快照文件中,导致snap2占用空间增加。然后,snap2被合并到snap1中,导致snap1占用的空间增加。最后,snap1合并到VMDK文件中,此时不会增加空间开销。在合并完成后,快照才会被删除。一种替代的方式是依次删除快照,这样就不会增加所需要的空间,只是稍微繁琐一些。

    删除快照所需要的时间:

      通过VI客户端删除快照时,VI的状态栏中显示的信息可能会产生误导。通常,状态栏会很快到达95%完成的状态,但是会在95%的状态等待较长的时间一直到合并完成。VirtualCenter对所有的任务都有15分钟的超时值,即使后台还在合并,但是过了15分钟后,VirtualCenter会报告该操作超时。一种查看该任务是否完成的方式是通过VI客户端来浏览该虚拟机的datastore。如果该快照对应的delta文件不存在了,则说明该快照被删除了。

      如果快照存在的时间比较长,那么快照文件就会变得比较大,因此在删除快照时就需要比较长的时间进行合并。合并的时间取决于虚拟机的繁忙程度,在关机的状态下合并的速度较快。而ESX服务器后端的磁盘子系统的繁忙程度也会影响合并的时间。一个100GB的快照文件可能需要3-6个小时来合并到原来的VMDK文件中。而从ESX3.5开始,由于VMware修改了合并的算法,可能需要更长的时间来合并(参见VMware文档Consolidation of large or deeply nested snapshots)。这会影响虚拟机和ESX服务器的性能。因此,建议限制快照的保留时间,当不需要时即刻删除快照。

    快照和metadata锁对ESX性能的影响:

      快照对ESX服务器以及虚拟机的性能影响体现在几个方面。但创建快照时,虚拟机的活动会暂时停顿一下,此时如果通过ping命令去检查虚拟机的状态,可以看到一些timeout的response。此外,创建快照会导致metadata的更新,为了避免SCSI Reservations冲突会短时间内对LUN加锁,从而导致在短暂的时间内,这个LUN将只能由一个ESX服务器进行排他性访问。如果为虚拟机创建了快照,虚拟机在运行的状态中,该快照是活跃的。只要快照是活跃的,那么虚拟机的性能就会下降。因为ESX服务器对delta文件的写入方式不同于VMDK文件,而且效率相对较低。delta文件每次以16MB的大小来增长,它会导致另一种metadata锁。

      最后,删除或者回滚快照都会创建一个metadata锁。此外,删除快照时可能会导致性能比较大的下降,虚拟机越忙越明显。为了避免这个问题,快照的删除最好在非高峰时期。

  • 还原数据库时,提示“因为数据库正在使用中,所以未能或得对数据库的排它使用权”

    2010-09-20 16:32:00

    打开Sqlserver 配置管理器,重启SQL Server(MSSQLSERVER),然后再还原就ok了。
  • 以此谨记:没测试到地方一定会出问题

    2010-08-11 09:57:10

  • 远程桌面登录蓝屏、不显示桌面问题解决方法

    2010-06-25 13:54:05

    远程桌面登录蓝屏、不显示桌面问题解决方法

    目前使用远程桌面进行远程管理服务器的用户估计会遇到远程桌面登陆服务器后显示黑屏,或无法显示桌面无法进行操作的问题,您可以尝试以下操作方法对远程桌面进行激活。
    1.使用远程桌面,输入您服务器IP地址登陆服务器。


    2.登陆后出现黑屏或无法显示桌面是请您按下Ctrl+Alt+End键,激活远程桌面中的任务管理器。


    3.点击激活窗口中“任务管理器”后,结束查看进程标签中explorer.exe进程,选中该进程,并点击右下角“结束进程”,将该进程结束。


    4.然后您在“Windows 任务管理器”窗口中点击“文件”---“新建任务(运行...)”---“浏览”在浏览中选择“C:\WINDOWS\explorer.exe”程序---“确定”,即可激活远程服务器。
  • QTP连接到TD,折腾了好几次都连不上

    2010-06-25 13:52:27

    报:failed to connect to server http://192.168.2.27/TDBIN/default.htm
    在报错对话框中点击Detail,显示:
    Your connection to the Quality Center server failed.
    You must install the latest Quality Center Connectivity Add-in.
    To install, on the main Quality Center Login window, click the Add-in Page link. Then click the Quality Center Connectivity link. On the Quality Center Connectivity Add-in page, click the Download Add-in link to download the add-in.

    可是,我已经下载并安装了QuickTest 8.0 Add-in for quality center 了。
    唉,真是不知道怎么回事,请高手指点。
     
    解决方法:
     
    QC 那里填写这个.
    TD的URL:http://[机器名或IP地址]/TDBIN
    后面的default.htm不要填写上去.
    就可以连通
  • QTP中“无法识别控件”“错误回放过程未知弹出窗口”等问题的解决方法

    2010-06-24 15:09:59

    以下是我经常遇到的问题:

                   一、无法识别控件。

                   二、错误回放过程未知弹出窗口。

                   三、加载.net插件后和TD的关联问题。

                   四、动态加载元素的识别问题。

                   五、调用外部dll的问题。

                   六、随机验证码的问题。

            问题一,解决办法有三种:

               1、更改QTP自身对某控件的识别方式,在 tools——Object Identification 中。在这里列出了所有QTP能识别的控件,以及控件的识别方式。你可以给他添加X、Y坐标进行识别。或更明显的,列表中的信息,不按名称识别,而是按ID识别。这个修改可以解决一些问题,具体的赶紧动手试试吧……

               2、使用虚拟物件,来定义一个控件,在 tools——Virtual Object 中。在这里可以自定义一个控件。例如在ASP的程序中,程序出错,在客户端的表现形式大部分是一样的,你可以把整个错误页面当成一个控件来识别(感觉不错)。如果加一个判断,出错后你想做什么就由你自己定了。

               3、使用低级录制或鼠标录制。用 Test——LowLevelRecording/AnlogRecording 吧,用它录制就不需要什么设置了,他会记录你的程序控件相对屏幕的位置。用LowLevelRecording还有代码可改,用AnlogRecording动作就被封装了(维护性极差)。两者因实际环境更取其长吧……

            问题二的解决过程:

            关于弹出提示的问题,我当时需要情况是这样的。一个信息录入系统,由于数据量很大,查询需要一段时间。QTP回放时动作比较快,点了保存,程序还没反应过来它就进行了下一步操作。这时的操作就和录制时不一样了,程序给出一个提示,但这个提示是录制过程没有的。弹出框是一般都是POP形势(至上)的,导致QTP无法继续回放,结果就是回放失败。

            解决办法有两个:

                    1、进行判断,当出现这个提示时,点是/否/取消按钮。

                    2、通过 Tools——Recorvery Scenario Manager 设置默认操作。

                我最初就是用的第一种方法。写一个函数判断是否出现这个提示,如果出现就点“取消”然后wait(2)。    每个可能出现弹出框的动作后都调用一次这个函数。虽然可以解决这个问题,但回放的效率就低了,而且需要你预知提示框的信息。

                当我知道了第二种方法,显然更科学^_^。它可以对所有预知甚至不知的提示进行指定的操作。

                实际上,当程序出现了未预知的提示时,可能就是程序的BUG,所以使用上述办法解决工具问题时,也要考虑是否会掩盖程序的缺陷。

            问题三的解决办法:

                  用好QTP后,会不自觉的和TD关联起来。但从TD直接启动QTP时,程序只会加载QTP自带的插件,如果你安装了其它插件(如.net、java、etc.),默认是不加载的。这会导致上传的脚本无法正确执行。解决办法很简单,去 Test——Setting里进行Modify 吧。从本地打开的脚本,这里不能进行Modify的。所以办法很简单,但如果不知道的话就很难了。当初为这个问题我可是废了八牛三虎之力呢……

            问题四的解决过程:

                 当我开始改代码时,定义一个动作,然后可以生成N个动作。假设N个动作产生了N个结果,你要对这结果进行处理时,你会发现这N个结果都不能被识别:

            网页上有个表格,是往数据库里加数据的。

            两个表格显示在同一个页面上,左边为父表,右边为子表。

            点击左表,右表显示其子项目。

            结构如下:

            A

            ├─1

            ├─2

            ├─3

            └─4

            B

            ├─1

            ├─2

            ├─3

            └─4

                                ……

            思想很清晰:

            添加一个父项A、选中此父项A、对其添加子项1、2、3、4

            添加一个父项B、选中此父项B、对其添加子项1、2、3、4  ……

            代码也很简单:

            dim M          '定义父项数

            dim N          '定义每个父项包含的子项数

            For i=1 to M

                  Call 添加父项( i )

                  选中父项( i )              '问题就出在这里

               For j=1 to bwfl step 1

                   Call 添加子项( j )

                Next

            Next

            现在问题出来了,思路应该没有问题(除非这方法真的行不通),循环也是顺着思想来的。

            问题是,无法实现选中的父项(最多识别到一个)。

            由于此循环可以在录制过程进行,如果不改变变量名称,循环可且只可以成功运行一次。问题是这个名称都是从DataTable里获取的。

            因为,在运行过程中生成的项目没有加到对象库中,无法被识别。

               这个问题最后是从思想上解决的。答案是我做的是功能测试,为什么不先加父项,检查父项的功能是否正常,然后再去测子项的功能。不去改变名字,因为那没有必要。核心答案“功能测试、测试功能”。即对测试工具首先需要有正确的认识。

               当然,这个问题可以用代码去实现,但那需要有一定的编程功底且耗时,可维护性不一定好。有需要的朋友可以去试一下,然后把你的经验也共享一下。问题五,是对QTP很大的一个扩充。

                对于QTP调用外部DLL的功能,由于我的编程功底不够,没有相关人士配合我,我只能望之垂涎了!

                如果能调用外部DLL的话,QTP的功能就可以变得很强大。自己写的程序,自己编一些过程用QTP进行测试,我想“后果很严重”  。真想有一次给我尝试的机会……

            问题六,解决办法有4个:

                1、测试的时候,让程序员把这块限制去掉,免去验证这关。

                2、让程序员提供一个万能验证码,测试可以绕过这一关。

                3、请程序员提供识别的方法,从获取的图片读出验证数据,再传给QTP。

                4、进行位图检查,将验证码分段进行图像验证。

                实际上,验证码的目的就是防止用程序灌水或机器录入信息。所以有点为难我们测试了。

            方法1,如果程序已在发布并有客户使用,危险性是可想而知的。方法2虽然可以解决验证这一关,但跳过了输入码与验证码一致性问题。方法3就需要程序员配合了,可能就需要调用DLL了。方法4却将图像分段,把获取的图像和已经的图像进行比对,比对通过取对应的值;这个在数字验证会好做一点,因为最多就四个图像的比对。

    google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);
  • TD与QTP相连

    2010-06-24 11:11:25

    TD与QTP相连

     
    1、安装 TD,略
    2
    、安装 QTP,验证 QTP 安装成功,进入 windows 操作系统,点击,开始 -> 程序 ->Quick Test Professional-> Quick Test Professional ,打开 QTP 使用界面,进行简单的录制,保证脚本录制成功,并且可以回放,与你的预操作达到的结果一致,证明 QTP 安装成功。

    3
    、安装插件,进入 TD 首页,点击见面上的 TD Add In,进入 TD Add In 界面点击 More TestDirector Add Ins 进入 More TestDirector Add Ins 界面,下载名为 TDplugInsSetup 的插件,大约 35 兆并且在 ServerQTP 客户机上安装这个插件,安装成功后,会要求你重启电脑,重启后会看到,开始-程序中有个新安装的程序 “Quick Test Professinal add in for Quality Center” ,登入 TD 进入 test plan 检测是否可以在 test plan 中添加 QTP 类型的测试用例,点击后
    出现QUICKTEST.TEST 并且可以建立 QTP 的测试用例。

    4
    、检查没有问题之后
    还需要在安装 QTP 的机子上做一些相应的设定,进入 QTP 主界面 点击文件栏的 Tools-Options 进入 Options 对话框 在 Run Tab 中选择 Allow other Mercury products to run test and components 以及 Submit a defect to Qualiyt Center for each failed step 选中后 点击 ok 保存这个设置,在 QTP 主界面中点击 ToolQuality Center Connection,在 Server 中输入 http:// TDServer ip 地址 /TDbin( 本例中使用 htt......) 点击 connect 按钮 QTP 连接到服务器上 如果服务器连接有问题 则会提示连接失败。

    5
    、在 project connection 中包含一下几项:
       Domain
    TD 服务器站点管理中建立项目的域
       Project
    :域中你所建立的项目
       User
    :登陆项目所用的用户名
       Password
    :相应用户名使用的密码
       Reconnect on startup
    在下次启动 QTP 时自动登陆到你的项目中
       Save password for reconnection on startup
    为下次登陆保存密码
    完成了上述操作就 TDQTP 就连接起来
    可以从 TD 调用 QTP 脚本了。
    (转载51testing)

    我是将QTP8.2和TD8.0相连。按照本文中的设置一步步下来。。。很简单的用起来也很方便,尤其是用TD管理QTP脚本。

  • TD8.0安装和使用时遇到的问题解决

    2010-06-24 11:09:14

     

    1、TD8.0安装无法验证用户名和密码51Testing软件测试网Q(mhj ~f
    问题描述:在WIN 2003 SERVER 安装TD8.0的时候在验证用户名和密码的时候出现无法验证的错误.输入Administrator和正确的密码,它都提示unknow的user name or password.51Testing软件测试网gRT9w` ^C
    解决方案:是数据保护的问题...我的电脑-属性-高级-性能设置-数据执行保护-选择第一项-重启电脑

    +U Q+E*[V{4|OM(A18330651Testing软件测试网 C-[yL7D+q0~Hu o

    2、TD8.0不支持IE7浏览器51Testing软件测试网-~I#Z8h$f&v%vB
    问题描述:使用IE7打开TD登录页面,提示“Microsoft Internet Explorer : 4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727) is not supported! ”51Testing软件测试网 u~ Uu6^v
    解决方案:该问题是由于TD8.0不支持IE7,修正方法如下:
    -_Z|&PU;C183306(1)登录TD服务器,进入C:\Inetpub\TDBIN
    RT_)A'kP)Z183306(2)修改Start_a.htm文件,在|| (ua.lastIndexOf('MSIE 6.0') != -1)后添加|| (ua.lastIndexOf('MSIE 7.0') != -1),保存51Testing软件测试网(B v6aq-U$p
    (3)相同方法修改SiteAdmin.htm51Testing软件测试网w'PHl;XDh

    51Testing软件测试网3[k.z#_6W w7f9C&c

    3、刚刚安装好TD8.0,点击testdirector时显示空白页面
    xQ'zi8dL |aP1[_?&\183306问题描述:点击testdirector时显示空白页面
    !s [eq5Rkj^Xs183306解决方案:到 开始-管理工具-Internet信息服务(IIS)管理器 中,本地计算机-网站-默认网站-TDBIN,右键菜单 属性-HTTP头-MIME类型...,点‘新建...’按钮,填扩展名为ini,MIME类型为text/*,诸如此类,继续新建扩展名分别为:lld、dll、ocx、xco、exe、adt、adm、xxx,MIME类型都填为text/*

    (J1B;}r1t*f!c183306

    gdS]7U(]1833064、TD8.0与SQL Server2005数据库51Testing软件测试网p,R @a;LA%e-v
    问题描述:TD8.0支持SQL Server2005数据库
    F9v5azTxk183306解决方案:在SQL Server2005数据库环境下安装TD8.0,安装前必须配置数据库别名,配置方法如下:
    &Y3VjmAV183306(1)打开 开始- 程序- Microsoft SQL Server 2005- 配置工具- SQL Server Configuration Manager
    XaT.hZ~L'_NA183306(2)选择 SQL Native Client配置- 别名,右击弹出菜单,选择[新建别名],打开新建别名界面
    cuJV-V7V183306(3)输入别名:TDSQLSERVER,服务器:(TD服务器计算机名),选择TCP/IP协议,点击确定按钮即可51Testing软件测试网ua}2fI
    配置完成后输入服务器别名TDSQLSERVER进行登录数据库,确保可以登录成功。

    5HMOw0wa8F:N183306
  • sqlserver2005中新建登录名,系统在使用该登录名连接数据库时,提示“必须更改密码”

    2010-06-24 10:57:02

    sqlserver2005中新建登录名,系统在使用该登录名连接数据库时,提示“必须更改密码”

    解决方法:

    将登录名的密码改的复杂一点“字母+数字+特殊字符”

1273/7<1234567>
Open Toolbar