Be Myself !

发布新日志

  • 关于lr并发用户数算法依据

    2010-06-29 11:13:24Top 1

        希望高人能够指点下,lr的公示算法依据是来自哪里?怎么让咱们算出来的并发数据更有说服力。
  • 内存泄漏,Memory Usage

    2013-05-27 16:19:12

    run里面输入perfmon即可打开。
     打开之后,将系统默认的计数器按del全部删除掉,自己来建一个。我们测产品,肯定是观察特定于某个进程的是吧,针对整个系统的没什么用。添加个计数器,性能对象选择process,范例选择你要监视的进程,那内存点用率是选哪个啊。看来看去好多啊,Bytes的,咦,这个好像是,那个也好像是,到底是哪个啊,头痛!而且计数器的说明也不通啊,中文翻译的真是zao糕,让人摸不着头脑。

      其实是有个叫workingset的计数器,就是内存占用率,选上进程和WorkingSet计数器之后,就可以在图表中看到了。咦,怎么老是在100的位置啊,这个100到底是100M还100%啊,用进程管理看下被监控内存占用量,对不上啊。真晕。
    今天有个高材生给我指点了下,这个是要cheng上此计数器的Scale值,就是比例尺啦。一直显示100%是因为比例尺
    选得太小的缘故,值一直就冲出了这个比例尺的最大值,选择一个大点的就不会了。再看下值和任务管理器里的一样。

    真棒,找着了,就是他了。
    看着出来的图表,真高兴,漂亮。终于解释通了。原来就搞不懂为什么,这部分比较费劲,而且没人知道啊。所以这个
    问题一直保留到今天才弄明白。哎,惭愧!
    那为什么要用0-100这样的刻度来表示呢,因为这个纵轴可以同时表示几个计数器

    纵坐标啊。他们的大小又不一样,有的相差又很大,怎么办啊,所以他们设计了比

    例尺以便使他们可以在同一刻度上显示。

    晕,ms,都说你设计的软件易用性最高,看来还是只有在你们ms工作过的人才知道啊
    晕!
    另外一个小问题顺便附上下,看图表中的数据只是一段时间内的最新值,并不能保留全过程的。这样测试起来意义不是

    很大。从网上搜了下。新建个计数器即可。不过不是在图表里面,在性能和日志警报下面计数器。

    右键,新建日志设置,输入个有意义的名称,再按如上的方法选择计数器,在日志文件选项中,选择二进制文本文件
    (逗号分割)其实这个格式就是excel的csv格式,方便=会,我们用生成的数据建图表。
    计划选择手动,启动被测程序,准备执行case,选中新建的计数器点上方的启动按钮,执行case的操作,系统将为
    您每隔15秒钟取一次内存值,记录在csv文件中,操作完毕,点停止即可。
    然后到systemdriver:\PerfLogs\去找便有了。然后用插入图表作一下。
    出来的结果很漂亮,也不比LR的差嘛。

  • QTP中DataTable对象的方法

    2013-05-27 14:27:41

    1: AddSheet 方法

    描述 

    向运行数据表中添加指定工作表并返回工作表,以便可以直接在同一句中置新工作表的属性。 

     

    DataTable.AddSheet(SheetName)

    示例 

    以下示例先使用 AddSheet 方法在运行数据表中新建工作表"MySheet",然后向新工作表中添加参数。 

    Dim Variable

    Variable=DataTable.AddSheet ("MySheet").AddParameter("Time", "8:00") 

     

    2DeleteSheet方法

    描述 

    从运行数据表中除指定工作表 

     

    DataTable.DeleteSheet SheetID

    示例 

    以下示例使用 DeleteSheet 方法从运行数据表中除工作表"MySheet" 

    DataTable.DeleteSheet "MySheet"

     

    3Export方法

    描述 

    在指定位置保存运行数据表的副本。 

     

    DataTable.Export(FileName)

    示例 

    以下示例使用 Export 方法将测试的数据表副本保存在 C:\flights.xls 中。 

    DataTable.Export ("C:\flights.xls") 

    flights.xls内容

     

    4ExportSheet方法

    描述 

    将运行数据表的指定工作表出到指定文件中。 

    如果指定文件不存在,建一个新文件并保存指定工作表。

    如果当前文件存在,但是文件不包含具有指定工作表名称的工作表,将插入工作表作文件的最后一个工作表。

    如果当前文件存在且包含指定工作表,则导出的工作表将覆盖有工作表。

     

    DataTable.ExportSheet(FileName, DTSheet)

    DTSheet  变量  要导出的运行时数据表工作表的名称或索引。索引值从 1 开始。  

    示例 

    以下示例使用 ExportSheet 方法将运行数据表的第一个工作表保存到 name.xls 文件中。 

    DataTable.ExportSheet "C:\name.xls" ,1

    DataTable.ExportSheet "C:\name.xls" , " MySheet "

    name.xls表内容

     

    5GetCurrentRow方法

    描述 

    返回运行时数据表的第一个工作表(用于测试的全局表或用于业务组件的业务组件表)中的当前(活动)行。 

    语法 

    DataTable.GetCurrentRow 

    返回值 

    数字 

    示例 

    以下示例使用 GetCurrentRow 方法检索当前在运行时数据表中使用的行,并将其写入报告。 

    row = DataTable.GetCurrentRow 

    Reporter.ReportEvent 1, "行号", row 

    6:GetRowCount方法

    描述 

    返回运行时数据表的第一个工作表(用于测试的全局表或用于业务组件的业务组件表)中最长的列中的总行数。 

    语法 

    DataTable.GetRowCount 

    返回值 

    数字 

    示例 

    以下示例使用 GetRowCount 方法查找 MySheet 运行时数据表中最长的列中的总行数,并将其写入报告。 

    rowcount = DataTable.GetSheet("MySheet").GetRowCount 

    Reporter.ReportEvent 2, "数据工作表中有 " &rowcount, "行。" 

     

    7:GetSheet方法

    描述 :返回运行时数据表中的指定工作表。 

    语法 DataTable.GetSheet(SheetID)

    SheetID  变量  标识要返回的工作表。SheetID 可以是工作表名称或索引。索引值从 1 开始。  

    示例 

    返回值 

    DTSheet 对象 

    以下示例使用 GetSheet 方法返回运行时数据表的"MySheet"工作表,以便向其中添加参数。 

    MyParam=DataTable.GetSheet ("MySheet").AddParameter("Time", "8:00") 

    您还可以使用该方法向"MySheet"本地表中添加参数(注意,不会返回值)。 

    DataTable.GetSheet ("MySheet").AddParameter "Time", "8:00" 

     

    8:GetSheetCount方法

    描述 

    返回运行时数据表中的总工作表数。 

    语法 

    DataTable.GetSheetCount 

    返回值 

    数字 

    示例 

    以下示例使用 GetSheetCount 方法查找运行时数据表中的总工作表数,并将其写入报告。 

    sheetcount = DataTable.GetSheetCount 

    Reporter.ReportEvent 0, "工作表编号", "数据表中有 " & sheetcount & " 个工作表。"

     

    9:Import方法

    描述 

    将指定的 Microsoft Excel 文件导入运行时数据表。 

    注意:

  • QuickTest Professional 自动化对象模型

    2013-05-27 14:26:55

     正如使用 QuickTest 实现应用程序测试自动化一样,也可以使用 QuickTest Professional 自动化对象模型实现 QuickTest 操作自动化。 可以使用由 QuickTest 自动化对象模型公开的对象、方法和属性来编写程序,用以配置 QuickTest 选项和运行测试或业务组件,而不必使用 QuickTest 界面手动执行这些操作。

       自动化程序在以下情形特别有用:多次执行相同任务或就多个测试或组件执行相同任务;根据特定环境或应用程序的需要快速配置QuickTest。

       其实要自动化运行QuickTest 相当简单,只需自己在电脑上建个vbs文件,完成后双击运行就可以实现了.下面给个最简单的配置QuickTest自动化启动,打开测试脚本,然后保存测试结果,然后自己关闭QuickTest程序的例子脚本.

    dim qtApp  

    dim qttest

    set qtApp = Createobject("QuickTest.Application")   '创建 Application 对象

    qtApp.launch   ' 启动

    qtApp.Options.Run.ViewResults = true

    qtApp.Visible = True  '可见

    qtApp.open "E:\Test1",true   '用只读的方法打开测试脚本

    Set qtTest = qtApp.Test   '创建 Test 对象

    Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' 创建 Run Results Options 对象

    qtResultsOpt.ResultsLocation = "E:\Test1\Res1" ' 设置测试结果保存位置

    qtTest.run qtResultsOpt   '   执行测试

    qtTest.close   ' 关闭测试

    qtApp.quit    '关闭QTP

    Set qtTest = Nothing ' 释放 Test 对象

    set qtApp =nothing   '释放


  • QTP中设置共享对象库

    2012-07-03 14:23:36

       很多时候我们总是觉得管理QTP脚本比较烦.因为除了要对代码的管理之外,还要保证QTP对象库的完整.每一个用例脚本的生成,同时又都会生成一个对象库.那么是不是可以做一个公共的对象库来给各个用例脚本调用呢?接下来,我们就来实现共享对象库的应用.

      第一步:把需要加到共享对象库中的各个用例脚本的对象库,分别导出成.tsr文件.

      操作方法:先用QTP打开已经录制完毕的脚本后,选择Resources--> Object Repository .

      然后file-->export....取名导出文件.如下图:

               

      第二步:把需要加入到共享对象库中的各个用例脚本的对象库,合并对象及对象属性,形成一个大的共享对象库.

      操作方法:打开Resources-->Object Repository Manager.找到Tools菜单,然后选择打开Object Repository merge tool.选择两个要合并的对象库文件,进行对象合并.一次只能合并两个.所以如果这里你要合并多个对象库文件的话,先合并两个后,保存成一个新的.tsr文件.然后再重复上面的操作,选择这个新的.tsr文件和另一个准备好的对象库合并.

    合并的时候,你会发现,在两个对象库文件中,相同的对象合并成一个,不同的对象,全部被完整增加进去.然后形成一个大的对象库.现在只要保存这个共享对象库.如果以后有新增的对象,可以重复上述操作.

      第三步:调用上面保存好的共享对象库.给新的脚本使用.

      操作步骤:Resources-->Associate Repository.选择上面保存好的共享对象库的.tsr文件.加入到Associate Repository中.

    完成这一步后,其实整个共享对象库的操作已经完成.你在对象库中可以看到以后的对象.在录制新脚本的时候,如果对象已经存在,就不会再被记录,只有在这个对象库中没有的对象才会被记录进去.回放脚本,对象识别成功.

    (注:此操作只适合与装有QTP9.0的版本.对于8.2版本不适合)

    附:8.2版本中的共享对象库操作

    QTP8.2的共享方法
    1. 选择“测试”>“设置”>“资源”选项卡。
    2. 在“对象库类型”区域,“共享”。
    请指定要用作对象库文件的共享对象库文件。要指定文件,请输入对象库文件名,或单击浏览按钮并从“打开”对话框中选择资源文件。要新建共享对象库文件,请在“共享”框中输入新文件名。
    对象库文件的默认文件扩展名是 .tsr,但是文件可能使用任何扩展名。在“打开”对话框中浏览现有对象库文件时,在“文件类型”框中选择“所有文件”。
    3. 注:请在新测试开始录制前进行设置,已有测试的对象库模式不能进行修改。

  • Windows 服务快捷启动命令

    2012-05-01 16:12:32

    Windows 服务快捷启动命令

    Windows 服务快捷启动命令

    gpedit.msc-----组策略

    sndrec32-----录音机

    nslookup----- ip地址侦测器

    explorer------ 打开资源管理器

    logoff-------注销命令

    tsshutdn------60秒倒计时关机命令

    lusrmgr.msc----本机用户和组

    services.msc---本地服务设置

    oobe/msoobe /a---检查xp是否激活

    notepad------打开记事本

    cleanmgr------垃圾整理

    net start messenger--开始信使服务

    compmgmt.msc---计算机管理

    net stop messenger--停止信使服务

    conf-------启动

    dvdplay------dvd播放器

    charmap------启动字符映射表

    diskmgmt.msc---磁盘管理实用程序

    calc--------启动计算器

    dfrg.msc------磁盘碎片整理程序

    chkdsk.exe-----chkdsk磁盘检查

    devmgmt.msc--- 设备管理器

    regsvr32 /u *.dll---停止dll文件运行

    drwtsn32-----系统医生

    rononce -p ----15秒关机

    dxdiag------检查directx信息

    regedt32-----注册表编辑器

    msconfig.exe---系统配置实用程序

    rsop.msc------组策略结果集

    mem.exe-----显示内存使用情况

    regedit.exe----注册表

    winchat------xp自带局域网聊天

    progman------程序管理器

    winmsd------系统信息

    perfmon.msc----计算机性能监测程序

    winver------检查windows版本

    sfc /scannow----扫描错误并复原

    winver------检查windows版本

    wmimgmt.msc---打开windows管理体系结构

    wupdmgr-----windows更新程序

    w脚本------windows脚本宿主设置

    write-------写字板

    winmsd------系统信息

    wiaacmgr-----扫描仪和照相机向导

    winchat-----xp自带局域网聊天

    mem.exe-----显示内存使用情况

    msconfig.exe---系统配置实用程序

    mplayer2-----简易

    mspaint------画图板

    mstsc------远程桌面连接

    mplayer2-----媒体播放机

    magnify------放大镜实用程序

    mmc-------打开控制台

    mobsync-----同步命令

    dxdiag------检查directx信息

    drwtsn32-----系统医生

    devmgmt.msc--- 设备管理器

    dfrg.msc------磁盘碎片整理程序

    diskmgmt.msc---磁盘管理实用程序

    dcomcnfg-----打开系统组件服务

    ddeshare------打开dde共享设置

    dvdplay------dvd播放器

    net stop messenger--停止信使服务

    net start messenger--开始信使服务

    notepad------打开记事本

    nslookup------网络管理的工具向导

    ntbackup------系统备份和还原

    narrator------屏幕“讲述人”

    nyessmgr.msc----移动存储管理器

    nyessoprq.msc---移动存储管理员操作请求

    netstat -an----(tc)命令检查接口

    syncapp------创建一个公文包

    sysedit------系统配置编辑器

    sigverif------文件签名验证程序

    sndrec32-----录音机

    shrpubw-----创建共享文件夹

    secpol.msc----本地安全策略

    syskey------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码

    services.msc---本地服务设置

    sndvol32-----音量控制程序

    sfc.exe------系统文件检查器

    sfc /scannow---windows文件保护

    tsshutdn------60秒倒计时关机命令

    tourstart------xp简介(安装完成后出现的漫游xp程序)

    taskmgr------任务管理器

    eventvwr-----事件查看器

    eudcedit-----造字程序

    explorer-----打开资源管理器

    packager-----对象包装程序

    perfmon.msc----计算机性能监测程序

    progman-----程序管理器

    regedit.exe----注册表

    rsop.msc-----组策略结果集

    regedt32-----注册表编辑器

    rononce -p ---15秒关机

    regsvr32 /u *.dll---停止dll文件运行

    regsvr32 /u zipfldr.dll--取消zip支持

    cmd.exe-------cmd命令提示符

    chkdsk.exe-----chkdsk磁盘检查

    ceryesgr.msc----证书管理实用程序

    calc--------启动计算器

    charmap-------启动字符映射表

    cliconfg-------sql server 客户端网络实用程序

    clipbrd-------剪贴板查看器

    conf--------启动

    compmgmt.msc---计算机管理

    cleanmgr------垃圾整理

    ciadv.msc------索引服务程序

    osk--------打开屏幕键盘

    odbcad32------odbc数据源管理器

    oobe/msoobe /a----检查xp是否激活

    lusrmgr.msc----本机用户和组

    logoff-------注销命令

    iexpress------木马捆绑工具,系统自带

    nslookup------ip地址侦测器

    fsmgmt.msc-----共享文件夹管理器

    utilman-------辅助工具管理器

  • 资料整理

    2012-02-13 10:45:29

    GUI测试工具

    http://www.easetest.com/testtool/gui/

    安全测试工具

    http://www.easetest.com/testtool/security/

    云计算测试


    http://www.easetest.com/testtool/cloud/
  • 关于网络测试工具资料整理

    2012-02-13 10:39:43

    网络测试工具

    资料来自:http://www.easetest.com/testtool/network/
    1)ethereal:wireshark前身,网络协议分析
    1.Ethereal介绍Ethereal (Ethereal:A Network Packet Sniffing Tool)当前广泛使用的一种计数通网络故障分析和各种协议报文嗅探分析工具软件。类似工具tcpdump,但Ethereal 和他具有明显的区别,有设计完美的 GUI ...
    http://www.easetest.com/article-88-1.html
    1.功能介绍:1.1.Wireshark是世界上最重要的网络协议分析仪。它可以让你捕捉和交互式浏览在计算机网络上运行的交通。这是事实上的(经常法理)在许多行业和教育机构的标准。Wireshark的发展兴旺得益于遍布全球的网络 ...
    http://www.easetest.com/article-83-1.html
    1.功能说明一个轻量级的性能和功能测试工具执行测试再从IE或Firefox记录的网址列表!非常容易使用!多个用户/迭代测试提供了基本的响应时间。2.屏幕截图3.下载地址:sourceforge.net/projects/http-test/files/易测网 ...
    http://www.easetest.com/article-82-1.html
    介绍:  SIPP是一个SIP协议的性能测试工具。其主要特点是基本SIPStone情况下,TCP / UDP传输,可定制(基于XML)的情况下,呼叫率的动态adjustement和一套全面的实时统计数据。 系统:Linux/Nnix 官网:sipp.sou ...
    http://www.easetest.com/article-74-1.html
    SNMP Agent Tester:介绍:容易使用的自动化工具,用来测试简单网络管理协议(SNMP)和管理信息库(MIB)的实现。版本:SNMPv1,SNMPv2c和SNMPv3。内置测试案例,还可以在GUI界面上自定义测试方案流程,进行测试。系 ...
    http://www.easetest.com/article-20-1.html
    MIB Browser:功能:管理MIB信息,可以进行获取和设置(Get Walk Set),导入标准MIB文件可以显示节点信息和节点功能定义。系统:Linux,Windows费用:Free
    http://www.easetest.com/article-19-1.html
    VPCS:全称:Virtual PC Simulator功能:模拟PC中部分命令及其功能,被用于模拟网络节点进行各种报文的交互测试。指标:一个真实物理PC最多模拟9台PC。系统:Linux、Windows特点: 1. 很小的内存、CPU资源占用。 2. ...
    http://www.easetest.com/article-11-1.html
    IxANVL:功能:各种标准网络协议(RFC、IEEE、IETF、ISO、IEC标准组织)测试仪器,可以验证协议的具体交互过程,以及协议交互报文的正确性,和标准规范的一致性,包含几乎所有常用的协议库。公司:Ixia费用:商业系统 ...
    http://www.easetest.com/article-10-1.html
    SolarWinds:功能:提供多达几十种工具集合,涵盖网络发现、IP管理、DNS(动态域名服务)管理、路由器配置、网络管理、性能监控、SNMP(简单网络管理协议)安全检查、MIB管理工具。特点:简单的图形化操作系统:Windows旗 ...
    http://www.easetest.com/article-8-1.html


  • 关于WEB测试工具资料整理

    2012-02-13 10:31:40

    WEB测试工具

    http://www.easetest.com/testtool/web/

       1.Capybara介绍可以帮助你测试通过模拟真实用户与您的Rails和Rack应用程序进行交互的测试。它是有关运行测试的驱动程序无关,带有Rack::Test和Selenium支持内置的WebKit支持通过外部的gem。2.安装#输入以下代码进行安 ...
       http://www.easetest.com/article-90-1.html
       http://www.easetest.com/article-89-1.html
       http://www.easetest.com/thread-561-1-1.html
       SAHI:1.功能介绍:1.1.SAHI是一个自动化工具来测试Web应用程序。 SAHI注入网络使用代理和帮助Web应用程序自动化的JavaScript网页中的JavaScript。1.2.SAHI是一个友好的工具测试。它抽象了最困难的测试者的脸,而Web ...
       http://www.easetest.com/article-81-1.html
       介绍:Internet Explorer浏览器兼容性测试工具(版本从5.5到10)。目前为alpha版本,IETester是一个免费的(包括个人和专业使用)的web浏览器,让您IE10预览渲染和JavaScript引擎,IE9中,IE8,IE7 IE 6和IE 5.5的Wi ...
       http://www.easetest.com/article-80-1.html
       介绍:  这里提到的iTest并非fanfare公司的商业产品iTest(该公司已被Spirent收购),而是淘宝公司的基于开源测试工具Juint和著名的开源IDE:Eclipse基础上开发的用来测试他们自己公司Web应用程序的测试系统。   ...
       http://www.easetest.com/article-78-1.html
       介绍:   该模块让Windows平台上可以使用Internet Explorer对Web应用程序进行自动化测试。它在内部使用Win32::OLE创建自动化对象为IE浏览器。它的驱动器Internet Explorer中使用DOM属性和方法。模块允许用户点击链 ...
       http://www.easetest.com/article-60-1.html
       支持Windows系统的IE浏览器的Web应用程序测试工具。
       http://www.easetest.com/article-31-1.html
       Flash的自动化测试工具,支持录制和回放。
       http://www.easetest.com/article-30-1.html
       JS脚本在各种浏览器上的兼容性测试工具。
       http://www.easetest.com/article-29-1.html
       Selenium: 功能:用于网页测试、模拟用户对WEB页面进行测试,也可以说是一种C/S构架,依赖于浏览器。 核心思想:通过各种脚本(Perl、Python、Ruby、Java)的发送命令给JavaServer,由Server对页面进行操作。脚本 ...
       http://www.easetest.com/article-16-1.html
       Web、GUI程序测试,可以对文字、图形、控件具体位置进行判断。
       http://www.easetest.com/article-6-1.html

  • 质量管理十大原则

    2011-11-11 14:05:05

    第一原则:要有一个坚定不移的目标

      许多公司趋向于解决当前的问题而忽略将来的目标。根据Deming的原则:“对于一个公司,在没有一个针对未来的计划的前提下,它是不能存在于商业领域中的。”,一个坚定不移的目标需要:创新。如:一个长期的计划,投资于研究和教育,并且不断的改进产品和服务。

      为了应用该原则,一个质量保证组织可以:

      1、开发一个质量保证计划,提供一个长期的质量方向

      2、需要软件测试者为每个项目开发并维护一个一致的测试计划

      3、鼓励质量分析人员和测试人员遵循具有革新的方法来最大化产品的质量

      4、致力于不断改进质量过程

      第二原则:质量成为信仰

      质量必须成为一个新的信仰,根据Deiming的理论:“生存的成本和需要花钱购买的商品和服务的质量是成反比的,如:可靠的服务可以降低成本,延迟的服务或错误却会提高成本”。由于延迟的服务和错误,商品和服务的消费被终止了,这降低了它们存在的意义。

      为了应用该原则,一个质量保证组织可以:

      1、教育开发组织关于质量的价值和需要

      2、提高质量保证部门的地位,使他们和别的部门同样重要

      3、纠正对质量部门是“看门狗”的消极看法

      第三原则:不要依赖于海量的检查

      传统的想法认为检查可以排除糟糕的质量。当难于确定在过程中一个缺陷在哪边产生的时候,一个好的方法是关注于我们做的如何,而不应针对最终的产品。质量应当是内在的,而不是依赖于无数的检查获得的。

      为了使用该原则,一个质量保证组织可以:

      1、在整个开发生命周期中,提高并使用技术评审、走读和检视来获取质量。

      2、在整个组织中灌输质量意识,并把它作为一个切实的,可度量的工作产品

      3、需要信息技术质量的统计证据

      第四原则:不要纯粹按照价格因素来选择供应商

      “两个或多个以上的同种商品的供应商可能会导致恶性的竞争,这些竞争除了会损害供应商自身外,并且还可能会损害商品的使用者”。为了最好的服务于公司,购买方可以通过和供应商建立一种长期的忠实的关系,并且与一个专门的供应商建立信任关系。一般可能会通过一系列的标准来衡量哪个供应商更好,但一个更好的方法是积极的使用Deming的十四条原则参与到供应商管理当中。

      在软件开发中,可能会需要各种工具和中间件供应商、子合同承包商,而这些商品品或服务的质量会极大的影响最终的产品质量。

      为了应用该原则,一个质量保证组织可以:

      1、需要软件产品和服务提供者提供能够证明他们质量的统计数据

      2、对每一个质量保证工具、测试工具和服务选择一个最好的供应商,并且建立一个与质量计划一致的工作关系

      3、对子合同承包商,需要建立一致的质量保证计划

      第五原则:产品和服务系统稳定的长期的提高

      改进不是一时的努力——管理者有责任不断的提高质量。“把火扑灭——很多公司称之为救火队,并不是改进,寻找失去控制的地方,找到其特殊的原因并改正它,这只是把过程纠正回本来应该的位置。改进的责任是一个无止境的过程”

      为了应用该原则,一个质量保证组织可以:

      1、不断的提高质量保证和测试过程

      2、不要依赖于主管的判断

      3、使用统计技术,如测试分析和通过主因及效果分析揭示问题根源等方法

      第六原则:建立培训和再培训制度

      在很多公司,通常只有很少甚至没有培训,员工们不知道何时才能正确的完成他们的工作。消除不适合的培训是非常困难的。Deming强调:只要工作成果还无法受到统计控制,并且还能获得更大的好处的时候,培训就不应当被中止。

      为了应用该原则,一个质量保证组织可以:

      1、建立现代的培训辅助和实践

      2、鼓励质量工作者通过参加研讨班或上课不断的提高质量和测试方面的技术知识

      3、奖励工作者建立新的研讨班和特殊的兴趣小组

      4、使用统计技术确定何时培训被需要,并且何时培训可以结束

      第七原则:建立良好的组织结构

      “没有任何一个借口可以把人放到他们不知道如何做的岗位上。绝大多数所谓的‘无事可做的人'是因为他们被放置在不适合的工作上或者由于不善的管理造成的”。管理者有责任去寻找是什么原因造成员工不以工作为自豪。从一个信息技术的眼光来看,开发人员经常认为质量这种事应当是质量部门的责任。QA作为质量领导者应当敢作敢为,并且指出质量是每一个人的责任。

      为了应用该原则,一个质量保证组织可以:

      1、如果一个开发人员有大量的错误被QA测试发现,那么需要化时间来培训他(她)如何进行单元测试或如何更有效的编码

      2、提高对流程规范的监督,这是管理者的责任

      3、允许项目管理者有更多的时间在工作上去帮助项目组内的人

      4、使用统计技术来揭示哪里存在缺陷

      5、加强组织结构内的各种沟通

      6、加强质量计划的制订、执行和反馈

      7、质量部门保持一定的独立性

      第八原则:打破不同领域间的障碍

      当各部门有不同的目标的时候,很多的问题就随之产生了。这些部门不会象一个有效的小组一样去解决问题、设定政策和定义新的方向。“人们在自己的部门内可以工作的非常好,但如果他们的目标发生冲突的时候,他们将对公司造成损害。此时最好成立一个联合工作组,他们对公司负责”

      为了应用该原则,一个质量保证组织可以:

      1、质量保证部门和其它部门需要紧密的工作在一起。QA应当被视为好的伙伴,他们致力于使软件产品最终成为最优秀的产品。

      2、质量保证组织应当指出缺陷应当在产品最终到达用户手上之前被发现

      第九原则:排除为工作努力而设置的口号、训示及目标

      “口号是不会帮助任何一个人做好工作的,它们会产生挫折和怨恨”。像“零缺陷”或“在第一时间把事情做好”等口号在表面上看是好的,问题是它们被视为一种信号,即管理者不理解或不关心雇员的实际问题。设定了目标但不描述如何去完成该目标,在实践中是经常发生的。

      为了应用该原则,一个质量保证组织应该:

      1、鼓励管理人员避免使用口号,而应该制订指导实践的规范;

      2、QA组织应当开发文档标准、过程和步骤,而不是产生一些无用的口号,其它组织成员可以使用这些标准、过程和步骤得到最大的质量。

      第十原则:建立一个教育和再培训的有力的过程

      质量是由制造产品的人决定的,而最终是由人的知识和技能来决定的。人们必须获得新的知识和技能。教育和再培训是对人的一种投资,这是一个长期的计划。教育和再培训必须使得人们到新的工作岗位上并承担新的责任。

      为了应用该原则,一个质量保证组织可以:

      1、鼓励质量工作者通过参加研讨班或上课不断的提高质量和测试方面的技术知识

      2、奖励工作者建立新的研讨班和特2殊的兴趣小组

      3、在新的质量技术方面对个人进行再培训

  • QTP实例-测试报告代码

    2011-09-15 14:28:03

    自动化测试实际是将测试人员手工进行的工作脚本化,这就需要在测试脚本运行完成后,展示一个明了的测试报告,供相关人员查看测试结果,判断系统的正确性,以下代码实现的是一个EXCEL格式的测试报告,以Function为单位记录脚本的执行情况,若完成则显示Complete,在Comment中显示验证点检查结果情况,以此来判断系统运行的正确行;若由于一些突发的异常情况导致脚本未执行完成,则显示Fail,在Comment中显示Err.Descrīption信息

    当然,要达到以上效果,要求在业务脚本的检查点按照指定的格式书写,我的做法是设置一个全局变量记录所有检查点信息,然后传入给日志函数

    以下是代码,希望对有需要的朋友有所帮助:)

    Function ExcelReport(ReportExcelFile,sStatus,sDetails)
      '定义变量
      Dim fso
      Dim oExcel
      Dim ExcelFile
      Dim TestcaseName
      Dim objWorkBook
      Dim objSheet
    '  Dim Environment("Row"), Environment("TCRow"), NewTC
      
      Set fso = CreateObject("scrīpting.FileSystemObject")
      Set ōExcel = CreateObject("Excel.Application")
    '   oExcel.Visible = True
      
      '设置Excel报告样式
      If  Not fso.FileExists(ReportExcelFile) Then
       oExcel.Workbooks.Add
       
       '获取工作簿的第一个Sheet页
       Set ōbjSheet = oExcel.Sheets.Item(1)
       oExcel.Sheets.Item(1).Select
       
       With objSheet
        '更改sheet名
        .Name = "Test_Summary"
        
        '设置列宽
        .Columns("A:A").ColumnWidth = 5
        .Columns("B:B").ColumnWidth = 35
        .Columns("C:C").ColumnWidth = 10
        .Columns("D:D").ColumnWidth = 60
        .Columns("A:D").HorizontalAlignment = -4131
        .Columns("A:D").WrapText = True
        
        '设置显示区域的字体类型和大小
        .Range("A:D").Font.Name = "Arial"
        .Range("A:D").Font.Size = 10
        
        '设置文件头格式
        .Range("B1").Value = "Test Result"
        .Range("B1:C1").Merge 
         
        '设置文件头格式字体和颜色
        .Range("B1:C1").Interior.ColorIndex = 53
        .Range("B1:C1").Font.ColorIndex = 19
        .Range("B1:C1").Font.Bold = True
        
        '设置执行的日期和时间
        .Range("B3").Value = "Test Data:"
        .Range("B4").Value = "Test Start Time:"
        .Range("B5").Value = "Test End Time:"
        .Range("B6").Value = "Test Duration: "   
        .Range("C3").Value = Date
        .Range("C4").Value = Time
        .Range("C5").Value = Time
        .Range("C6").Value = "=R[-1]C-R[-2]C"
        .Range("C6").NumberFormat = "[h]:mm:ss;@"
        
        '设置日期和时间cell的边界
        .Range("C3:C8").HorizontalAlignment = 4 '右边对齐
    '     .Range("C3:C8").Font.Bold = True
    '     .Range("C3:C8").Font.ColorIndex = 7
        .Range("B3:C8").Borders(1).LineStyle. = 1
        .Range("B3:C8").Borders(2).LineStyle. = 1
        .Range("B3:C8").Borders(3).LineStyle. = 1
        .Range("B3:C8").Borders(4).LineStyle. = 1
        
        '设置日期和时间Cell的样式
        .Range("B3:C8").Interior.ColorIndex = 40
        .Range("B3:C8").Font.ColorIndex = 12
        .Range("C3:C8").Font.ColorIndex = 7
        .Range("B3:A8").Font.Bold = True
        
        .Range("B7").Value = "No Of Function:"
        .Range("C7").Value = "0"

        .Range("B8").Value = "Test Machine"
        .Range("C8").Value = GetIP()
        .Range("B10").Value = "TestCase"
        .Range("C10").Value = "Finish"
        .Range("D10").Value = "Comment"
        
        '为Result Summery设置格式
        .Range("B10:D10").Interior.ColorIndex = 53
        .Range("B10:D10").Font.ColorIndex = 19
        .Range("B10:D10").Font.Bold = True
      
        '为Result Summery设置边界
        .Range("B10:D10").Borders(1).LineStyle. = 1
        .Range("B10:D10").Borders(2).LineStyle. = 1
        .Range("B10:D10").Borders(3).LineStyle. = 1
        .Range("B10:D10").Borders(4).LineStyle. = 1
        .Range("B10:D10").HorizontalAlignment = 3
        .Range("C11:C1000").HorizontalAlignment = 3
     
        .Columns("B:D").Select
    '     .Columns("B:D").Autofit
        .Range("B11").Select  
       End With
       oExcel.ActiveWindow.FreezePanes = True
       oExcel.ActiveWorkbook.SaveAs ReportExcelFile
       oExcel.Quit
       
       Set ōbjSheet = Nothing
      End If
      
      TestcaseName = Environment("TCase")
    '   MsgBox TestcaseName
      Set ōbjWorkBook = oExcel.Workbooks.Open(ReportExcelFile)
      Set ōbjSheet = oExcel.Sheets("Test_Summary")
      
      With objSheet
       '设置行数和是否NewTc标识
       Environment("Row") = .Range("C7").Value + 11
       'NewTC = False
       
       If TestcaseName <> objSheet.Cells(Environment("Row")-1,2).value Then
        .Cells(Environment("Row"),2).value = TestcaseName
        .Cells(Environment("Row"), 3).Value = sStatus
        .Cells(Environment("Row"), 4).value = sDetails
        
        Select Case sStatus
         Case "Fail"
          .Range("C" & Environment("Row")).Font.ColorIndex = 3
         Case "Complete"
          .Range("C" & Environment("Row")).Font.ColorIndex = 50
        End Select
        
        'NewTC = True
        .Range("C7").Value = .Range("C7").Value + 1
        '设置边界
        .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(1).LineStyle. = 1
        .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(2).LineStyle. = 1
        .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(3).LineStyle. = 1
        .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(4).LineStyle. = 1
        '设置字体和颜色?
        .Range("B" & Environment("Row") & ":D" & Environment("Row")).Interior.ColorIndex = 19
        .Range("B" & Environment("Row")).Font.ColorIndex = 53
        .Range("D" & Environment("Row")).Font.ColorIndex = 41
        .Range("B" & Environment("Row") & ":D" & Environment("Row")).Font.Bold = True
       End If
       
       If (Not NewTC) And (sStatus = "Fail") Then
        .Cells(Environment("Row"), 3).Value = "Fail"
        .Range("C" & Environment("Row")).Font.ColorIndex = 3
       End If
       
       '更新结束时间
       .Range("C5").Value = Time
       
       .Columns("B:D").Select
    '    .Columns("B:D").Autofit
      End With
      oExcel.ActiveWindow.FreezePanes = True
      
      '保存结果
      objWorkBook.Save
      oExcel.Quit
      
      Set ōbjSheet = Nothing
      Set ōbjWorkBook = Nothing
      Set ōExcel = Nothing
      Set fso = Nothing
    End Function

    运行结果如图显示:


    本文为zte_boy原创,转载请注明出处:http://www.51testing.com/?161787

  • QC使用中问题点汇总

    2010-08-26 16:08:41

    QC 使用中问题点汇总,包括以下四个方面:

      1、不兼容IE7,IE8的问题(服务器端设置)

      2、无法在Win 7下正常下载页面(客户端设置)

      3、在QC中填写中文内容后无法正常提交到数据库(客户端设置)

      4、在QC中填写中文内容出现乱码的现象(待修改)

           5、Win 7 IE下QC无法访问

           6、QC中文版本改英文版本需修改

           7.QCMSExcelAddin这个插件安装完了后,打开EXCEL,找不到那export to QC的那个选项

           8.QC9.0默认支持IE 6,不支持IE 7、IE8和IE9.0的

           9.在excel中向QC导入数据时,用户密码不能输入

           10. 在excel中向QC导入数据时,选择要导入的部分(需求,用例...),系统提示:不允许用户做如下操作

           11.修改QC 8080端口

           12.使用QC远程启动QTP

           13.修改MSDE默认sa密码

           14.修改SQLserver密码

           15.卸载QC



    1.解决QC兼容(支持)IE 7,IE 8的问题

      QC9.0默认支持IE 6,不支持IE 7和IE 8的,一打开IE 7和IE 8的浏览器,输入qc网址,这里以我的网址为例:http://192.168.1.122:8080/qcbin,会出现提示:“Microsoft Internet Explorer : 4.0(compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)不受支持!”

      解决QC对IE7,IE8的支持现在普遍的做法是直接在服务端安装目录下修改start_a.htm这个文件,方法如下:

      1.在服务端QC的安装目录下jboss\server\default\deploy目录下(文件默认路径是: C:\Program Files\Mercury\QualityCenter\jboss\server\default\deploy)找到20qcbin.war这个war包。

      2.用winrar打开这个目录,可以看到start_a.htm这个文件。

      3.把start_a.htm这个文件copy出来,然后用Notepad打开,然后在该页面搜索msie,并且在“(ua.lastIndexOf('MSIE 6.0') != -1)”后修改添加|| (ua.lastIndexOf(’MSIE 7.0′) != -1)|| (ua.lastIndexOf(’MSIE 8.0′) != -1)后替换  war包中的start_a.htm文件。这里也可以直接在原文件修改。

      4.修改配置完成后,重新启动QC的服务器就可以了。原因是重启服务器的过程中会把20qcbin.war中的内容解压出来到临时目录下的。

      这里注意:

      改完上面的配置如果不想重启服务器,就需要把temp中的start_a.htm这个文件也增加ie7,ie8的支持。只改系统文件是需要重启QC服务的~

      参照这个方法服务器端就改好了,但是我在用IE 7和IE 8的客户端浏览器打开qc的时候却发现仍然无法正常显示,页面出现提示信息,这是因为IE 7和IE 8的安全性设置造成的,稍微改一下就好了:

      A.IE 7

      IE 7的安全级别比较高,需要修改一下IE的选项设置:

      一打开浏览器,输入qc的网址,提示:“您的浏览器中未安装JavaScript,或已将其禁用。”

      于是回到浏览器,点开工具菜单->INTERNET选项->安全->自定级别中,找到脚本scripting,把“Active scripting”和“Script. of Java applets”勾选"启用"并点击"确定"

      刷新页面,之前的提示终于没有了,但是又有IE的信息提示条弹出来:

      看来activeX插件还需要enable一下,在自定义选项中找到Active Controls and Plug-ins,把”Run ActiveX controls and plug-ins”勾选“enable”,再刷新页面,客户端就可以正常下载了:

      B. IE 8

      IE8比较简单,只要activeX插件enable一下就可以了:

      到这里,服务器端和客户端都修改好了,qc 9.0在IE 7和IE 8下都能正常使用了!:)

     先改用户账户控制----再重启----再去修改IE属性

    在IE8/9中(要以管理员的身份运行),设置IE属性工具->Internet选项->高级启用内存保存减少内存攻击选项取消选中。



    2.无法在Win 7下正常下载页面(客户端设置)

      同样的问题也会出现在SiteAdmin界面,一打开IE 7和IE 8的浏览器,输入qc网址,这里以我的网址为例:http://192.168.1.23:8080/sabin/SiteAdmin.htm,会出现同Start_a.htm一样的问题,此时也需要在服务器安装目录下修改SiteAdmin.htm这个文件。这里的解决办法和修改Start_a.htm文件时一样的,只是修改的路径会不一致,具体方法如下所示:

      1.在服务端QC的安装目录下jboss\server\default\deploy目录下(文件默认路径是: C:\Program Files\Mercury\QualityCenter\jboss\server\default\deploy)找到10sabin.war这个war包。

      2.用winrar打开这个目录,可以看到SiteAdmin.htm这个文件。

      3.把SiteAdmin.htm这个文件copy出来,然后用Notepad打开,然后在该页面搜索msie,并且在“(ua.lastIndexOf('MSIE 6.0') != -1)”后修改添加|| (ua.lastIndexOf(’MSIE 7.0′) != -1)|| (ua.lastIndexOf(’MSIE 8.0′) != -1)后替换  war包中的SiteAdmin.htm文件。这里也可以直接在原文件修改。

      4.修改配置完成后,重新启动QC的服务器就可以了。原因是重启服务器的过程中会把10sabin.war中的内容解压出来到临时目录下的。

      5.其他的设置如果在修改Start_a.htm中已经设置过了,此处就不需再重复设置了。


    3.解决QC在Win7下不能正常工作的问题

      在Windows7中,发现登录到QC Server的Addin页面,很多客户端组件不能正常下载,从而导致整个QC无法使用,解决办法如下:

      第一步:关闭UAC (User AccountControl)

      通过开始菜单搜索框,输入UAC,会出现“更改用户账户控制设置”(Change User Account Control菜单项。点击打开后,菜单弹出如下一个用户账户控制设置对话框。通过滚动条选择“从不通知”。然后重启机器,这步其实就是让当前用户获得完全管理员权限。

      第二步:关闭DEP (DataExtension Prevention)

      以管理员的身份打开命令行(通过开始菜单搜索框,输入CMD,右击CMD选项并选择以管理员身份运行,然后运行如下命令行,然后重启机器。

    bcdedit /set{current} nx AlwaysOff

      第三步:重新下载客户端组件

      开启HP QCEXPlore,或者直接利用IE,在地址栏输入QC Server的地址,确定后组件下载将会顺利进行:

      第四步:访问HP QC Server

      等下载工作完成,你将能够正常使用HP QCExplore,或者直接利用IE浏览器,正常访问QC Server了。

      第五步:恢复UAC设置

      为了确保安全,最好将UAC回复到原来的设置,并重启机器。但是DEP需要处于Disabled状态。

      

    4.解决QC中填写中文内容无法提交到数据库的问题

      QC安装后并且能成功打开网址后,进入系统在QC中填写中文内容,弹出报错信息,如下图所示:

      解决此类问题的方法如下图所示(该方法是针对Windows 7的客户端设置,其他的系统可以做类似的修改):

      第一步:打开Control Panel,进入如下界面:

      第二步:选择上图红色区域部分,即Change displaylanguage项,进入如下界面:

      第三步:选择上图红色区域部分,即Formats项,进入如下界面:

      第四步:在Formats界面,将红色区域的选项改为“Chinese (Simplified, PRC)”,然后点击“OK”按钮,自动关闭上图界面。

      第五步:重新打开输入QC的网址,在QC中填写中文内容并且提交,能成功提交中文内容。


     5.Win 7 IE下无法访问QC问题

          1.需求有其它的IE内核浏览器输入地址访问下载插件(注意后台前的都要下载)

            2.再用IE浏览器设置IE属性工具->Internet选项->高级启用内存保存减少内存攻击选项取消选中(用管理员运行)

            3.直接访问即可(用管理员运行)


     6、QC中文版本改英文版本需修改

             1.在服务端QC的安装目录下jboss\server\default\deploy目录下找到20qcbin.war这个war包,可以看到start_a.htm修改这个文件

                    添加|| (ua.lastIndexOf(’MSIE 7.0′)!= -1)|| (ua.lastIndexOf(’MSIE 8.0′) != -1)后替换  war包中的start_a.htm文件

              2.同样方法修改10sabin.war包中的SiteAdmin.htm文件

              3.清除此目录下文件:C:\Program Files (x86)\Common Files\Mercury Interactive  ,一样有三个文件夹      (笔者为System:Win7 64位)

                     1. License Manager        2.  Quality Center   3. TDAPIClient  

              重新启动即可


     7.QCMSExcelAddin这个插件安装完了后,打开EXCEL,找不到那export to QC的那个选项

               解决办法:打开Excel,在菜单栏“工具”下打开“加载宏”,浏览Office的目录"C:ProgramFilesMicrosoft OfficeOFFICE11XLSTART",选择         “TDExcelAddin.xla”,确定后就可以看到了


     8.QC9.0默认支持IE 6,不支持IE 7、IE8和IE9.0的

             一打开IE7IE 8的浏览器,输入qc网址,会出现提示:“MicrosoftInternet Explorer : 4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0;.NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR3.5.30729)不受支持!”

    但是现在碰到的问题是每次重启QC服务器,会发现之前的设置没有生效,这是因为我们修改的是临时文件夹下的文件配置导致的。所以要一次性解决QC对ie7和ie8的支持,我们需要修改系统文件。方法如下:

                 1.在服务端QC的安装目录下jboss\server\default\deploy目录下找到20qcbin.war这个war包。

                 2.用winrar打开这个目录,可以看到start_a.htm这个文件。

                 3.把start_a.htm这个文件copy出来修改添加|| (ua.lastIndexOf(’MSIE 7.0′)!= -1)|| (ua.lastIndexOf(’MSIE 8.0′) != -1)后替换  war包中的start_a.htm文件。

                           这 里也可以直接在原文件修改。

                4. 同样方法修改10sabin.war包中的SiteAdmin.htm文件


     9.在excel中向QC导入数据时,用户密码不能输入

    解决办法:将输入法切换到英文状态


    10. 在excel中向QC导入数据时,选择要导入的部分(需求,用例...),系统提示:不允许用户做如下操作

    解决办法:这里不能用站点管理员账号导入数据,换成admin用户就OK


    11.修改QC 8080端口

    QC安装时使用IIS+JBoss的方式,但在使用过程中你的服务器8080端口可能被占用,所以需要修改QC中JBoss的端口,具体修改步骤如下,并且该修改方法已经在本机测试通过,后台以及前台使用新端口号都能正常登录:

        1、修改\Quality Center\jboss\server\default\deploy\jbossweb-tomcat55.sar\Server.xml文件中的port="8080".

        2、修改\QualityCenter\jboss\server\default\deploy\http-invoker.sar\META-INF\jboss-service.xml 文件中以下三个URL端口号。

                    <attributename="InvokerURLSuffix">:8080/invoker/EJBInvokerServlet</attribute>

                    <attributename="InvokerURLSuffix">:8080/invoker/JMXInvokerServlet</attribute>

                    <attributename="InvokerURLSuffix">:8080/invoker/readonly/JMXInvokerServlet</attribute>


     12.使用QC远程启动QTP

    随着测试团队不断扩大,QTP测试脚本不断增多,我们需要用多台电脑来运行QTP脚本,如果大家要登录到每台机器上去跑脚本,就太不方便了,而且各个机器上的脚本版本还有是否统一的问题。

            如果我们能用一台电脑,指挥多台装了QTP的电脑运行脚本,岂不爽哉。

            Mercury公司开发的Quanlity Center(简称QC),就可以实现这个功能。

            要使用QC远程调用QTP,需要进行一系列的设置才能实现。在这篇文章里,我们把部署了QTP的电脑叫做“测试机”,把远程控制测试机的电脑叫做“控制台”,方便说明。

            在测试机装完QTP后,还要安装一个插件:TDPlugin。这个插件的安装程序在安装盘的TDPlugin目录下面,安装后重启。

            下面的设置非常重要,在QTP的安装指南中有详细的描述,我这里把几个重点说明一下。安装指南文件名是:QT_Install_Guide.pdf。具体内容在“ModifyingDCOM Permissions Manually to Enable Remote QuickTest Execution”这一章。

           先要设置windows登录用户的权限,指南文件的说明是假定测试机和控制台都已经加入域,其实不加入域也一样可行,只是设置有些不同。我们这里先讲没有加入域的情况。比如我们用ctrlUser这个用户登录控制台的windows,那么,就必须在测试机里也增加一个同名并且密码也相同的ctrlUser用户,并且把这个用户添加到系统管理员组。

           如果两台机器都加入域,就更好办了,比如控制台的登录域用户是ctrlDomainUser,那么只要在测试机的系统管理员组里,添加这个用户即可,也就是说,登录控制台的用户拥有测试机的管理员权限。

           下一步是设置测试机的防火墙,主要是开放135端口和添加AQTRmtAgent.exe代理程序到防火墙的例外列表中。

           然后是设置DCOM的权限,这里的设置步骤比较多,在安装指南文档里面说的比较清楚,主要是把一些用户和组添加到允许访问的列表中。

           设置完DCOM以后,我们打开QTP,在option中的Run分页,把“Allowother Mercury products to run tests and components”选中。

           好,现在打开一个Test,然后将QTP和QC连接,把这个Test保存到QC上面。在控制台上登录QC,新建一个测试集,把刚才那个Test加入这个测试集。然后在“主机管理器”里面,把测试机的ip添加进来。回到测试集窗口,把这个Test的“计划主机名”指定为测试机的IP,好,现在运行测试集就大功告成了。

           这时测试机的QTP会自动启动,run这个Test,run结束以后,测试结果会自动保存在QC服务器上,我们可以在任意电脑上查看测试结果。


     13.修改MSDE默认sa密码

        1. 在正在连接到的 MSDE 实例的宿主计算机中,打开命令提示符窗口。

       2. 键入下面的命令,然后按 Enter 键: osql -U sa

                    在 Password:提示符下,按 Enter 键(如果密码为空)或键入当前密码。这样可以使用 sa 帐户连接到 MSDE 的本地默认实例。

                   要使用 Windows 身份验证进行连接,请键入此命令:osql -E(如果不知道sa密码可以用这种方式)

       3. 在各个单独的行内键入下列命令,然后按 Enter 键:

               sp_password @old = null, @new = 'password',@loginame ='sa'

               go

              注意:确保将“password”替换为你的密码。您将收到以下提示信息,表示已成功更改密码:

                          Password changed.

             注意:修改了MSDE密码之后,要到QC的站点管理——DB Server中把DB Admin Password修改成与MSDE新密码一致


     14.修改SQLserver密码

             先把SQL Server卸载,再把安装时产生的“Microsoft SQL Server”文件夹删掉,在运行注册表,把HKEY_CURRENT_USER\Software\Microsoft\MicrosoftSQL Server,和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQL Server全部删掉,(注意要把Microsoft SQL Server文件夹整个删掉)


     15.卸载QC

    如果你不能正常使用添加删除程序卸载QC,请按照如下的步骤进行:

        1、删除c:\program files\hp\quality center目录。

        2、再次去添加删除程序中卸载quality center,将删除列表中的图标,但是并没有完全删除,还需要下一步:

        3、删除文件 c:\windows\vpd.perperties。

        4、ALL Rights!

  • 如何测试报表

    2010-08-16 16:23:56

    报表测试主要分为:报表界面测试、报表安全性、报表准确性、报表展示速度(也就是性能)。

      数据准确性测试

      报表测试的系统分为两类,一类是业务系统中,带有统计分析功能模块,该模块中包含分析报表,这个系统的主体是业务系统,报表是为办理业务的而提供帮助的。比如说,应年检统计报表,某月应交罚款车辆统计报表,这样的报表数据准确与否,可通过增加、删减、修改相关业务或相关业务的参数,查看统计报表数据变化,检查数据准确性。

      另一类是系统只有统计功能,就是我说的数据仓库展现这类,它与业务系统分离,并且经过多层处理,比如数据仓库的数据,经过抽取,清洗,展现前会经过数据挖掘,数据再处理,有些字段在原始数据表中根本就没有。这样的数据准确性测试比较复杂,当然检查出数据错误,修改定位也是很不容易的。

      对系统中的报表数据准确性测试方法较为灵活:

      ①系统中报表重叠的进行比对

      ②对子报表汇总与父报表比对,就是对月报表汇总与年报表比对,日报表汇总与月报表比对,这只是一个方面,可以从维度关系考虑,地域,行政级别、时间,个人等方面下手,进行汇总比对

      ③这个方法如果延伸点呢,可以将报表间的业务逻辑关系作为比对依据。

      报表差错测试

      原始表使用错误:因为表比较多,又加上没有统一的数据关系对应表,很容易表使用错误,当然这应该是单元测试检查出来的错误。

      数据处理逻辑错误:这一点容易因为测试人员和开发人员对需求理解有偏差造成争执,所以在需求评审时,对数据处理规则用表达式或伪代码表示清楚。还有就是程序员失误,逻辑编写有偏差,边界值、特殊情况处理不当。

      数据权限:不同用户对数据有着不同的查看权限。这关系到数据的安全性。

      数据误差:数据的保留位数,数据是否是处理计算是否是最后一次计算使用了位数保留和四舍五入。

      由于字典表,数据错误,而造成的数据错误,如,根据性别统计,购买量,表中的男女颠倒,或者没有考虑性别缺失项,用了if else,这样就是把表中缺失该项内容的算成了else条件里。或者逻辑中应该考虑用户状态,数据状态类似的字段,容易被忽略,测试应该考虑到。

      最后一项,当数据量相当大的时候,统计应该考虑,切割速度,也就是数据的完整性,由于数据切割的滞后,带来的数据不完整,而造成统计结果不完整。如统计昨天的销售情况,而昨天的数据并没有完全从业务系统数据到数据池,再者月底数据,由于最后一天的数据切割不完整而造成的正月统计数量不准确。

      报表的界面和输入输出测试

      界面分为输入界面和输出界面;统一的界面要求:美观、统一、易操作。输入界面要求是:

      ①输入项字段长度不允许超过字段长度;

      ②输入不符合字段要求的,不允许查询。如money类型,在输入汉字,字母、特殊字符等不允许查询,并有友好的操作提示。

      ③用户权限范围外的输入,不允许查询。如用户输入不是其权限范围内的客户号,不允许查询,并有友好的操作提示。

      ④对于选项,应不出现可选择的用户权限以外的选项。

      ⑤对于汉字模糊查询,考虑不常见字,如“㭎”即汉字因译码问题,造成的汉字存储出现乱码问题。

      输出界面要求:

      ①因为是报表所以应该有打印、打印预览、报表导出等功能。不能因为报表导出丢失数据,不能因为打印缺少了报表表格框

      ②报表排列方式可调,用户可按任意列升序或降序排列,或者,按某一关键列的一定规则排序

      ③报表标题明确,不能含糊误导用户

      ④报表内可关联查询的项,应能特殊显示,如鼠标有箭头变为手掌,子报表格式与父报表格式统一,数据统一。

     

  • QTP中的数据库检查点

    2010-08-01 14:22:42

    要创建数据库检查点或输出值,请执行下列操作:

    1. 选择“插入”>“检查点”>“数据库检查点”或“插入”>“输出值”>“数据库输出值”。将打开“数据库查询向导”。


    2. 选择数据库选择首选项,然后单击“下一步”。可从下列选项中进行选择:
      • 使用 Microsoft Query 创建查询-打开 Microsoft Query,使您可以新建查询。完成定义查询的工作之后,返回到 QuickTest。只有在您的计算机上安装 Microsoft Query 之后,该选项才可用。
      • 手动指定 SQL 语句-在向导中打开“指定 SQL 语句”屏幕,使您可以指定连接字符串和 SQL 语句。有关详细信息,请参阅步骤 3
      • 最大行数-如果要限制行数,请选中该复选框,并输入要检查或输出的最大数据库行数。最多可以指定 32,000 行。
      • 显示如何使用 Microsoft Query-单击“下一步”时,将在打开 Microsoft Query 之前显示一个说明屏幕。(只有在选中“使用 Microsoft Query 创建查询”时才启用)。
    3. 如果在上一步骤中选择了“使用 Microsoft Query 创建查询”,将打开 Microsoft Query。选择数据源并定义查询。
    4. 如果在上一步骤中选择了“指定 SQL 语句”,将打开“指定 SQL 语句”屏幕。指定连接字符串和 SQL 语句,然后单击“完成”。

    5. 将打开“检查点属性”或“输出值属性”对话框。
    6. 单击“确定”关闭该对话框。在关键字视图和专家视图中,将为所选对象添加一条检查点或输出值语句。

     

         

     

    了解“表/数据库检查点属性”对话框

    通过“表/数据库检查点属性”对话框,可以指定要检查表或数据库的哪些单元格内容以及要使用哪些验证方法和类型。还可以对检查中所含单元格的预期数据进行编辑或参数化。

    注意: ActiveX 表的“表检查点属性”对话框看上去与下面显示的对话框稍有不同。对于 ActiveX 表,除了检查表内容(使用“表内容”选项卡)以外,还可以选择是否要检查表对象的属性(使用“属性”选项卡)。根据要检查信息的类型,选中位于“表检查点属性”对话框相关选项卡顶部的“选择表内容”复选框和/或“选择属性”复选框。

    有关“表内容”选项卡中的选项的信息,请参阅下列部分。


    “表/数据库检查点属性”对话框的顶部将显示为检查点捕获的数据。使用该区域可指定要检查的单元格。

    在预期数据下,“表/数据库检查点”对话框包含下列三个选项卡:

    • 预期数据-使您可以将每个已检查的单元格设置为常量值或参数化值。例如,可以指示 QuickTest 使用数据表中的值作为特定单元格的预期值。
    • 设置-使您可以设置预期值与实际值之间成功匹配的条件。例如,可以指示 QuickTest 将值视为数字(因此 45 和 45.00 将被视为同一个值),或者,可以指示 QuickTest 在比较值时忽略空格。
    • 单元格标识-使您可以指示 QuickTest 如何查找要检查的单元格。例如,假设您要检查显示在“表/数据库检查点属性”对话框中第一行和第二列中的数据。但是,您知道每次运行测试或组件时,这些行的顺序可能会有所不同,具体取决于在上一步中执行的排序。因此,您可能希望 QuickTest 根据列名和在关键字列中包含已知值的行来标识单元格,而不是根据行号和列号来查找数据。
    • 提示: 值匹配设置和单元格识别条件将应用于检查点中所有选定的单元格。如果要对表或数据库中的不同单元格使用不同的值匹配或单元格标识条件,请分别创建检查点,并为每个检查点指定相关的单元格。

    “表/数据库检查点属性”对话框的底部包含下列选项:

    • 检查点超时-指定 QuickTest 试图成功执行检查点的时间间隔(以秒为单位)。QuickTest 将继续执行检查点,直到顺利通过或发生超时。如果在发生超时之前检查点尚未顺利通过,则检查点将失败。
    • 例如,假设将数据加载到表中需要花费一些时间。在这种情况下,增加检查点超时值可确保有足够的时间来加载数据,从而使检查点在到达超时结尾之前可以顺利通过。

      可以在“测试结果”窗口中查看有关检查点超时的信息,包括 QuickTest 用于执行检查点的时间间隔。

      注意:只有在创建表检查点时,“检查点超时”选项才可用。创建数据库检查点时,该选项不可用。

    • 插入语句-指定在测试或组件中执行检查点的时间。如果要在执行突出显示的步骤之前检查表或数据库内容,请选择“当前步骤之前”。如果要在执行突出显示的步骤之后检查表或数据库内容,请选择“当前步骤之后”。
    • 注意:在录制期间添加检查点时或在修改现有检查点时,“插入语句”选项不可用。向现有测试或组件添加检查点时,该选项可用。

  • QTP中虚拟对象设置

    2010-07-08 14:25:26

     当我们在录制脚本中,有时会遇到某个对象回放时不能识别.那么就可以考虑是不是可以做个虚拟对象来代替它.您可以将这些对象定义为虚拟对象,并将它们映射到标准类,例如按钮或复选框。QuickTest 在运行会话过程中模拟虚拟对象上的用户操作。在测试结果中,虚拟对象显示时类似标准类对象。

       下面我们还是通过一个例子来具体操作一下.这次选用LoadRuner自带的b/s架构的web例子,来录制脚本.(注:运行这个例子,同时把web server先给开起来.).这次只录制一个点击sign up(注册)的步骤.
    录出脚本如下:

    Browser("Mercury Tours").Page("Mercury Tours").Frame("navbar").Image("signup").Click 45,12


    QTP把这个button对象识别成了Image(图片)对象,导致最后回放的时候,QTP不能完成Click操作,弹出报错信息.对于这个对象,我马上想到了做个虚拟的button对象来代替它.

    下面是整个虚拟对象的制作过程:

    1.选择“工具”>“虚拟对象”>“新建虚拟对象”。或者,也可以在虚拟对象管理器中,单击“新建”。将打开虚拟对象向导。单击“下一步”。

    2.选择要将您的虚拟对象映射到的标准类(这里有六种对象类供你选择,分别是object,button,table,list,check box,radio button).这里我们要映射一个button对象,所以选择button.单击"下一步"

    3.单击“标记对象”。选择你要做虚拟对象的区域,拖动鼠标.尽量能覆盖整个你想替代的对象.

    4.在“标识对象使用”框中,选择您希望 QTP 标识和映射虚拟对象的方式。

    如果您想要 QuickTest 标识所有出现的虚拟对象,请选择“Parent only”。

    如果想要 QuickTest 仅标识一次出现的虚拟对象,请选择“Entire parent hierarchy"。

    这里我们选择默认的“Parent only”。

    5.指定虚拟对象的名称和集合。从集合列表中选择,或通过在“集合名”框中输入新名称来新建集合

    点击完成,整个虚拟对象就做好了.

    虚拟对象做好后,保存在虚拟对象管理器中.我们可以通过虚拟对象管理器来删除或禁用虚拟对象定义.

    选择“工具”>“虚拟对象”>“虚拟对象管理器”。将打开虚拟对象管理器。

    注意:如果希望 QuickTest 在录制时识别虚拟对象,请确保清除“选项”对话框的“常规”选项卡中的“录制时禁止识别虚拟对象”复选框。

    接下来我们再来录制一遍对sign up的操作,录制代码如下:

    Browser("Mercury Tours").Page("Mercury Tours").Frame("navbar").VirtualButton("button").Click

    在录制过程中值得注意的是,一定要点击到我们做好虚拟对象的范围内,这样QTP才能识别到这个虚拟对象.这里我们的虚拟对象识别成功.再次回放,QTP顺利的执行了脚本.

    还有两点要注意的是:

    1.虚拟对象管理器中显示的虚拟对象集合存储在您的计算机中,而不是随包含虚拟对象步骤的测试或组件存储。这意味着如果您在测试或组件步骤中使用虚拟对象,则仅当在包含正确的虚拟对象定义的计算机中运行时,该对象在运行会话过程中才能被识别。要将您的虚拟对象集合定义复制到另一个计算机,请将您的 <QuickTest 安装文件夹>\dat\VoTemplate 文件夹的内容(或该文件夹中的单个.vot集合文件)复制到目标计算机上的相同文件夹中。

    2.仅当录制和运行测试或组件时,才能使用虚拟对象。您不能在虚拟对象上插入任何类型的检查点,也不能使用“对象探测器”来查看其属性。

    接下来你可以继续完成整个sign up过程,还有多个类似的对象需要做虚拟对象.你也可以试一下?

     


  • QTP中的描述性编程

    2010-07-07 14:24:33

    通过一个具体的例子,再来看看描述性编程的形式.打开QTP录制Fight的登录框.代码如下:


    Dialog("Login").WinEdit("Agent Name:").Set "mercury"
    Dialog("Login").WinEdit("Password:").SetSecure "45a1e193f9dac3bf91f3ba7c1dd250a48a33eabf"
    Dialog("Login").WinButton("OK").Click
    Window("Flight Reservation").Close

    对应的对象库,

    然后我们把对象库中,这些对象的属性及属性值从对象库搬到脚本中,代码修改成为:


    Dialog("text:=Login").WinEdit("attached text:=Agent Name:").Set "mercury"
    Dialog("text:=Login").WinEdit("attached text:=Password:").SetSecure "4414d23c42046da1ea3a895f1518b9c476b2b225"
    Dialog("text:=Login").WinButton("text:=OK").Click
    Window("regexpwndtitle:=Flight Reservation").close

    把对象库中对象删除掉,

    再来执行脚本,QTP执行成功.这就是描述性编程.当然值得注意的是,如果父对象用描述性编程表示了,那么后面的对象都要用描述性编程表示了.如:

    Dialog("text:=Login").WinEdit("attached text:=Agent Name:").Set "mercury"

    这边Dialog("text:=Login")用描述性编程表示了,那么WinEdit("attached text:=Agent Name:")就必须要描述性编程表示了.因为在对象库中,子对象是依靠父对象存在的.所以如果Dialog("text:=Login")这个父对象从对象库中删除了,那么后面的子对象也同时被删除了.反过来子对象删除就不影响父对象.所以子对象可以单独用描述性编程表示,而不需牵连其他对象.

  • QTP中调用共享文件

    2010-07-01 14:21:25

      在我们开发脚本的时候,发现有些脚本总是重复的出现在各个脚本中。那么我们是不是可以把这些脚本写成一个共享的function,放到一个共享的文件中?然后再给各个脚本调用呢?答案当然是肯定中。其实我在《QTP的一些小知识》中也提到了一个方法,就是利用ExecuteFile函数来调用.vbs文件。如:一个名为test.vbs的文件,我们只要在脚本中写上这么一句代码ExecuteFile("F:\test.vbs") ,就可以来直接执行这个.vbs文件了。

         现在我再来介绍另一种方法,这种方法也是QTP本身所提供的。就是设置菜单选项“setting”中的"resource"选项来做到调用共享文件的效果。在"resource"选项中,有三种文件格式是可以被调用的,分别是*.sql;*.vbs;*.txt三种后缀文件。这里我用一个*.txt文件为例。

        新建一个名为test.txt的文本文件,其保存内容如下:(注:保存的内容也必须合法)

    Function writeorderno(orderno)
    Dim fso, myfile
    Set fso=CreateObject("scrīpting.FileSystemObject")
    Set myfile=fso.openTextFile("C:\result1.txt",8,false)
    myfile.writeline orderno
    myfile.close
    End Function

    一个名为writeorderno的Function,其作用是把传进来的值写到C盘名为result1.txt的结果文件中去。(注:结果文件也是事先要准备好的)。共享文件准备完毕,那么就开始设置"resource"选项。打开“setting”窗口,找到"resource"选项。点击“+”的button。选择前面我们建好的文件。如下:

    确定关闭窗口。我们就来试验一下,是不是这个共享文件里的Function能够被调用了。在QTP专家视图里写上这么几句代码:

    Dim order

    order=1

    writeorderno order

    接下去就按run执行试验,结果测试通过。虽然在脚本中根本没对writeorderno函数做说明,但是当QTP运行到这句代码的时候,在本脚本里没说明的情况下,自己会到"resource"选项里去找。结果QTP能正确识别这个writeorderno 函数。打开c盘里的 result1.txt的结果文件,发现传进函数的值1,被正确的写了进去。预示着整个调用共享文件的成功。

  • 偶然性不可重现BUG怎么处理

    2010-06-29 14:59:28

    偶然性不可重现BUG怎么处理


      

    一、一定要提交!!

    1.  记得有这么个缺陷,以后再遇到的时候可能就会了解发生的原因。
    2.  尽力去查找出错的原因,比如有什么特别的操作,或者一些操作环境等。
    3.  程序员对程序比测试人员熟悉的多,也许你提交了,即使无法重新,程序员也会了解问题所在。
    4.  无法重现的问题再次出现后,可以直接叫程序员来看看问题。
    5.  对于测试人员来说,没有操作错误这条.既然遇到,就是问题。即使真的操作错了,也要推到程序员那里,既然测试人员犯错误,用户也可能会犯同样的错误。错误发生的时候,Tester最大。


    二、程序不是测试人员写的,出问题也不是测试人员的原因。

    至于无法重现,可能的原因很多,因为测试人员看到的只是程序的外部,无法深入程序内部,所以把责任推给测试人员是不对的。

    测试人员的任务只是尽力重现问题,而不是必须重现!!


    三、下次再遇到的时候,拉他们来看就可以了。

    因为问题如果无论如何无法重现,程序员确实也没有什么好的解决方法。

    而且此类问题即使程序员说修改了,测试员也没有好的方法去验证是不是。 : )


    四、你可以告诉程序员,测试过程是没有错误的。

    测试人员只是检查程序中可能存在的问题,虽然测试人员使用一定的手段方法努力去覆盖所有的情况,但这些都是理论的推测。在实际中,可能因为人员、环境、配置等种种原因出现各种各样的问题,在测试人员这里发现问题是公司内部的事情,程序发到外面可就是公司的形象问题了。

    需要让程序员理解,测试人员是帮助他们的,不是害他们的。

    客户那里发现问题比测试员发现问题结果要严重的多。


    五、测试部门是独立与开发部门的呀,真的打交道,也是经理对经理。

    在我们这里,工作上面的事情,和程序员相互只能商议解决,并没有谁高谁低。

    问题无法重现,也要提出,程序员那里可以回复无法再现。问题放在那里,等到再次出现的时候,就立刻叫程序员过来查看。

    实在没有再次出现,最后可以写到报告中,说出现了什么现象,但无法再现(比较严重的问题才如此处理,小问题经理之间商量商量可能就算了)。

    至于测试人员必须重现bug,你杀了我好了,我每次测试项目都有无法重现的问题,很多我能找到大概的原因,有些根本无法重现(仅仅出现一次)。

    这种事情是无法避免的,并不能说测试人员无法重现问题,就是工作不到位(哼,程序有bug,是否可以说程序员工作不到位的呀)。


    六、测试部门要独立,最好不受开发的制约。其实真正要重视,就应该有否决的权利。

    我们公司就是项目承包,要拿最后的项目尾款,就要测试部签字通过,这样就避免了很多的问题。

    其实只要自己尽到心就可以了,管别人怎么说呢。


    七、我们使用的状态有:

    程序员处理的状态(由测试员提交的Action):等待处理的,再次出现的。

    测试员处理的状态(由程序员提交的Action):已经修改的,暂不修改的,系统限制的,使用错误的,无法再现的。测试员可以修改记录。

    经理处理的状态(由测试员提交Action):管理员处理的。经理还可以删除记录。

    按照比较标准的说法,其实对于缺陷还应该有“等待确认的”、“已经确认的”和“重复提交的”的状态,我们为了省事,统一使用了“等待处理的”。

    最后结项的时候,缺陷的状态对我们来说有两种,“已经关闭的”(由测试员或经理确认)和“暂不修改的”(比如下一个版本处理等)。

    呵呵,状态多,有些烦琐,特别是程序员很多的时候都不清楚应该回复什么状态,但我个人觉得对测试人员来说,这些状态比较清晰明了,容易处理。

    八、一个叫doer_ljy(可战)的网友回复了一些内容,我个人认为不很妥当,就回复了一些内容,绿颜色的是doer_ljy(可战)的内容:


    关于“无法重现”我看是有这么个问题存在。

    首先如果你在测试之前有严格的测试计划,就很难出现“无法重现”这种现象。“无法重现”的意思是不知道怎么操作才能再次看见这个BUG。那么这个BUG多半是“计划外”的。

    不清楚你是否是测试人员。“计划外”这个词,对测试员来说应该不存在。测试用例的粒度一直是个在讨论中的问题,测试人员很难有时间和精力写出包含内容、数据、步骤等等全部操作一切的测试用例(说白了,只要一个长手识字的人,按照测试单做,就能发现所有的问题,呵呵,有软件蓝领的感觉了)。即使真的有,意义也不大,测试很多的时候,是发散性的思维,带点创造性,想事先考虑完全,很难。所以更多时候,是在测试过程中逐步对用例等进行完善,所以说“计划外”最好不要提。

    说说我现在测试的一个项目,有一个业务,首先查询出人员,有个“全选”按钮,“全选”后,再用鼠标一个一个取消选择,这个时候进行业务办理的时候,就会提示“没有选择人员”,至今为止一切都正常,但是这个时候再次点选人员进行业务处理,仍然会提示“没有选择人员”,这就是一个缺陷了。这个问题我想一般人都不会在测试用例中考虑到吧,因为发生的条件很苛刻:不用“全选”按钮的时候不会发生;全选后点击“取消全选”按钮再办理业务不会发生;全选全消后,先点击人员再办理业务也不会发生。

    其次,成熟的测试人员及时无法再现BUG,也能准确的描述出BUG发生之前几个步骤的操作方法,测试用例情况。这些对开发人员分析BUG原因很重要。所谓的BUG发现环境。

    呵呵,看来我不是成熟的测试人员。手工测试,比较熟练的时候,和打字可以说差不多,应该进行到哪里,心中是有数的,但让我完全从头到尾的重复,不容易呀。写测试缺陷报告单的时候,也只是说明操作步骤和发生的现象。其实无法重现的问题,既然说“无法重现”,也就是测试人员已经对这个现象进行了多次的验证,一般从程序外部来说,测试人员的操作比程序员要熟练的。

    最后,我不同意测试人员不假思索把发现的“问题”直接推给编码人员的做法。毕竟是大家合作,目标是一致的。测试人员总是处在BUG发生的第一现场,应该帮助分析出现问题的原因。确认是不是自己的此时Miss.


    测试人员提交任何一个问题,都会经过反复的验证,如果容易重现,早就提出来了。绝对不是在推脱责任,还是那句话,对程序的结构,做的人当然比不做的人要清楚。另外,除非程序员询问,否则我不会给程序员提出修改分析和建议!!测试人员的任务是发现问题,解决问题是程序员的事情。这么做可能会影响程序员思考问题的思路;而且测试人员做的多了,程序员不但不感激,可能反而会反感(好像程序员对测试人员有好印象的不多)。

    再说两个我这两天遇到的问题。第一个就是我们的程序有一个锁定数据的功能。锁定后,在其它的业务,此数据将不能再使用。我当时发现这个功能无效,而且经过了几次的验证都不行,我当然就提出了。但是程序员那里说此功能好使,我再验证的时候,就没有问题了,这个问题当时可以重现(但是我不可能遇到问题就拉程序员来看吧),后来却没有了,只能放在那里,最后关闭掉。第二个就是在一个界面中,录入有顺序要求,必须先选择一个ListBox(必填)再进行Edit的录入,但一次操作我没有选择 ListBox就录入的Edit,也正常保存了。后来无论我怎么操作此问题都没有出现(不够成熟呀),我就放弃了,也没有提交记录(为了避免麻烦)。

    测试人员的时间是有限的,进度给的都很少,一般连用例都没有时间写,还要去花很多时间验证“无法重现”的问题?反正10分钟如果试验不出来,我就会放弃。严重的就提交,不影响的就当不知道。

    下面是其它一些人的观点:

    doublefalse(散诸怀抱):如果不能重现的bug确实比较麻烦,但最好在测试过程中注意干净环境、正确的操作、相同的数据源,只要真的有问题,一定能否复现的。呵呵,多试试!!!我们以前一直有客户反映入库的数据经常有无关数据,但在家里测试没有问题,后来才发现是汉字编码错位,这样同样的字,错位后就变成另外的东西了。

    liuxiaoyuzhou(蟀哥):遇到过同样的问题!主要是记住BUG出现的环境!测试的时候这是关键!在我们这里不能从现的BUG,是测试人员的工作不到位!我们这里程序员比测试人员说话有力度!郁闷呀!

    ericzhangali(另一个空间):首先一定要提交bug;其次不要企图RD一定去解这个bug;某些时候还得关闭这个bug。如果RD认为是测试错误,(不明白什么叫测试错误,是不是说他从测时要告诉你千万不要怎么怎么做,否则后果自负啊,)那也没什么办法,如果沟通解决不了,爱咋认为就咋认为吧。

    darkcat_c(错了重来):没有bug是不可以重现的,bug本事是建立在标准的规程上所出现的异常,如果你按test case步骤做的话不太可能出现此类bug。作为测试人员一定要具备良好的记忆能力,一旦出现一些不知如何产生的bug,至少你要知道刚才你大致进行了那些操作。良好的分析能力,尽管你只是测试,但你应该全面的了解程序的架构,和一些重要的内部细节,不然你这个测试就是不合格的。定位bug是开发的事情,而重现一个bug是测试的本职工作,不要把所有的事情推给开发,不然你的确比开发要低一等。(编者按:这种话,不愿意去辩驳,标准开发人员的看法,也许应该让他们也来做做测试)

    liyan_1014(雁子):我觉得应该是这么处理:

    1、一定提交bug,必须由负责bug的tester详细描述测试操作步骤,bug发生的症状,并将bug发生的具体环境也描述清楚;这样对于再次重现也有一定的参考性。

    2、测试和开发之间是需要良好沟通的,如果得到的回复是操作错误,那么请开发人员解释,为什么会允许存在操作错误,一般来说,对于错误控制,开发那边应该能很好的把握。

    3、沟通方面是需要方式的,开发人员对于自己完成的程序有一种满足感,一般来说是不允许别人来破坏他的这种感觉,如果沟通的时候尽可能是一种建议的形式,让开发人员自己指出自己的程序缺陷,这样对于开发人员来说是可以接受
  • QTP中的测试对象和运行时对象

    2010-06-28 14:18:15

     相信大家在QTP中肯定都看到过这些方法,GetROPropertyGetTOPropertySetTOProperty.

    GetROProperty:可以取到运行时对象属性的值.

    GetTOProperty:可以取到测试对象属性的值.

    SetTOProperty:可以修改测试对象的属性值

        那这里的运行时对象和测试对象又是什么呢?他们之间又存在着什么样的关系呢?

    测试对象(TO):是QTP在脚本中创建的用于描述应用程序实际对象的对象.QTP存储这些信息用来在运行时识别和检查对象.简单的说,我们就可以把对象库中所保存的对象就看做为测试对象.

    运行时对象(RO):是应用程序中的实际对象,对象的方法将在运行时被执行.

    两者之间的关系:测试对象是为了识别运行时对象而存在的.在《QTP的录制回放过程》中,我也阐述了QTP的整个工作原理。所以这里我也就简单的再提一下。QTP在录制的时候会把所操作的对象的一组属性及属性值,保存到对象库中,就是所谓的测试对象。在回放的时候,QTP 就会根据对象库里的该对象的属性及属性值去匹配实际在应用程序中的运行时对象。一但完全匹配正确就执行相应的操作。否则就会报“找不到该对象”的错。

  • QTP参数化实例

    2010-06-24 14:13:54

      在自动化测试当中,有时为了模拟真实效果,或者为了达到某种操作效果,那么势必要把脚本参数化.那么一般的针对输入值的参数化或者select选择值的参数化,操作也比较容易,这里也不多说了,直接把固定值换成变量就可以.鉴于上个星期有两个朋友都问到了针对某个对象的参数化,那么就来探讨一下针对对象的参数化.

    例:
    Browser("软件测试专业网站:51Testing软件测试网").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"
    Browser("软件测试专业网站:51Testing软件测试网").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click
    Browser("软件测试专业网站:51Testing软件测试网").Page("百度搜索_111").Link("菜111 的QQ家园").Click

        在这个例子中,我们的目的是把这个link对象给参数化掉.这里直接把对象名参数化掉,肯定是不行的.因为我们知道QTP识别对象依靠是这个对象在对象库中的属性和属性值.而如果我们这里参数化成一个新的对象名,那么这个对象名是不存在于对象库中的,那么势必会造成在回放过程中不通过,报对象库中没有这个对象的错误.所以我第一个想到的是先让这个link对象脱离对象库,让它不用通过对象库就能识别这个link对象,那么接下来只要直接换成变量就成功了.相信大家都看到过帮助里对描述性编程的说明,通过把脚本改写成描述性编程的形式,可以让QTP在执行脚本时不要再去依赖对象库.直接把一些付有特征的属性和属性值放到脚本中,就能执行相应的操作.所以我们可以先把上面脚本改写成:

    Browser("软件测试专业网站:51Testing软件测试网").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"
    Browser("软件测试专业网站:51Testing软件测试网").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click
    Browser("软件测试专业网站:51Testing软件测试网").Page("百度搜索_111").Link("text:=菜111 的QQ家园").Click

        这样表示后,再把这个对象在对象库中的记录给删掉.重新运行脚本后,脚本依旧能正确执行.那么接下来的操作就方便了,直接把相应的固值换成一个变量即可.我们来这么操作:

    Dim i
    i="菜111 的QQ家园"

    Browser("软件测试专业网站:51Testing软件测试网").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"
    Browser("软件测试专业网站:51Testing软件测试网").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click
    Browser("软件测试专业网站:51Testing软件测试网").Page("百度搜索_111").Link("text:="&i).Click

        到这里整个操作过程就完成了.其实这只是一个方法,相信大家肯定还有其他方法,希望大家能留言说说自己的看法.当然如果这个对象的对象名有一定规律的话,我们还可以考虑运用正则表达式的方法,也可以达到预期的效果.


361/212>
Open Toolbar