白天图生存,晚上求发展!

发布新日志

  • 软件测试工程师的角色定位

    2008-04-02 10:23:07Top 1 Digest 1

    戏剧舞台上的生、旦、丑是不同的角色,其表演方式具有明显的特征,这是由于角色决定的。同样,软件测试工程师的角色,在软件项目开发中也存在如何定位和表现自身的行为和责任的问题。

        此处讨论测试工程师的角色并非毫无意义。须知,角色不明,责任不清,行为就失去了参照目标,结果就可能很不理想了。轻则降低了
    工作质量和效率,重则被视为工作能力低下,可能要退出软将项目组的舞台了。

    软件测试工程师承担的任务

        角色决定工作内容和承担的任务。测试工程师的角色应该承担什么任务呢?这没有统一的答案。因为,这与软件公司的规模,软件项目管理制度,公司领导和项目经理的管理风格,以及具体软件项目自身的特点有很大关系。而且,测试工程师也有普通和高级之分。

    笼统的答案列举如下:

    • 设置软件测试环境,安装必要的软件工具。
    • 运行软件,发现和报告软件缺陷或错误。尤其需要快速定位软件中的严重的错误。
    • 对软件整体质量提出评估
    • 确认软件达到某种具体标准
    • 以最低的成本,最短的时间,完成高质量的测试任务
    • ......


        在这其中,最重要的是要明确,程序员的责任和目标。在执行任何具体测试任务前,都要在项目组内对于责任和目标达成共识,以免带来后续工作的相互推诿。


    提高测试质量的要诀


        另外一个值得注意的方面就是工作效率和质量,或许高级测试工程师与普通测试工程师的主要区别在于高级测试工程师可以更快地发现更多软件中的严重错误。对此,有什么可以借鉴的诀窍吗?请尝试以下方法,保证不会是您失望。

    • 首先测试程序的核心功能,然后测试辅助功能。
    • 首先测试功能,然后测试性能。
    • 首先测试常见情况,然后测试异常情况。
    • 首先测试经过变更的部分,然后测试没有变更的部分。
    • 首先测试影响大的问题,然后测试影响小的问题。
    • 首先测试必须测试的部分,然后测试可选或没有要求测试的部分

    软件测试工程师是项目团队中的服务员

        需要强调的一点是,无论你是多么高级的测试工程师,都要明白无论测试需要的工具多么复杂,测试步骤多么冗长,测试工程师在软件项目开发中始终都是扮演服务员的角色,这是由测试工作的特点决定的。任何服务都有被服务对象—客户,软件测试工程师的服务对象有哪些呢?

    • 最重要的客户是软件的用户。测试工程师需要站在客户的使用和需求角度测试软件,报告问题。
    • 项目经理也是客户。测试工程师需要报告测试工作进度和发现的问题,尤其是严重的问题。

    • 程序员是最经常打交道的客户。为了便于程序员重复报告的错误,尽量提供良好的软件问题报告,以便程序员可以更快的修复软件错误。

    技术文档工程师、市场开发人员和技术支持工程师也都是测试工程师的服务对象。
    软件测试工程师避免犯的几个错误

        前文已经指出测试工程师应该明确角色,明确任务和责任。知道哪些是自己份内的事,哪些是不属于自己的事。一定要尽最大努力完成份内的事,不要做不属于自己的事情,以免弄巧成拙。

    为了更好的扮演软件测试工程师的角色,尽量避免犯下面的错误:

    • 承诺完成测试的软件没有质量问题
    软件测试只是保证质量的一种方法,软件测试工程师的工作不会直接提高软件质量,因为绝大多数软件错误都需要程序员修复。软件测试只能证明软件存在错误,不能保证软件没有错误,不可能找出全部软件错误。个人的能力和对质量的影响范围很小,软件质量的提高要靠软件项目团队全体成员的共同努力。  

    • 承担软件的发布权利
    不要因为软件中存在还没有修复的错误,而试图提出更改软件发布的计划。也不要认为已经完成了测试计划,自己决定可以发布软件。因为,改变软件发布计划可能要失去进入市场的良机和很多客户,对此造成的经济和公司市场的损失将不是测试工程师能够承担的。另外,软件发布后,如果用户发现了新的软件错误,公司领导或项目经理可能将过错加在软件测试人员的头上,因为他们同意发布软件。通常软件发布的权利由产品经理、项目经理、测试经理、市场经理共同集体讨论决定。  

    • 扮演过程改进成员的角色
    软件测试工程师必须报告错误,有时也要分析错误的类型、特征和产生错误的原因。但是,不要主动提出改进软件过程的具体改进措施,更不要直接干涉程序员的工作方式,以免出力不讨好,影响今后的愉快合作。软件过程改进的方法是软件质量控制部门的事情,这是他们的本职工作
  • TD7.6移植心得

    2008-03-06 11:57:34Top 1 Digest 1

    TD7.6移植:
    前提条件:原来是SQLERVER数据存储方式,后改为ACCESS格式进行移植的情况
    1、        把SQLserver存储的工程改为ACCESS存储的工程
    2、        按照备份要求备份2个目录:备份DomsInfo目录和TD_Dir目录
    3、        修改部分备份文件参数
    修改文件参数:
    DomsInfo目录中Doms.mdb文件中(登陆密码是TDTDTD)
    A:删除表dbservers中关于SQLserver的记录
    B:修改表PARAMS中字段paran_name中ACISERVER的值为TEST:9999
    C:修改表PROJECT中字段PHYSICAL_DIRECTORY中的值\\TEST\td_dir\default\工程名字
    D:修改表TDSERVERS中字段TDSERVER_NAME和TD_IP_ADDRESS分别为:TEST和192.168.1.156
    DomsInfo目录中old_DomSetup文件中
    A:修改原来记录Demo DB Path=\\Ipnettest\TD_DIR\Default\Demo_DB_1中关于主机名称部分为Demo DB Path=\\TESTt\TD_DIR\Default\Demo_DB_1
    B:修改原来记录Name_1=ACISERVER Value_1=ipnettest:9999为Name_1=ACISERVER Value_1=TEST:9999
    C:删除[DBSERVERS]    TDSQLSERVER=TDSQLSERVER

    4、把备份的内容复制到另一台机器相应的目录下。
    5、打开TD7.6后就可以看到工程库了。
  • 自己在使用电脑中发现的一些技巧,与大家共享

    2008-02-29 14:39:32Top 1 Digest 1

    贡献自己在使用电脑中发现的一些技巧,方法发上来共享,让新手少走弯路,高手共勉 同时也为自己赚点小小的名气,呵呵
      自己在使用电脑中发现的一些技巧,方法发上来共享,让新手少走弯路,高手共勉
      1.   任务栏里的显示桌面丢失了怎么办?
      简单的方法::
      记事本新建输入:
      [Shell]
      Command=2
      IconFile=explorer.exe,3
      [Taskbar]
      Command=ToggleDesktop
      保存为 显示桌面.scf
      拖到快速启动
      2.   系统自带的缩略图查看功能失效,只能显示图标,怎么办?
      运行如下命令:
      2000系统下: regsvr32 x:winnt\system\thumbvw.dll   
      XP系统下:  regsvr32 shimgvw.dll
      3.   我用百度搜索过的信息在下次登陆百度搜索引擎时双击登陆框会出现,登录论坛输入用户名也出现此类情况,如何消除登陆框以及搜索引擎搜索框里曾经输入过的信息?
      1.点击“搜索”空白栏,把鼠标移到搜索过的词上,当显示蓝色时按Delete键,就可以清除你不想留下的搜索词。
      2.工具---internet选项--内容--自动完成--清除表单。
      注意:操作后关闭浏览器,再打开就能实现了。
      4.   如何用WinRAR实现自动关机?
      WinRAR命令模式的关机命令是“-IOFF”。如果配合其他参数,就可以实现当执行完某项操作后自动关闭计算机。把指定文件全部添加到某个压缩文件中后就自动关机,则我们可以在命令行中输入:rar a -ioffxxx??.txt(xxx表示压缩文件名;??.txt表示将本文件夹中所有txt格式的文件全部添加至压缩包中)
      5.   将“我的文档”文件夹转到其他分区,下次重装系统时."我的文档"里的资料不用备份.右击“我的文档”-“属性“-“移动”,设置到系统盘以外的分区即可。
      6.   将IE临时文件夹转到其他分区:打开IE浏览器,选择“工具“-“internet选项”-“常规”-“设置”-“移动文件夹”,设置设置到系统盘以外的分区即可。
       Windows临时文件夹
        先在其他分区创建一个TEMP文件夹,例如:E:\TEMP。打开“控制面板” “系统” “高级” “环境变量”,分别双击“TEMP”和“TMP”这两个变量名,弹出“编辑用户变量”对话框,在“变量值”中填入E:\TEMP,确定即可.还原变量值
      IE临时文件夹
        先在其他分区创建一个IE临时文件夹,例如:E:\临时文件夹。打开IE浏览器,选择“工具” “Internet选项” “常规”,点击“Internet临时文件夹”栏的“设置”按钮,弹出“设置”面板,点击“移动丈件央”,在E盘找到创建的IE临时文件夹,点击两次“确定”后,系统会提示要重启计算机,重启电脑后IE临时文件夹就被设置在E盘了
      7.   程序安装目录
        系统将程序安装目录默认在C盘Program File文件夹里,随着安装程序的增多,将会占据大量C盘空间,所以最好将程序都安装在其他分区里。如果觉得每次都用手动更改太麻烦,可以通过修改注册表的方法来实现。
        打开“注册表编辑器”对话框,在对话框中展开
        “HKEY_LOCAL_MACHINE\software\Microsoft\Windows\Current Version”项。
        在右侧窗口找到“ProgramFilesDir”值,双击该值,在“数值数据”框中输入D:\Program File,然后单击“确定”,重新启动电脑后即可完成设置
      8.   找回丢失的桌面图标透明效果
      答:由于WinMatrixXP软件自动激活了你的动态桌面(ActiveDesktop),所以图标透明效果就没有了。在“运行”中输入“gpedit.msc”,打开组策略;在“用户配置→管理模板→桌面→ActiveDesktop”中,点活动桌面属性选定“未被配置”,点禁用活动桌面属性选定“已禁用”;最后打开控制面板,在经典视图中打开系统,在“性能→高级选项→性能→视觉效果”里选取“在桌面上为图标标签使用阴影”即可(默认情况下,最后一步可忽略)。
      9.   在浏览网页的时候按下滑轮,会出现2个黑色的三角形,之后把鼠标放在三角形之后,滚动条就慢慢的往上移动,向下就不用我说了吧。
      冬天很冷的时候,在网上看书的话,可以不让你的手暴露在冷空气中。
      10.   桌面时间旁加上自己的名字
      1:开始/控制面板/语言和区域
      2:按区域语言选择
      3:按自定义
      4:按时间
      5:把AM和PM符号换上自己名字(可以输入中文)
      6:在时间格式栏h:mm:ss 前或后加上tt
      (tt h:mm:ss 名字在左边 / h:mm:ss tt 名字在右边)
      11.   按住ALT键,双击文件夹。即可显示属性。
      如按住ALT键,双击桌面上我的电脑。
      12.   通常来讲,在WPS Office中插入的图片效果比在MS Office中更清晰。但有时我们为了得到较小的文件体积,采用压缩比较大的JPG等格式的文件时,图片会产生失真。
        解决方法如下:
        首先打开一个建立图像的应用程序,笔者使用的是Windows的“画图”程序。然后打开需要插入的图片,另存为BMP格式(如果原图是BMP格式当然就不用改变格式了)。接着选择“复制”命令,再切换到WPSOffice文档中,将插入点移到要插入图像的位置,在常用工具上单击[粘贴]按钮就可以了。
      13.   XP(sp2)自带的恶意程序扫描器在运行栏键入:   MRT.EXE   就可以打开的,并随时查杀系统。
      很不错,请相互推荐使用。
      14.   WIN+U+U
      关机!!
      15.   WIN+L 锁定屏幕
      16.   CTRL+SHIFT+ESC=CTRL+ALT+DEL=WINDOWS任务管理器
      17.   无需任何软件实现定时关机100%成功
      开始-运行 输入shutdown -s -t 1000   1000代表要设定的时间,单位秒
      18.   BT片子下到99%没种了最简单的解决方法!!不用任何工具软件
      BT片子下到98%,99%没种了是常事,可以说在网上看到了许多这种问题的解决方法,什么专用播放器啊,工具啊,一大堆。。。。。其实我觉得大不必这么麻烦,如果是98%,99%的话,直接改扩展名就可以了,先是在-工具-文件夹选项-查看,里面把”隐藏已知文件扩展名“的钩子去掉。比如一个片子下到99%,文件名是“达芬奇密码.rmvb.bt!",直接把".bt!"去掉就好了,变成"达芬奇密码.rmvb",这样片子就能播放了。这样做的主要原因是片子下载到98%99%几乎已经接近完全了,可以强行播放。
      19.   怎样让QQ图标在任务栏消失?
      方法是打开个人资料,进入系统设置-基本设置,将“任务栏显示图标”前去勾确定,在将面板最小化即可,ok了,要想还原面板,只要按“ctrl+alt+z"即可显示。
      21.   一台旧电脑,配置:845主板,C 1.7CPU,MX400显卡,DDR256内存.
      重装XP系统,在复制文件时,经常出现错误.报错信息是"无法找到原文件",而N次中断安装.某时可以看见安装界面,而出现"发生致命错误,无法安装"直接退出.
      怀疑是分区不正确,重新分区后,故障依旧.
      又想自己把原来20G的硬盘换成了60G的,是不是主板BIOS老了不支持.又把主板BIOS刷成了最新版本.还是没有解决问题.
      把硬盘和光驱换到自己的另一台机子上,一切正常.安装顺利进行.
      最后锁定到了内存上,找了一条同类型内存更换后,问题解决!
      把原机内存装回去,在运行时经常会出现内存逻辑错误提示,别看它能被机子直接检测到,但是软故障一样致命.
      22.   ESC键不太为人知的几个妙用
      对于一般用户而言,位于键盘左上方的ESC键并不常用,但你知道吗?其实借助ESC键还能实现不少快捷操作哦!
       1.上网时,如果点错了某个网址,直接按ESC键即可停止打开当前网页。
      2.上网时总免不了要填写一些用户名什么的,如果填错了,按ESC键即可清除所有的框内内容;而打字时,如果打错了也可以按ESC键来清除错误的选字框。
      3.除了“Ctrl+Alt+Del”组合键可以调出windows任务管理器外,按下“Ctrl+Shift+Esc”组合键一样能启动任务管理器。
       4.当某个程序不处于活动状态而我们又想将其恢复为活动状态时,按“Alt+Esc”键即可激活该应用程序,而不必用鼠标点击程序标题栏。
       5.对于存在“取消”选项的弹出窗口而言,如果你要选择取消的话,直接按ESC键即可实现“取消”操作
      23.   XP(sp2)自带的恶意程序扫描器在运行栏键入:   MRT.EXE   就可以打开的,并随时查杀系统。
      24.   关机时清空页面文件
      打开“控制面板”,单击“管理工具→本地安全策略→本地策略→安全选项”,双击其中“关机:清理虚拟内存页面文件”一项,单击弹出菜单中的“已启用”选项,单击“确定”即可。
      25.   解决IP地址冲突问题的方法
      如果您使用的计算机的操作系统是:windows 2000 或windows XP
      点击左下角“开始”→“运行”,键入:ipconfig /release,点击“确定”,在此点击“开始”→“运行”,键入:ipconfig /renew,点击“确定”,即可解决问题。
      26.   快捷键:win+e 直接打开“资源管理器”,win+f 直接打开 ”搜索"
      27.   有时候电脑故障重启不起作用的时候,不妨试试关机,几分钟后再开机,运气好的话故障会解决的
      29.   查看驱动器组件信息
        右键点击“我的电脑”,点选弹出选单中的“管理”,依次打开“可移动存储”→“库”,用右键点击所要查询的驱动器,点选弹出选单中的“属性”,点选“设备信息”就可看到驱动器的信息了
      30.   解除禁止网页内容复制的方法!
      点选IE浏览器菜单:工具/internet选项/安全/自定义级别/选择级别为:高级,点击重置,确定,然后点击刷新按钮或者F5键,刷新要复制的网页,这时候就可以拉选需要复制的内容了。
      31.   现在病毒及木马横行,网上银行、网上购物、电子支付、在线游戏的安全常受到他们威胁。
      我们可以使用win 自带的软键盘来代替直接鍵盘输入这样相对来说会安全很多。
      方法:开始-运行-osk-确定
      32.   一般来说,拔除移动硬盘时,需要先双击系统托盘区域处的“拔下或弹出硬件”的图标,再选中目标移动硬盘,之后执行“停止”命令,当屏幕出现安全插拔的提示时,才能把移动硬盘从计算机中拔出来。
      现在可以这样做:在右下角系统托盘的U盘图标上点击鼠标左键,在弹出的提示条上再点一下左键,即可实现安全插拔了。
      33.   找回任务栏输入法图标----XP下任务栏上的输入法设置图标消失了,只要在"运行"栏中输入" ctfmon.exe",就可恢复.
      34.   Win+R打开运行对话框
      35.   WORD编缉文档时,随意放大缩小页面,按住CTRL键,滚动鼠标小轮,即可实现
      36.   便捷地硬盘碎片整理
            电脑使用一段时间后硬盘会产生大量文件碎片,用户需要定期调用磁盘碎片整理程序进行清理。为此,这里向你提供一个可以让你更加便捷地调用整理硬盘碎片程序的方法。
            用户使用“记事本”编辑一个名为"context_defrag.inf"的注册表导入文件,并在该文件中输入下列内容:
          ; context_defrag.INF
          ; Adds Defrag to the right click context menu in Windows XP
          [version]
          signature="$CHICAGO$"
          [DefaultInstall]
          AddReg=AddMe
          [AddMe]
          HKCR,"Drive\Shell\Defrag\command",,,"DEFRAG.EXE %1"
          编辑完毕后用鼠标右击该文件并选择“安装”,安装后即在Windows
          XPxx作系统内添加了一个文本菜单。用户需要整理硬盘时,打开“我的电脑”,用鼠标右击选中需要进行整理的硬盘盘符,从弹出的文本菜单中选择"defrag"项,这时系统就会自动调用内置的"defrag.exe"程序整理硬盘。
         如果用户需要将上述安装到系统注册表的信息删除,可使用regedit.exe注册表编辑器进行编辑修改,具体xx作为寻找到"HKEY_CLASSES_ROOT\Drive\shell\"目录项,删除其中的"defrag"文件夹,最后关闭注册表编辑器。
      37.   鼠标双击屏幕下面的时间显示区,可立即闪现出时间日期属性
      38.   三秒钟重启你遇到过吗?注意!不是中毒不是停电,也不是插件捣乱。而是实实在在的快速重启!现在我就来告诉你如何实现这个微软的隐藏秘籍。不过仅限于紧急状态使用哦!
      首先进入xp任务管理器就是那个ctrl+alt+del,仔细看,大招来了!按住左手边的ctrl然后用鼠标点击“重新启动”,数1.2.3。计算机以迅雷不及掩耳盗铃之势重启了!而且这种重启为正常重启动,不会出现自检的情况。
      呵呵这样重启绝对比那种麻烦的点击开支重启快上N多倍,但仅推荐在系统处于无响应或者紧急状态使用!因为这种方式相当于Win98下连续两次按“ctrl+alt+del”。
      39.   结束无法关掉的程序?
      ctrl+alt+del 打开任务管理器,选择进程中的此程序,单击鼠标,选择"结束进程",就行了
      40.   防止子女玩电脑
      以往都在CMOS中设置密码。现在只要在XP的用户中设置密码,而且用户只设置一个,不在时,点开始-》注销-》切换用户,子女们再想玩电脑就玩不成了,自己玩时,输入密码,进入桌面,原来运行的程序都还在,一个都不少!不象在CMOS中设置密码那么麻烦了。
      41. 如何找回丢失的任务管理器
      1?点击开始——运行,然后输入gpedit.msc回车打开组策略编辑器,依次找到管理模版——系统——Ctrl+Alt+Del选项,在右侧找到“删除任务管理器选项”,右击属性选择“未配置”确定即可。如果本来显示的就是“未配置”,可以先选择启用——应用,然后重新选择“未配置”,确定退出即可。
      2?新建一个文本文件:XXX.txt
      打开后在这个文本文件中输入以下内容:
      【若是98系统,则】
      REGEDIT4
      [HKEY_CURRENT_USER\Software\Microsoft\\Windows\CurrentVersion\Policies\System]
      "DisableTaskmgr"=dword:00000000
      【若是2000或XP,则】
      Windows Registry Editor Version 5.00
      [HKEY_CURRENT_USER\Software\Microsoft\\Windows\CurrentVersion\Policies\System32]
      "DisableTaskmgr"=dword:00000000
      然后将这个文本文件改名为XXX.reg,此时系统会有一个提示,不用管它直接点确定。然后再双击这个文件,提示输入注册表,选“是”。
      42. 如何找回丢失的任务管理器
      1?点击开始——运行,然后输入gpedit.msc回车打开组策略编辑器,依次找到管理模版——系统——Ctrl+Alt+Del选项,在右侧找到“删除任务管理器选项”,右击属性选择“未配置”确定即可。如果本来显示的就是“未配置”,可以先选择启用——应用,然后重新选择“未配置”,确定退出即可。
      2?新建一个文本文件:XXX.txt
      打开后在这个文本文件中输入以下内容:
      【若是98系统,则】
      REGEDIT4
      [HKEY_CURRENT_USER\Software\Microsoft\\Windows\CurrentVersion\Policies\System]
      "DisableTaskmgr"=dword:00000000
      【若是2000或XP,则】
      Windows Registry Editor Version 5.00
      [HKEY_CURRENT_USER\Software\Microsoft\\Windows\CurrentVersion\Policies\System32]
      "DisableTaskmgr"=dword:00000000
      然后将这个文本文件改名为XXX.reg,此时系统会有一个提示,不用管它直接点确定。然后再双击这个文件,提示输入注册表,选“是”。
      43. 开机弹“我的文档” 打开HLM/S/M/windowsNT/CURRENTVERSION/WINLOGON项Explorer.exe后面的部分
      44.F5是刷新窗口的快键   IE 资源管理器 桌面 都可以
      45.系统输入法没有在显示图标,怎么办?
      首先打开控制面板——区域和语言选项——语言——详细信息——高级。将“关闭高级文集服务”前面的钩去掉之后重启电脑就可以了。
      46. Windows开始→运行→命令集锦
      winver---------检查Windows版本
      wmimgmt.msc----打开windows管理体系结构(WMI)
      wupdmgr--------windows更新程序
      wscrīpt--------windows脚本宿主设置
      write----------写字板
      winmsd---------系统信息
      47. 删除没有卸载程序的方法
      首先,点击开始--运行--输入regedit--进入注册表后--依次点击
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
      --在这里面可以看到你曾经装过哪些软件~!
      然后单击一下你想卸载的软件--在旁边可以看到“UninstallString”的子键--双击这个子键,
      弹出一个编辑字符串对话框--再把里面的键值复制一下~!
      回到桌面-点击
      开始--运行--在里面把刚刚复制到的键值粘贴到里面--回车~!
      这样就可以删除掉在添加删除里没有的程序~!
      当然,如果这里面没有你想卸载的程序的话~!
      那么也就是说那些程序并没有在注册表里注册,也就是说你可以直接删除了
      48. 解决WinXP执行时候停顿一下的问题
          开始——网络连接——本地连接,按右键,选择属性,选择“Internet协议(TCP/IP)”,点击属性,使用下面的IP地址:192.168.0.1,子网掩码:255.255.255.0,这样就好了,以後开机就不会停顿了
      49. 解决任务栏假死(权威的消除QQ、IE等引起任务栏假死)
        “控制面板"->"区域和语言选项"->"语言"->"详细信息",在弹出的"设置窗口"中选择"首选项"的"语言栏",关闭“在桌面上显示语言栏”,在第三项"在通知区域显示其他语言栏图标"复选框上打上勾。如果不需要手写识别、语音识别的话,也可以再勾选最后一项"关闭高级文字服务"。
      50. 在关机对话框中显示“休眠”
            Windows   XP的默认设置是在关机对话框中没有让系统进入休眠状态的选项,而显示该选项的xx作非常简单,当出现关机对话框时,用户可以同时按下"SHIFT"键,这样“休眠”选项便出现了。
      51. 调用系统声音方案
            与以往的Windowsxx作系统相比,Windows
      XP提供了更加优秀的声音方案,但系统默认却没有调用该方案。为了激活该方案,我们需要执行下列xx作:打开“控制面板”,选择“声音、语音、音频设备”项,从中找到“修改声音方案”的任务栏,在打开的对话框中选择“Windows默认”,此时系统会提示用户是否保存以前的声音方案设置,用户可以选择“否”并点击“确认”,完成修改
      52. 显示共享设置标签
            Windows
          2000xx作系统中用户在设置文件夹的共享属性时xx作非常简便,只需用鼠标右击该文件夹并选择属性,就可以看到共享设置标签。而在Windows
          XP系统设置文件夹共享时则比较复杂,用户无法通过上述xx作看到共享设置标签。具体的修改方法如下:打开“我的电脑”中的“工具”,选择“文件夹属性”,调出“查看”标签,在“高级设置”部分滚动至最底部将"Use
          simple file sharing (Recommended)"前面的选择取消,另外如果选项栏里还有"Mickey
          Mouse"项也将其选择取消。这样修改后用户就可以象使用Windows 2000一样对文件夹属性进行方便修改了。
      53. 清除共享文件夹
            Windows
       XPxx作系统一个比较不友好的用户界面是在“我的电脑”窗口上半部分显示所有共享的文件夹,如果用户设置的共享文件夹较多,每当打开“我的电脑”窗口时,就会列有很多共享文件夹信息。如何删除这些信息显示呢?使用注册表编辑器,并寻找这个主键"HKEY_LOCAL_MACHINE
          \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \
          My Computer \ NameSpace \ DelegateFolders",在该主键下有一个名为
          {59031a47-3f72-44a7-89c5-5595fe6b30ee}的副键,删除该副键便可清除那些共享文件夹信息。上述修改无需重新启动便可生效。
      54. 如何判断XP是否已激活
      1、开始→运行,在弹出的对话框中输入:oobe/msoobe /a,回车后系统会弹出窗口告诉你系统是 否已经激活。
      2、开始->所有程序->附件->系统工具->WINDOWS激活,如果是这样的话,就恭喜你了,已经激活。你不信,可以点最后那个“WINDOWS激活”看一下就明白了。
      如果是破解/没有激活,在“开始”->“所有程序”顶上就看见“WINDOWS激活”了!激活后,此项就隐藏起来了。
      查看激活用了哪个CD-KEY?!
      激活后才想起不知道是哪一个CD-KEY激活了XP,这时你只需运行附件中的“WinXP安装CD-Key的查看小工具.exe”即可查看!
      55. 如何解决系统无法升级更新的问题:   删除C:\Windows\System32\CATROOT2 文件夹,然后重新安装更新程序。
      56. 找回“显示桌面”按钮
      用记事本新建一个文本文件,把下面这段内容复制进去,保存时把类型选为“所有文件”,把这个文件保存为:“Show Desktop.scf”,再把图标拖到工具栏上,“显示桌面”就回来了。
      [Shell]
        Command=2
        IconFile=explorer.exe,3
        [Taskbar]
        Command=ToggleDesktop
      另:第三行应该是代表图标的位置,把数字“3”换成“4”,刷新,果然图标跟着变了!再换成“5”,又一个!哈,这么一来,无意中竟被我发现了更改“显示桌面”图标的方法,只要在“IconFile=”后输入你所中意的图标路径就可以了。
      其实,在Windows9X系统下,如果出现误删除“显示桌面”的情况,只需在搜索里键入“*.scf”就可以找到“显示桌面”的图标。而在WindowsXP下,只能通过复制或写程序了。
      57. 2秒钟快速关机
      如果遇到急事需要快速关机,可以打开“任务管理器“按住Ctrl点击关机,2秒即可关机,注意一定要保存好文件。
      58.上网时在地址栏内输入网址,系统会记录下来,虽然方便以后不用再重复,不过如果是公用的机子,又不想让别人知道自己到过哪些地方,可以用“CTRL+O(字母O,不是0)”,这时对弹出一个“打开”对话框,在其中的地址栏内 输入网址,就不会被记录下来了.
      59. 在IE的地址栏输入: javescrīpt:alert(document.lastModified)可以得到网 页的更新日期.
      60. IE真正的空白页: 在IE的快捷方式中右击---属性--选择“目标”,这里的信息为:“c:\programFiles\InternerExplorer\IEXPLORE.exe",在它之后添加“-nohome"字样即可。注意-nohome之前要有空格
      快速设置主页:将IE地址栏里的“e”网页图标直接拖到工具栏上的“主页” 按钮图标上
      不用重启也刷新注册表:同时按Ctrl+Alt+Del,在弹出的Windows任务列表中加亮"Explorer",单击“结束任务”,显示关机屏幕,单击:“否“,稍候,弹出错误信息,单击“结束任务”,windows游览器即会和新和注册表一起重新装 载!
      61. 在保存网页前,可以按一下"ESC"键(或脱机工作)再保存,这样保存很快
      62. 在关闭进程时不小心关掉某个进程引进计算机进入关机倒时,可在运行里输入:shutdown -a,这样就不会关机了
      63. 1.彻底删除“我的文档”
      在WindowsXP中,当删除“我的文档”中的“我的音乐”、“图片收藏”等文件夹后,重新启动计算机后又会产生这几个文件夹。要想彻底删除“我的音乐”、“图片收藏”等文件夹,我们只要先在Windows“运行”对话框中输入“Regsvr32 /umydocs.dll”这个命令,然后就可以彻底删除它们。
      2.删除 XP 自带的 Windows Messenger
      开始->运行->RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove
      3.卸载传真和图片查看器
      如果不想用XP自带的传真和图片查看器,你可以运行这个命令卸载它:
      regsvr32 /u shimgvw.dll
      4.了解每个svchost进程到底提供了多少系统服务
      命令提示符窗口中输入: tasklist /svc
      64. 在xp下重装 IE
      运行注册表编辑器,
      找到[HKEY_LOCAL_MACHINESOFTWAREMicrosoftActive SetupInstalled
      Components{89820200-ECBD-11cf-8B85-00AA005B4383}],
      把键值从1改成0,重启后xp将自动开始安装 ie6.
      65. 键盘“Print Screen”键的妙用----替代屏幕截图软件
        1、代替屏幕截图软件
        按下PrintScreen键,将会截取全屏幕画面。用鼠标点击“开始→程序→附件→画图”,将会打开“画图”程序,点击该窗口中的“编辑→粘贴”菜单,这时会弹出一个“剪贴板中的图像比位图大,是否扩大位图?”对话框,点击“是”,就会将该截取的图片粘贴到其中。再按下Ctrl+S键将图片保存即可。
        2、抓取当前活动窗口
        在使用Print Screen进行屏幕抓图时,同时按下Alt键,就会只抓取当前活动窗口,然后按上述方法保存即可。
        3、截取游戏画面
        我们都知道用键盘上的Print Screen键可以抓取系统中的桌面图案,然后在“画图”程序或是Photoshop之类的图像处理软件中可以“粘贴”出来。但是如果我们要抓的是游戏画面的话,上面这个方法可能就不灵光了。
         没关系,启动Windows MediaPlayer(6.0以上版本),打开一个视频文件,选择“文件→属性→高级”,双击VideoRenderer,在DirectDraw中,把YUV Flipping、RGB Flipping、YUV Overlaya和RGB
      Overlays四个选项取消,确定后退出。再试试看,用Print Screen键也可以抓游戏画面了。
        4、截取DirectX图
        PrintScreen键无法截取DirectX图,没关系,只要我们略施小计,就可以让它大展拳脚。在“开始”菜单的“运行”中输入regedit,打开注册表编辑器,然后展开注册表到HKEY_Local_MachineSoftwareMicrosoftDirectDraw分支,新建一个 “DWORD”值,并将其重命名为“EnablePrintScreen”,填入键值“1”,即可使Print
      Screen键具有截取DirectX图的功能。
      66. IE的全屏幕模式----每次打开IE时的窗口都是最大化
      在IE里按下F11键就可以快速切换到全屏幕模式,不过我们这里所说的全屏幕模式是指一个不包括工具栏、状态栏的纯全屏模式。要达到这种效果----通过"快速启动工具栏"中的图标启动IE时,可以右击“快捷方式图标”,选择“属性”,在“快捷方式”选项卡中的“运行方式”选项栏中选择“最大化”,然后单击“确定”按钮。此后,无论什么时候您通过这个快捷方式启动IE,浏览器的窗口总处于最大化状态.
      67. 让"打开/保存"窗口随你愿
      Windows XP:
      在"运行"中输入"gpedit.msc",打开组策略窗口。依次打开"本地计算机策略"→"用户配置"→"管理模版"→"Windows资源管理器"→"通用打开文件对话框",双击打开右边的第一项"位置栏中显示的项目",在"设置"标签中,它默认的属性是"未配置",我们选中"已启用",在下面"显示的位置"中就会出现五个空白项目,我们可以在这里输入电脑中任意的文件夹位置。
      68. 删除没有卸载程序的方法
      首先,点击开始--运行--输入regedit--进入注册表后--依次点击
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
      --在这里面可以看到你曾经装过哪些软件~!
      然后单击一下你想卸载的软件--在旁边可以看到“UninstallString”的子键--双击这个子键,
      弹出一个编辑字符串对话框--再把里面的键值复制一下~!
      回到桌面-点击
      开始--运行--在里面把刚刚复制到的键值粘贴到里面--回车~!
      这样就可以删除掉在添加删除里没有的程序~!
      当然,如果这里面没有你想卸载的程序的话~!
      那么也就是说那些程序并没有在注册表里注册,也就是说你可以直接删除了
      69. 隐藏桌面‘回收站’的两个方法
      开始--运行 输入regedit,打开注册表,找到
      1) HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum(没有该项则新建)
      在该项下新建一个DWORD值,并命名为{645FF040-5081-101B-9F08-00AA002F954E},修改其参数为1即可;
      2) HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
      将{645FF040-5081-101B-9F08-00AA002F954E}项删除便可重新登录后生效
      70.解决任务栏的图标变大的方法:运行regedit.exe打开注册表编辑器,找到HKEY_CURRENT_USER\ControlPanel\Desktop\WindowMetrics,在右边的窗口中找到字符串值:“ShellIconSize”,改变其值就可以改变图标的大小。一般是“32”这个数值。注意修改注册表前请事先备份注册表。
      71. 解决桌面图标乱的方法:
      这是由于Windows的图标缓冲文件被破坏了,请启动“资源管理器”程序,然后进入Windows文件夹,找到一个名为ShellIconCache的文件,并将它删除。再重新启动Windows,Windows就会重建图标缓冲文件,桌面上的图标就会恢复原状。
      72.用电脑听CD可以不用任何的播放软件,把音箱线直接接到光驱的耳机孔,放入CD,按光驱上的play键就可以直接听了,这样听歌可以不占用系统资源。(如果你的电脑坏了,不能启动或什么的,一时放在那不能修,千万不要浪费资源 ,把用里面的电源给光驱通上电,就可以暂时做CD机了.
      73. windows+e 资源管理器.
        windows+r 运行.
        windows+f 查找.
        windows+u 关闭系统.
        windows+d最小化所有窗口,再按一次Win+D可回到最小化前的窗口.
        windows+m最小化所有窗口,但再按一次无法回到最小化前的窗口.
        Shift+F10,可以打开所选项目的右键菜单.
        按住 CTRL+SHIFT 拖动文件:创建快捷方式
      74.2000和xp下运行"cmd",进入dos窗口,复制和粘贴都用右键完成
      75.IE快捷键:
        Ctrl+W关闭窗口
        F4打开地址拦的下拉选择网址
        F6或ALT+D选择地址拦
        空格键可以下翻页,Shift+空格则可以上翻页
      76.在IE的地址栏输入: javescrīpt:alert(document.lastModified)可以得到网 页的更新日期.
      77.跳过开机画面
        启动时按 esc 即可,或者干脆一点,修改 msdos.sys在options段落加入 logo=0
      78.智能ABC输入法中字母 “v”的用法:
        ①、在智能ABC输入中,V + 数字(1~9),可以输入各种字符、图形、数字 等,一试便知,奇妙无穷,但我想大多数人早都用了吧?
        ②、在智能ABC输入中,在输入拼音的过程中(“标准”或“双打”方式下) ,如果需要输入英文,可以不必切换到英文方式。键入“v”作为标志符,后 面跟随要输入的英文,按空格键即可。
      79.xp自带的拨号软件连接不能保存本机密码怎么办
      启动注册表编辑器 (regedit) 并选择以下子项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
      RasMan\Parameters
      找到右边编辑窗口的DisableSavePassword键,将其键值由1改为0即可,大家不妨一试
      80.用Media Player Classic加载字幕时有报错(要载入字幕你必须改变文件渲染模式并重新载入).前提是视频文件(avi)和字幕(srt)要在同一个文件下,字幕到射手网找.
      这时需要重新设置Media Player Classic.
      把Directshow视频输出选“VRM9(无转换)”,
      Realmedia视频或QuickTime视频都选Directx9。
      平时播放不需字幕的视频时,可以全改回系统默认
  • How to write a good bug?(转贴)

    2008-01-02 15:16:26Top 1 Digest 1

     We hear it often from mentors & managers the importance of writing good bug reports. But it is really beneficial to everyone who looks at your bugs especially if the bug is assigned to someone else to verify or if the triage group (who has no idea about your feature) wants to understand the impact of the bug. While writing a bug, always write it with the thought in mind that if a totally new person were to read this bug, he/she would understand the exact problem and the expected results. If all the relevant information is included in the bug, then less time will also be spent in trying to gather all the information by the assignee (EX:Dev/PM) of the bug, who is trying to fix it.
    EX:
    • While reading a bug assigned to a developer, he/she should have all the information related to the bug. (Ex: Environment, IP, exact repro steps, what is the actual result, what is the expected result, any other notes you need to include etc. Other very useful information to include in the bug is any error events in the event viewer logs, SQL query you used against the db (to verify information logged in db), which SQL server & db you are using, a screenshot if it is a UI bug, etc if applicable etc.

    How to Steps

    Notes: Before filing a bug, make sure of the following :

    • Make sure it is a bug & not expected functionality. Verify against spec. If information is missing from the spec, check with PM & file a spec bug to update the spec.
    • Check for duplicates. If a bug already exists for the issue at hand, read the bug. If you think you have gathered more information than what is included in the bug or have exact repro steps, please include them in the existing bug as well.
    • Check on HF box if bug is existing on live site as well.
    • Does it repro on other place (if applicable).
    • If your bug includes more than one issue, try to search if the other issues are already in raid. If yes, link the bugs.
    • If the bug fix or details for the same are being discussed in email, make sure to include those details in the bug as well.
    • When closing a bug, please include details on the repro steps you followed & all the areas you verified (db, event logs, different place, etc), especially if you are verifying a bug that is not opened by you.
    • When regressing a bug, also include other existing functionality verified in addition to the bug fix in the bug details, to make sure all the areas affected by the fix are working correctly.

    Anatomy of a bug:

    • Title: Titles should be Clear, Concise, and describe the problem accurately. If you are writing one bug for 2 related issues, please file 2 different bugs & link them. A good title of a bug should include three sides , just “Who , What , Where”.
    • Status:
      1. Status: By default opening a bug sets it state to active. If you resolve a bug, make sure you change the status to resolved.
      2. Assigned To: Assign bug to the right person. If you are not sure, check with feature PM or your manager.
      3. Issue Type: Select the correct Issue type from the drop down.
      4. Severity & Priority: Complete these fields correctly with the new definitions.
    • Opened:
      1. Open name: Who opened this bug?
      2. Date: When is this bug be opened?
      3. How Found: by check requirement or by test etc.
    • Project:
      1. Project name: Which the project name did you find the bug in?
      2. Module name: Which the module name did you find the bug in?
      3. Open Version: Which environment did you open the bug in ?
      4. Fix Version: Which envt do you want this bug fixed in?
      5. Milestone: When do you want the bug fixed by?
    • Bug Descrīption:
      1. Descrīption: A more detailed explanation of the problem.
      2. Steps to Repro: Good repro steps require less investigation by both dev and test.              Good repro steps always begin with a link to the site where you found the problem. Good repro steps can be followed by someone unfamiliar with your area.
      3. Expected Result: The descrīption should also contain the result you witnessed and the result you expected (and any clarification needed as to the difference).
      4. Actual Result: A descrīption of what happened after the above steps were followed.
      5. Attachments: A screen shot can also be attached and can add a great deal of clarity. A picture is worth 1000 words... (save as jpg or gif, to avoid 2 MB bitmap files, Power Point is a good tool to show successive steps to repro the bug ) .
      6. Other place: This kind of bug if it can be find in any other place or not. Does it happen in the other condition? Does it happen in the other language?
      7. Browser: Which browser is this bug be found in? (use in WEB test)
      8. Automation/Tools: If it is found by auto tools or not.
      9. Events/Logs
      10. DB Server/DB/SQL query
  • 发现QQ的一个“BUG”

    2007-12-28 16:48:55Top 1 Digest 1

    近期发现了QQ的一个BUG,我的群消息设置是“消息来时只显示消息数量”。当我在群里面发送一个自定义表情后,迅速关闭该对话框,再看这个群时,后面显示消息数量是(1),双击打开对话框后,没有任何信息显示,聊天记录里面也没有。唯一的解释就是刚才那个(1)是我由于我发的,有延时,但是这样的确不友好。
  • 自动化测试应该考虑的因素以及自动化技术的分层

    2007-12-17 15:51:32Top 1 Digest 1

    自动化测试应该考虑的因素
    编号 考虑因素 一般原则
    1 测试进度要求 对那些开发周期短、版本非常紧急、没有足够的时间进行自动化的版本,一般不考虑自动化
    2 人力资源要求 版本测试的自动化初期的人力投入还是相当大的,若没有足够的人力,一般也不宜做自动化测试
    3 版本稳定程度 可以根据已有版本和对未来版本的预测进行分析;产品第一个版本或特性很不稳定的版本不宜作自动化
    4 版本应用情况 对那些在相当长的时间(如超过半年)没有后续版本的产品测试,一般不必进行自动化;自动化的效率主要体现在自动用例的良好继承性上,若业务没有后续版本,也就不存在依靠自动化用例的继承性带来的效率
    5 可自动化率 可自动化率是指可以实现自动化的用例比例;如果该比例太小,会使实现自动化的投入相对过大。一般来说对可自动化率小于20%的版本可不考虑自动化。
    6 版本规模 对产品规模非常小的版本,如测试用例总数<100个,也不用考虑自动化
    级别  说明  优点  缺点  用法 
    一级  录制和回放  自动化的测试脚本能够被自动的生成,而不需要有任何的编程知识。 拥有大量的测试脚本,当需求和应用发生变化时相应的测试脚本也必须被重新录制。 当测试的系统不会发生变化时,实现小规模的自动化 
    二级  脚本 工作 ">减少脚本的数量和维护的工作  需要一定的编程知识;频繁的变化难于维护  回归测试时,用于被测试的应用有很小的变化 
    三级  自动化框架、脚本 确定了测试脚本的设计,在项目的早期就可以开始自动化的测试  要求测试人员具有很好的软件技能,包括设计、开发  大规模的测试套件被开发、执行和维护的专业自动化测试 
    四级  数据驱动  便于运行大量测试变种,能够维护和使用良好的并且有效的模拟真实生活中数据的测试数据,自动化测试设计人员和执行人员可以有效分离。 软件开发的技能是基础,并且需要访问相关的测试数据 ">软件开发的技能是基础,并且需要访问相关的测试数据  大规模的测试套件被开发、执行和维护的专业自动化测试 
    五级  关键字驱动  测试工具中分离了出来 ">测试用例的设计被从测试工具中分离了出来  需要一个具有工具技能和开发技能的测试团队  测试自动化将技能的使用最优化的结合起来 ">专业的测试自动化将技能的使用最优化的结合起来 
  • TD常见问题及处理方法

    2007-12-06 17:47:05Top 1 Digest 1

    • TD用户密码忘记
    TD有三种用户下面分别是这三类用户密码忘记的解决方法:1。站点管理员,打开系统盘:\Program Files\Common Files\Mercury Interactive\DomsInfo\doms.mdb中admin表(打开表的密码是tdtdtd)将密码这一列清空,然后机器重起。则密码为空。2。项目的admin用户,打开TD_DIR\项目\TestDir.mdb中的users表将admin的US_PASSWORD清空,则密码为空。3。普通项目用户,登陆site administrator在user tab重置该用户密码。

        2.TD工作流脚本

    TD工作流脚本是使用Visual Basic scrīpts来控制TD项目的工作流,比如可以控制某些字段是否显示,字段值变化的依赖性等,脚本是通过事件触发的方式达到的,也可以自定义事件。这里有个例子:

    TD默认修改缺陷者是assigned to用户的。如果开发这样要求的话,你可以这样实现,在缺陷实体中自定义一个FIXED BY字段(字段取值为用户列表).然后再工作流脚本的中粘贴这个脚本
    Sub Defects_Bug_FieldChange(FieldName)
      If FieldName = "BG_STATUS" Then
         if Bug_Fields("BG_STATUS").Value = "Fixed" then
            Bug_Fields("BG_USER_01").Value = User.UserName 'BG_USER_01为自定义字段FIXED BY的数据表列名
         end if
      end if
    End Sub

        3.关于rpc出错

    TD通过RPC服务调用远程分布式组件DCOM
    The RPC server is unavailable 是TD比较常见的出错情况,有时只要重起一下机器,就没有问题了。但是如果还是不行的话,可以试着下面的解决方法:
    1.是否修改过windows administrator的密码:解决方法:系统托盘TD图标---run as---输入正确的密码运行
    2.通过IP地址访问TD后报RPC的解决方法
    如果通过服务器名称访问TD正常,而用IP地址访问服务器出现RPC错误。此方法是解决局域网通过网内代理服务器访问局域网内TD服务器出现的问题.在IE->工具->Internet选项->连接->局域网设置->高级->例外:在以下开头的地址不使用代理服务器,输入TD服务器的IP保存. 从新打开浏览器就可以通过IP地址访问
    3. RPC服务未启动。解决:控制面板-管理工具-服务-“Remote Procedure Call(RPC)”/“Remote Procedure Call(RPC)Locator”,启动一下,服务状态“启动”;
    4.用Windows光盘重新安装IIS服务,在控制面板中;
    5. 新安装TD,成功后,进入“计算机管理”->“Internet信息服务”->“默认Web站点”->“TDBIN”->"属性"->”虚拟目录”,修改应用程序保护,将起改成“低(IIS进程)”,重新启动TD,或者重新启动机器。不过该方法在用CheckTD是可能会出现TD Virtual Directory的警告。
    6. 解决由IIS WebSite Statue的错误时,进入“计算机管理”->“Internet信息服务”->“默认Web站点”->“TDBIN”->"属性"->”虚拟目录”,将脚本访问资源钩上,否则错误提示不能访问脚本资源。
    7.解决由OTAServer配置类型不正确,要求检查用户名和密码的问题时,可以进行以下操作:
    在TD应用服务器中打开[开始]-[运行],输入Dcomcnfg.exe命令来打开分布式COM配置属性,然后选择[应用程序]-[Mercury OTAServer Server]-[属性]-[安全性]-[编辑]-[显示用户],将以IUSR_为开头的用户和TD_IUSER_LOCAL添加进入用户列表(我是在所有的编辑中都添加了这2个用户)。
    重启IIS或机器。(如果以上2步还不行的话,可以继续第三步)
    选择[应用程序]-[Mercury OTAServer Server]-[属性]-[身份标志],选择制定用户,将用户名和密码改为本机管理员帐号和密码。
    8.如果TD服务器管理员帐号/密码或者数据库的被修改过,一定要将它们修改回安装TD时的帐号/密码,否则也会出现RPC错误。

           4.创建新项目时从已有的项目中拷用户群/成员,项目自定义设置

    创建一个项目的时候,可以是create的,也可以是copy另一个项目的.copy的方式有两种一种是拷贝项目内容,一种是拷贝项目设置,看一下创建项目界面的功能按纽

           5.开发工具引用QC开放测试框架API的方法

    开发工具vb6.0引用方法: “工程”-“引用”中添加 “OTA COM 9.0 Type Library”
    开发工具vc6.0引用方法:#import "C:\Program Files\Common Files\Mercury Interactive\Quality Center\OTAClient.dll"
    开发工具.NET引用方法:添加引用-浏览到C:\Program Files\Common Files\Mercury Interactive\Quality Center\OTAClient.dll或者
                                    添加引用-COM-OTA COM 9.0 Type Library
    如果目录下没有OTAClient.dll,到 QC 的 add-in 界面,下载 Mercury Quality Center Client Side Setup 插件。
  • 搭建软件测试环境

    2007-12-05 17:47:06Top 1 Digest 1

    配置测试环境是测试实施的一个重要阶段,测试环境适合与否会严重影响测试结果的真实性和正确性。测试环境包括硬件环境和软件环境,硬件环境指测试必需的服务器、客户端、网络连接设备,以及打印机/扫描仪等辅助硬件设备所构成的环境;软件环境指被测软件运行时的操作系统数据库其他应用软件构成的环境。在实际测试中,软件环境又可分为主测试环境和辅测试环境。主测试环境是测试软件功能、安全可靠性、性能、易用性等大多数指标的主要环境。一般来说,配置主测试环境可遵循下列原则:

    1.符合软件运行的最低要求。测试环境首先要保证能支撑软件正常运行。

    2.选用比较普及的操作系统和软件平台。例如,一个软件若声称支持“Windows9X/ME/NT Workstation/2000 professional”和“MS Office 97/2000/XP”,一般我们会采用如“
    Windows 2000professional+MS Office 2000”的流行环境。

    3.营造相对简单、独立的测试环境。除了操作系统,测试机上只安装软件运行和测试必需的软件,以免不相关的软件影响测试实施。

    4.无毒的环境。利用有效的正版杀毒软件检测软件环境,保证测试环境中没有病毒。

    辅测试环境常常用来满足不同的测试需求或特殊测试项目:

    兼容性测试:在满足软件运行要求的范围内,可选择一些典型的操作系统和常用应用软件对其安装卸载和主要功能进行验证。

    模拟真实环境测试:有些软件,特别是面向大众的商品化软件,在测试时常常需要考察在真实环境中的表现。如测试杀毒软件的扫描速度时,硬盘上布置的不同类型文件的比例要尽量接近真实环境,这样测试出来的数据才有实际意义。

    横向对比测试:利用辅测试环境“克隆”出完全一致的测试环境,从而保证各个被测软件平等对比。

  • 如何删除Oracle

    2007-12-04 16:51:27Top 1 Digest 1

    1.停止所有的Oracle服务;

    2.卸载所有的Oracle产品;

    3.在注册表中进行删除下列项目:
     a.HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
     b.HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES,删除所有Oracle入口
     c.HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\EVENTLOG\APPLICATION,
       删除所有Oracle入口

    4.删除环境变量中classpath和path中有关Oracle设定;

    5.删除操作系统盘中:Programs\Files\Oracle 目录;

    6.删除Oracle的所在目录;

    7.在Win2000中,删除C:\winnt中的Oracle.int,Oraclim73.ini,Oradim80.ini,Oraodbc.ini;

    8.将win.ini中的[oracle]标记字段删除;

    9.删除与Oracle 相关ODBC的DSN;

    10.删除Oracle相关日志

    注:如果安装时出现"symcjit not found" 错误(通信通道的文件结束)
     则可通过将安装程序中的symcjit.ini 修改为symcjit.old来解决。

  • Bug 报告的流程以及要素分析

    2007-11-30 14:34:15Top 1 Digest 1

      前提:标准的对日项目中使用

            Bug发行和处理流程

            1. 测试中发现问题
            2. 寻找参照文档即发行依据。
            3. 进行对比信息采集
            4. 进行不重复bug的自我确认
            5. 进行bug发行确认(pl确认)
            6. 书写bug report-〉submit
            7. 项目组长check, 测试员再现操作-〉bug  report 状态便更为open
            8. 开发方-〉确认-〉1. 待确认(缺少信息)-> bug  report 打回6,进行信息添加。
                                                           2.分析修改

            9. bug  report待测试状态 -〉测试员进行测试—〉测试OK->closed
                                                                                           —〉  测试NG-〉等待继续修改。


    Bug 报告的要素

    1. 概要   
            用最精简的话语,最好是一句来描述你发现的问题。一般逻辑为,哪里,进行了什么操作,本该出现什么,结果出现了什么。(比较严重的缺陷不需要说明期望结果)
    2. 步骤
            从第一步开始书写你的操作手顺。一般原则为:让一个不熟悉此操作的人,按照你的步骤能够再现这个bug.
            **需要注意的是。需要书写的步骤不能含有冗余。也就是说,需要测试员在发现问题后对自己已经确定的再现操作步骤进行排除和分析。只保留缺一不可的步骤。
    3. 再现率
            一般为 X/Y的格式。即再现次数/操作次数。
    4. 发行依据,就是参考文件,你是依据什么文件(权威,一般为需求文档或者开发方的说明文档等)而发行的这个bug.
    5. 对比信息。包括类比和对比信息。
    6. 测试环境
    7. 使用的测试数据
    8. 测试附件   图片,录影(图片无法说明的),log文件。
    9. 其他

            以上是书写bug的重要要素。当然,一个bug报告的组成还有以下:
            bug的概要分析。分析这个bug属于什么范围的问题,什么模块的问题。是进行了什么操作而造成的。

            Bug的优先级。有三级与五级这两种不同的区分。依据项目而定。这种级别一般是测试员没有权限决定但是有权利进行建议的。
            Bug的分析过程。一般由开发和分析人员填写。
            Bug的再测试纪录,一般由测试人员填写测试经过,测试时间,步骤,结果然后会由PL进行确认和提交。

    Bug的结束时间以及结束原因。
            分四种情况,一种是因为测试员测试OK的,原因一般为修改完成等
            一种是开发人员觉得有风险不修改,觉得没有必要修改,或者其他的原因不与修改的。这时候的原因就比较多,例如,延迟修改,不修改等。
            第三种情况一般是因为测试人员自己的原因发行的误bug.比如说式样,需求,设计已经修改但是测试员没有及时参照。此时的结束原因就会是:操作错误,需求理解错误,涉及理解错误,数据错误等等。
            最后一种其实也不算是bug.但是不能将结束原因归咎于测试员的误操作。比如需求变更,环境原因等。

            以上这些都是在系统中进行,如果大家在实际的测试中没有测试工具来进行分析,就只好采用手工了。但是有了这些要素。估计会对工作有很大的帮助。

            对日项目相对欧美比较复杂,但是对于后期的bug的分析以及测试的分析有很大帮助。

  • web测试(转贴)

    2007-11-21 18:13:59Top 1 Digest 1

    关于web测试

    1页面部分

    1 页面清单是否完整(是否已经将所需要的页面全部都列出来了)

    2 页面是否显示(在不同分辨率下页面是否存在,在不同浏览器版本中页面是否显示)

    3 页面在窗口中的显示是否正确、美观(在调整浏览器窗口大小时,屏幕刷新是否正确)

    4 页面特殊效果(如特殊字体效果、动画效果)是否显示

    5 页面特殊效果显示是否正确

     

    2 页面元素部分

    1)页面元素清单(为实现功能,是否将所需要的元素全部都列出来了,如按钮、单选框、复选框、列表框、超连接、输入框等等)

    2)元素是否显示(元素是否存在)

    3)页面元素是否显示正确(主要针对文字、图形、签章)

    4)页面元素的外形、摆放位置(如按钮、列表框、核选框、输入框、超连接等)

    5 页面元素基本功能是否实现(如文字特效、动画特效、按钮、超连接)

    6 页面元素的容错性列表(如输入框、时间列表或日历)

    7 页面元素的容错性是否存在

    8 页面元素的容错性是否正确

     

    3 功能部分

    1 数据初始化是否执行

    2 数据初始化是否正确

    3 数据处理功能是否执行

    4 数据处理功能是否正确

    5 数据保存是否执行

    6 数据保存是否正确

    7 是否对其他功能有影响

    8 如果影响其他功能,系统能否作出正确的反应

    9 其他错误

    10 对模块的具体功能进行测试时可以列出功能模块的所有功能,进行排列组合,测试所有情况

    如:某一功能模块具有最基本的增删改查功能,则需要进行以下测试

    单项功能测试(增加、修改、查询、删除)

    增加——>增加——>增加 (连续增加测试)

    增加——>删除

    增加——>删除——>增加 (新增加的内容与删除内容一致)

    增加——>修改——>删除

    修改——>修改——>修改 (连续修改测试)

    修改——>增加 (新增加的内容与修改前内容一致)

    修改——>删除

    修改——>删除——>增加 (新增加的内容与删除内容一致)

    删除——>删除——>删除 (连续删除测试)

    11)查询功能分为两种情况,验证操作结果。

    一、打开页面时自动显示结果,则不特别强调;

    二、需要手工操作进行查询,则每次在其他功能完成后进行。

    4 提示信息

    1 成功、失败提示

    2 操作结果提示

    3 确认提示

    4 危险操作、重要操作提示

    5 返回页面 提示后显示的页面

    5 容错性

    注意以下几种情况

    1 为空、非空

    2 唯一性

    3 )字长、格式

    4 数字、邮政编码、金额、电话、电子邮件、ID号、密码

    5 日期、时间

    6 特殊字符 (对数据库)英文单、双引号,&符号

    6 权限部分

    功能权限: 指定用户可以使用哪些功能,不能使用哪些功能

    数据权限: 指定用户可以处理哪些数据,不可以处理哪些数据。可以合并到功能测试

    操作权限: 在逻辑关系上,操作前后顺序、数据处理情况。可以合并到功能测试

    权限变化: 可以合并到功能测试

     

    1 功能权限是否存在

    2 )功能权限是否正确

    3 数据权限是否存在

    4 数据权限是否正确

    5)操作权限是否存在

    6 操作权限是否正确

    7 引起权限变化的功能列表

    8 功能权限变化还是数据权限变化,或两者兼有

    9 权限变化是否正确

     

    7 键盘操作

    1 Tab键的使用

    2 上下方向键的使用

    3 Enter键的使用

    4 系统设定快捷键的使用(如果设置有快捷键)

     

    8 测试中还应注意的其他事项

    6 完整性:是否是一个整体,没有功能缺损

    7 易用性:使用是否方便

    8 一致性:类似的问题用类似的方法处理

    9 提示信息:提示信息是否完整、正确、详细

    10 帮助信息:是否提供帮助信息,帮助信息的表现形式(页面文字、提示信息、帮助文件),帮助信息是否正确、详细

    11 兼容性:包括操作系统兼容和应用软件兼容,可能还包括硬件兼容

    12 可扩展性:是否由升级的余地,是否保留了接口

    13 稳定性:运行所需的软硬件配置,占用资源情况,出现问题时的容错性,对数据的保护

    14 运行速度:运行的快慢,带宽占用情况

     

    有几点:

    1.功能点测试:是否满足需求所要求的功能

    2.字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.

    3.字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.

    4.标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.

    5.中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.

    6.信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.

    7.界面测试:界面的正确性、一致性、友好性、易用性。

     

    用户界面测试是从最终的使用者用户的角度来看软件,软件难以理解,不易使用就是软件缺陷。可以从以下几个方面重点来检查用户界面:

    1.易用性检查:确保软件易于理解,方便使用。

    2.一致性检查:

    a.注意系统页面的风格是否一致,如字的大小、颜色、字体要相同。

    b.提示信息的表达方式是否一致。

    c.按钮排列顺序是否一致。

    d.back, cancel等按钮跳转页面处理是否一致。

    e.各字段的名称,位置、长度、类型是否和设计文档要求一致,如Employee NoLoginName不一致。

    3.正确性检查:检查页面上的form, button, table, header, footer,提示信息,还有其他文字拼写,句子的语法等是否正确。

    4.友好性检查:

    a.提示信息是否友好.

    b.系统应该在用户执行错误的操作之前提出警告,提示信息.

    c.页面分辨率检查,在各种分辨率浏览系统检查系统界面友好性。

    5.合理性检查:做delete, update, add, cancel, back等操作后,查看信息回到的页面是否合理。

    6.检查本地化是否通过:英文版不应该有中文信息,英文翻译准确,专业。

    7.页面最大化检查:测试最大化/最小化/还原时页面是否做了对应的处理。
  • 经典的SQL语句

    2007-11-16 10:59:10Top 1 Digest 1

    1. 行列转换--普通

    假设有张学生成绩表(CJ)如下
    Name    Subject     Result
    张三    语文        80
    张三    数学        90
    张三    物理        85
    李四    语文        85
    李四    数学        92
    李四    物理        82

    想变成    
    姓名   语文   数学   物理
    张三   80     90     85
    李四   85     92     82

    declare @sql varchar(4000)
    set @sql = 'select Name'
    select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
    from (select distinct Subject from CJ) as a
    select @sql = @sql+' from test group by name'
    exec(@sql)

    2. 行列转换--合并

    有表A,
    id pid
    1   1
    1   2
    1   3
    2   1
    2   2
    3   1
    如何化成表B:
    id pid
      1  1,2,3
      2  1,2
      3  1

    创建一个合并的函数
    create function fmerg(@id int)
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+cast(pid as varchar) from 表A where id=@id set @str=right(@str,len(@str)-1)
    return(@str)
    End
    go

    --调用自定义函数得到结果
    select distinct id,dbo.fmerg(id) from 表A

    3. 如何取得一个数据表的所有列名

    方法如下:先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。
    SQL语句如下:
    declare @objid int,@objname char(40)
    set @objname = 'tablename'
    select @objid = id from sysobjects where id = object_id(@objname)
    select 'Column_name' = name from syscolumns where id = @objid order by colid

    是不是太简单了? 呵呵 不过经常用阿.

    4. 通过SQL语句来更改用户的密码

    修改别人的,需要sysadmin  role    
    EXEC  sp_password  NULL,  'newpassword',  'User'

    如果帐号为SA执行EXEC  sp_password  NULL,  'newpassword',  sa  

    5. 怎么判断出一个表的哪些字段不允许为空?

    select  COLUMN_NAME  from  INFORMATION_SCHEMA.COLUMNS  where  IS_NULLABLE='NO'  and  TABLE_NAME=tablename  

    6. 如何在数据库里找到含有相同字段的表?
    a. 查已知列名的情况
    SELECT  b.name  as  TableName,a.name  as  columnname  
    From  syscolumns    a  INNER  JOIN    sysobjects  b    
    ON  a.id=b.id    
    AND  b.type='U'    
    AND  a.name='你的字段名字'  

    b. 未知列名查所有在不同表出现过的列名
    Select  o.name  As  tablename,s1.name  As  columnname  
    From  syscolumns  s1,  sysobjects  o  
    Where  s1.id  =  o.id  
       And  o.type  =  'U'  
       And  Exists  (  
           Select  1  From  syscolumns  s2    
           Where  s1.name  =  s2.name    
           And  s1.id  <>  s2.id  
           )

    7. 查询第xxx行数据

    假设id是主键:  
    select  *  
    from  (select  top  xxx  *  from  yourtable)  aa  
    where  not  exists(select  1  from  (select  top  xxx-1  *  from  yourtable)  bb  where  aa.id=bb.id)
      
    如果使用游标也是可以的  
    fetch  absolute  [number]  from  [cursor_name]  
    行数为绝对行数

    8. SQL Server日期计算
    a. 一个月的第一天
    SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0)  
    b. 本周的星期一
    SELECT  DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0)
    c. 一年的第一天
    SELECT  DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)  
    d. 季度的第一天
    SELECT  DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)  
    e. 上个月的最后一天
    SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0))  
    f. 去年的最后一天
    SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0))
    g. 本月的最后一天
    SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0))  
    h. 本月的第一个星期一
    select  DATEADD(wk,  DATEDIFF(wk,0,                                                          
                                   dateadd(dd,6-datepart(day,getdate()),getdate())        
                                                                                                     ),  0)      
    i. 本年的最后一天
    SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate())+1,  0))。

    转贴:
    SQL SERVER 与EXCEL的数据转换
    1、在SQL SERVER里查询Excel数据:
    -- ======================================================
    SELECT *
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

    下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
    SELECT *
    FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------

    2、将Excel的数据导入SQL server :
    -- ======================================================
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

    实例:
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------

    3、将SQL SERVER中查询到的数据导成一个Excel文件
    -- ======================================================
    T-SQL代码:
    EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式

    实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'

    EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'

    在VB6中应用ADO导出EXCEL文件代码:
    Dim cn As New ADODB.Connection
    cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
    cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
    -------------------------------------------------------------------------------------------------

    4、在SQL SERVER里往Excel插入数据:
    -- ======================================================
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

    T-SQL代码:
    INSERT INTO
    OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
    'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
    (bestand, produkt) VALUES (20, 'Test')

  • SQL语句的添加、删除、修改

    2007-11-16 10:50:33Top 1 Digest 1

    添加、删除、修改使用db.Execute(Sql)命令执行操作
    ╔----------------╗
     数据记录筛选 
    ╚----------------╝
    注意:单双引号的用法可能有误(没有测式)

    Sql = "Select Distinct 
    字段名 From 数据表"
    Distinct
    函数,查询数据库存表内不重复的记录

    Sql = "Select Count(*) From 
    数据表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
    count
    函数,查询数库表内有多少条记录,字段名1”是指同一字段
    例:
    set rs=conn.execute("select count(id) as idnum from news")
    response.write rs("idnum")

    sql="select * from 
    数据表 where 字段名 between 1 and 2" 
    Sql="select * from 
    数据表 where 字段名 between #2003-8-10# and #2003-8-12#"
    在日期类数值为2003-8-10 19:55:08 的字段里查找2003-8-102003-8-12的所有记录,而不管是几点几分。

    select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
    字段里面的数据格式为:2003-8-10 19:55:08,通过sql查出2003-8-102003-8-12的所有纪录,而不管是几点几分。


    Sql="select * from 
    数据表 where 字段名=字段值 order by 字段名 [desc]" 

    Sql="select * from 
    数据表 where 字段名 like '%字段值%' order by 字段名 [desc]" 
    模糊查询

    Sql="select top 10 * from 
    数据表 where 字段名 order by 字段名 [desc]" 
    查找数据库中前10记录

    Sql="select top n * form 
    数据表 order by newid()"
    随机取出数据库中的若干条记录的方法
    top n
    n就是要取出的记录数

    Sql="select * from 
    数据表 where 字段名 in ('1','2','3')"

    ╔----------------╗
     添加数据记录 
    ╚----------------╝
    sql="insert into 
    数据表 (字段1,字段2,字段3 …) valuess (1,2,3 …)" 

    sql="insert into 
    数据表 valuess (1,2,3 …)" 
    不指定具体字段名表示将按照数据表中字段的顺序,依次添加

    sql="insert into 
    目标数据表 select * from 源数据表
    把源数据表的记录添加到目标数据表

    ╔----------------╗
     更新数据记录 
    ╚----------------╝
    Sql="update 
    数据表 set 字段名=字段值 where 条件表达式

    Sql="update 
    数据表 set 字段1=1,字段2=2 …… 字段n=n where 条件表达式

    Sql="update 
    数据表 set 字段1=1,字段2=2 …… 字段n=n " 
    没有条件则更新整个数据表中的指定字段值

    ╔----------------╗
     删除数据记录 
    ╚----------------╝
    Sql="delete from 
    数据表 where 条件表达式

    Sql="delete from 
    数据表
    没有条件将删除数据表中所有记录)

    ╔--------------------╗
     数据记录统计函数 
    ╚--------------------╝
    AVG(
    字段名得出一个表格栏平均值 
    COUNT(*|
    字段名对数据行数的统计或对某一栏有值的数据行数统计 
    MAX(
    字段名取得一个表格栏最大的值 
    MIN(
    字段名取得一个表格栏最小的值 
    SUM(
    字段名把数据栏的值相加 

    引用以上函数的方法: 
    sql="select sum(
    字段名) as 别名 from 数据表 where 条件表达式
    set rs=conn.excute(sql) 
     rs("别名") 获取统的计值,其它函数运用同上。 

    ╔----------------------╗
     数据表的建立和删除 
    ╚----------------------╝
    Create TABLE 
    数据表名称(字段类型1(长度),字段类型2(长度) …… ) 
    例:Create TABLE tab01(name varchar(50),datetime default now()) 
    Drop TABLE 
    数据表名称 (永久性删除一个数据表

    ╔--------------------╗
     记录集对象的方法 
    ╚--------------------╝
    rs.movenext 
    将记录指针从当前的位置向下移一行 
    rs.moveprevious 

  • 使用TestDirector8的测试步骤

    2007-11-08 16:50:54Top 1 Digest 1

    1、检查应用程序,以确定测试范围包括测试目标,测试策略。

    2、构建Requirements Tree以定义全部的测试需求。

    3、为需求树中的每个需求创建详细的测试需求列表。描述每一个需求,为之分配优先级,必要时添加附件。

    4、生成报告和图表以助于分析测试需求。复审需求以确保该需求适宜测试范围。

    5、检查应用程序、系统环境和测试资源以确定测试目标。

    6、将应用程序划分为模块或功能以备测试。构建Test Plan Tree,将应用程序层次性的划分为测试单元或主题。

    7、为每个模块确定你所需要的测试类型。向Test Plan Tree中的每个测试添加基本定义。

    8、每一个测试连接到相应的一个或多个需求。

    9、在TestPlan Tree中,通过为测试添加测试步骤开发手度。测试步骤描述了每一个测试的测试操作、需要检查的点和预期结果。然后确定哪些测试需要被自动化。

    10、通过使用Mercury Interactive的测试工具或者定制的测试工具、第三方测试工具为你所决定的需要自动化的测试创建测试脚本。

    11、生成报告和图表以助于分析测试计划数据。复审测试以确定该测试适宜测试目标的程度。

    12、定义多个测试集以用于在项目中达到各种各样的测试目标。确定在每个测试集中包括哪些测试 。

    13、确定测试执行的时间并给测试人员分配任务。

    14、在相应的测集中自动或手式执行测试。

    15、查看测试运行的结构以确定是否在应用程序中发现了缺陷。生成报告和图表以且于分析测试运行结果。

    16、报告在应用程序中检测到的缺陷。项目相关人员可以在测试过程中的何意阶段添加缺陷。


    17、复审新缺陷并且确定哪些缺陷应当被修复。


    18、改正那些需要修复的缺陷。

    19、测试新创建的应用程序。继续以上过程直到被修复。


    20、生成报告和图表以助于分析缺陷修复的过程,还可以帮助确定何时发布相应的程序。

  • 软件功能性测试21个故障模型(15-21) 转自51testing

    2007-11-06 12:22:22Top 1 Digest 1

     15     数据共享或关联功能计算错误

    151缺陷产生原因

    通常对孤立的功能进行测试时不会发生很多缺陷,而当把单独的功能和同一软件中的其它功能结合时,就可能出现很多软件缺陷。这种缺陷的产生往往是在两个或更多的功能使用了共享数据集,而每个功能允许使用的数据范围不同引起的。例如,一个功能可能会将某数据项设置为特定大小,然而另一个功能却允许该数据项的大小可以超过第一个功能的处理能力。开发人员根本没考虑到该数据项在其它功能处也可以修改,他们只是编码保证在该功能中数据的合法性,而当使用该数据时,没有再编码来检查可以使用的范围;而此时,另一个功能修改了共享数据,当再使用这些数据时就产生了缺陷。

     152如何发现这类问题

    当应用程序在同一时间完成一个以上的功能或当一个以上的功能在同一时间处于运行状态时,就可以使用该方法进行测试。利用一个功能影响输入、输入数据或另一个功能的计算。在测试前要确定哪些功能是相互依赖或共享数据的:

    Ø         能应用同样输入的每个功能。如果这些功能有相互重叠的输入域,就可能存在交互问题。

    Ø         有类似的输出产生功能。如果某些功能结合起来产生单个输出,就说明这些部件之间存在关系,应该被一起测试。

    Ø         一个功能被包含在另一个功能的计算中。例如要测试鼠标选取对象的功能,不仅要测度鼠标选取屏幕上的文本的功能,还可以把包含超链接文本、粗体、斜体、符号及图形元素放在一起,测试鼠标选取这些元素的功能。

    153测试方法小结

    Ø         应用场合:一个以上的功能在同一时间处于运行状态。

    Ø         测试方法:以点代面,重点测试某一功能,对可能与这个功能相连的其它功能附带测试。

    Ø         测试知识储备:全面掌握被测软件的需求,在测试之前对被测功能之间的依赖关联有所掌握,另外还需要对共享数据有所掌握。

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

    16     文件系统超载

    161缺陷产生原因

    开发人员可能会忘记编写代码处理满状态的文件系统,忽略了诸如CreateFileWriteFile等操作系统API的错误检查代码,没有这样的代码,当显示满状态的文件系统时,API调用就会失败,软件就会在没有任何警告的情况下崩溃。

             162如何发现这类问题

    创建满容量或近乎满容量的文件系统,然后强制执行各种通过输入或输出访问文件系统的操作;或者打开足够多的文件,打开文件时会强制备份创建的副本,从而占用双倍的存储空间,这种操作达到一定程度时,会达到该系统的容量,于是就能测试应用程序处理超载状态的文件系统的能力。(通常通过磁盘配额实现)

             163测试方法小结

    Ø         应用场合:系统较大,运行时需要较大的空间。

    Ø         测试方法:强制磁盘系统满容量或容量小于等于被测软件运行时所需容量后,运行被测软件或利用测试工具模拟磁盘状况。

    Ø         测试知识储备:全面掌握被测软件的需求,了解被测软件处理超载状态的文件系统的能力。

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

    17     介质忙或不可用

    171缺陷产生原因

    当多个应用程序同时访问硬盘(或其它存储器),操作系统为提供多请求服务会慢下来,并且必须对应用程序进行编程以处理这些延迟,当延迟变得很长时,没有对这些错误进行响应的应用程序就会出现错误。

              172如何发现这类问题

    通过启动大量应用程序,强制它们都打开并保存文件使文件系统处理繁忙状态;或者同时下载大量文件也可以使后台拥挤;检查被测软件能否正确处理这种情况,应用程序应该给出错误信息或等待批示,提示用户正在处理。

              173测试方法小结

    Ø         应用场合:应用程序的运行需要消耗大量内存或运行时需要其它相关软件同时运行。

    Ø         测试方法:启动大量程序或利用测试工具模拟磁盘状况。

    Ø         测试知识储备:全面掌握被测软件的需求,了解被测软件运行时对系统的要求。

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

    18     介质损坏

    181缺陷产生原因

    Ø         损坏的介质可能会使操作系统传回错误代码,这些错误代码没有在应用程序中编程处理。

    Ø         操作系统不能检测出所有这样的错误,操作系统自己也有错误或者损坏的介质损坏了部分操作系统。

     182如何发现这类问题

    使用损坏了的介质,例如,刮伤、灰尘、磁干扰等。检查应用程序对错误的处理能力,应用程序可以对错误进行处理或者将问题告诉用户,并要确保用户数据文件不丢失、为损坏。

              183测试方法小结

    Ø         应用场合:应用程序对安全的要求较高,对灾难恢复的要求较高。

    Ø         测试方法:用实际损坏介质的方法测试应用程序。

    Ø         测试知识储备:全面掌握被测软件的需求,了解被测软件运行时对系统的要求。

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

    19     文件名不合法

    191缺陷产生原因

    操作系统本身具有自己的文件命名规范,例如,Dos8.3格式。在Windows中,文件名不能超过255个字符,并且文件名不可以含有/ \ : < > ? * | 8个字符,以及AUXCOM1COM2COM3COM4CONLPT1LPT2LPT3LPT4NULPRN这些操作系统保留字。

    开发人员在应用程序中使用不相同的规则管理文件名,当应用程序和操作系统使用的文件名命名规则不一致的时候,就会发生问题。

              192如何发现这类问题

    Ø         保存文件为操作系统不允许的文件名,例如,文件名中含有/ \ : < > ? * | 8个字符,测试应用程序是否不允许输入包含这些字符的文件名。

    Ø         输入一些应用程序不允许使用的文件名,例如,使用过长的、含有特殊字符的、可能相互作用的字符作为文件名,检查应用程序能否识别该文件。

      193测试方法小结

    Ø         应用场合:几乎所有涉及需要输入文件名功能的应用程序。

    Ø         测试方法:输入操作系统不允许的文件名和应用程序不允许使用的文件名。

    Ø         测试知识储备:全面掌握被测软件的需求,了解操作系统和应用程序对文件名的要求。

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

    20     更改文件访问权限

    201缺陷产生原因

    在操作系统中,可以设置不同用户对不同的文件具有不同的访问权限(如读写、只读等)。程序员必须在访问文件的函数中考虑文件的访问权限,例如在每个文件写入之前检查文件的访问权限。如果没有进行检查,就会导致程序出错。另外,如果文件访问失败,程序员必须要有正确的错误的代码,以保证程序可以正确捕获所产生的错误。

             202如何发现这类问题

    Ø         打开两个应用程序,关闭同一个文件。例如,把同一个应用程序的不同版本安装在同一机器上,在不同版本的应用程序中打开和关闭同一文件,或试着在某个应用程序中打开在另一个程序中已打开的文件,这可能导致文件访问权限的冲突。

    Ø         打开一个文件,在操作系统中修改文件的访问权限。有些操作系统允许权限高的用户控制一般用户已经打开的文件。

    203测试方法小结

    Ø         应用场合:需要对文件进行读写操作的应用程序。

    Ø         测试方法:修改文件访问权限或使用低权限的用户访问文件。

    Ø         测试知识储备:全面掌握被测软件的需求,了解读写文件所需的权限。

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

    21     文件内容受损

    211缺陷产生原因

    开发人员编写代码来读取和写入文件,他们也编写代码来调用系统API得到文件指针,并打开和关闭文件。由于某些原因,这些系统API会失败或传回异常返回值。如果开发人员没有编写代码来验证传回的预期返回值,则应用程序会由于无法处理异常而失败。

             212如何发现这类问题

    Ø         手工损坏文件。从应用程序已创建的某个完整文件开始对其进行编辑,改变文件格式和内容。

    Ø         使用测试工具。模拟CRC(循环冗余校验)错误,或强制文件API返回无效的返回码。

    213测试方法小结

    Ø         应用场合:需要对文件格式和内容进行校验的应用程序。

    Ø         测试方法:手工损坏文件或利用测试工具模拟CRC错误。

    Ø         测试知识储备:全面掌握被测软件的需求,了解文件读写需要的权限。

  • 软件功能性测试21个故障模型(8-14) 转自51testing

    2007-11-06 12:20:52Top 1 Digest 1

    8         输出属性修改后的结果

    81缺陷产生原因

    输出常常具有可修改的属性,如颜色、形状、维数及大小等,用户可以修改这些属性。
    在这种情况下,开发人员必须编码、设立初始或默认属性值,然后编码允许用户编辑
    这些属性。当用户改变了这些属性后,内部的相应变量值也随着变化,再次进行处理时,
    这些值没有被重新恢复为默认值,输出的属性就被强制改变了。

              82如何发现这类问题

    测试方法可以使用在那些输出具有可编辑性、可修改性的功能中。测试人员首先要
    仔细了解能够产生的输出,特别要注意具有可编辑属性的输出。测试人员的任务就是
    强制每个输出产生,并编辑其属性,然后再次强制输出产生。

              83测试方法小结

    Ø         应用场合:输出的结果,可以由用户修改属性得出。

    Ø         测试方法:强制每个输出产生,并编辑其属性,然后再次强制产生输出。

    Ø         测试知识储备:全面理解需求规格说明书中的内容,了解能够产生的输出。

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

    9         屏幕刷新显示

    91缺陷产生原因

    通常GUI软件会产生刷新问题,因为GUI在对窗口进行覆盖、移动和调整大小时,必须
    刷新屏幕才能使对象重新显示。但是如果经常刷新,容易减慢应用程序的运行速度;
    如果不刷新,又会影响用户对程序的使用,使用户必须停止工作,去寻找刷新的方法
    才可以继续工作。所以开发人员有时候不能很好地确定什么时候需要刷新,需要刷新
    多大范围的区域,这就发生了令人烦恼的刷新问题。

             92如何发现这类问题

    测试刷新问题的方法是增加、删除称移动屏幕上的对象,这样会使某些对象重新显示。
    如果不能正确、及时地进行重新显示,就产生了软件缺陷。我们可以通过以下几个方法
    来检查刷新:

    Ø         从起始位置移动对象。先移动一点,然后增加移动幅度;先移动一次或两次,
    然后多次移动,确保覆盖了所有区域。

    Ø         从覆盖对象的边界开始一点点覆盖,使其中一个对象遮住别一个对象。

    Ø         使用不同类型的对象。如果应用程序支持多种类型的对象,如文本对象、图形
    对象等,就把这些不同对象混在一起使用。

    93测试方法小结

    Ø         应用场合:一个对象包含在另一个对象中,拖动被包含对象时,可能出现刷新问题。

    Ø         测试方法:增加、删除和移动屏幕上的对象。

    Ø         测试知识储备:全面理解需求规格说明书中的内容,了解程序中对象之间的关系。

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

    10     数据结构溢出

    101缺陷产生原因

    所有数据结构的大小都有上限。一些数据结构会逐步增加长度以充满机器内存容量或

    磁盘空间,而其它数据结构具有固定的上限。开发人员经常对有关数据结构的内容
    进行编码,忘记结构本身的物理局限。

              102如何发现这类问题

    Ø         确定数据结构的界限,尝试将过多的值输入数据结构。应该特别注意界限为
    数据类型的边界
    256102432768等上溢的测试。

    Ø         对于下溢的测试,可以尝试多删除一个数据,例如当结构为空时,尝试再删除,
    或者添加一个数据,尝试删除两个数据时的情况。

     103测试方法小结

    Ø         应用场合:程序中存在数组。

    Ø         测试方法:尝试将过多的值输入数据结构,测试上溢;对于下溢的测试,
    可以尝试多删除一个数据。

    Ø         测试知识准备:全面理解需求规格说明书中的内容,确定数据结构的界限。

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

    11     数据结构不符合约束

    111缺陷产生原因

    在编程过程中对内部数据结构都有所约束,包括大小、维数、类型、形状、屏幕
    上的位置等。我们测试的重点就是用户能够设置的属性,这些属性使用了一组参数
    来约束。在建立数据项和随后对数据项进行修改的任何时刻都要对数据属性的约束
    进行检查。初始化代码中修改后的代码有错误,在修改错误的时候只修改了初始化
    部分,而忽略了对其他部分的修改,使得其修改不完全,不彻底。

             112如何发现这类问题

    Ø         确认候选数据,并列出其可修改的属性。对每个属性列出有效值的允许范围、约
    束的条件等。

    Ø         确定所有可修改属性的功能位置。

    Ø         对数据进行初始化,改变每个属性以确定是否正确进行了约束。

    如果数据约束遭到破坏,可能导致系统崩溃,或者表现为响应时间延迟,错误信息
    不正确以及使用错误数据产生的无效输出。

             113测试方法小结

    Ø         应用场合:应用程序内部的数据结构存在约束。

    Ø         测试方法:破坏内部数据结构的约束。

    Ø         测试知识储备:全面理解需求规格说明书中的内容,确定内部数据结构的所有约束。

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

    12     操作数与操作符不符

    121缺陷产生原因

    几乎每个运算符都有它无效的操作数,对于具体的操作符,开发人员在使用它们时,

    必须编写错误检查代码。例如:除以零的问题。

             122如何发现这类问题

    找到程序中包含的数据或输入(即操作数)的计算(即操作符)、数学表达式(即操
    作符和操作数的组合)及对图形的操作。另外,对多个操作数进行组合也更容易发生
    错误。例如,字符和数字都可以使用“
    +”操作符。对字符通过“+”把它们连成一串;
    对数字通过“
    +”来进行加法运算。如果系统尝试把字符和数字相加,即进行相互矛盾
    的操作,就会引起软件失效。

             123测试方法小结

    Ø         应用场合:需要进行数值计算的程序或图形操作的程序。

    Ø         测试方法:对于数值计算考虑操作数和操作符之间的限定关系,对于图形计算还
    要考虑各种输入数据之间的组合关系。

    Ø         测试知识储备:全面掌握被测软件中操作符对操作数的要求。掌握不同的操作符
    和操作数具有的不同的有效和无效的取值范围。

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

    13     递归调用自身

    131缺陷产生原因

    函数有时会递归调用自身,如果不限制执行次数,递归就会出现问题,它不断地调用自
    身,很快地占用机器资源,最终产生溢出,使程序崩溃或挂起。产生这类问题的主要原
    因是开发人员没有编码来保证循环和递归调用的终止,通常是在循环的开始或结束时缺
    少检查条件。

             132如何发现问题

    在软件中寻找可以使用递归调用的功能。这时可以制作一个列表,标明软件中可能嵌入
    递归的功能的列表,然后自己引用自己来检查程序是否能正确处理。

             133测试方法小结

    Ø         应用场合:需要和其它对象进行交互的地方。

    Ø         测试方法:考虑对象的自我交互或复制。

    Ø         测试知识储备:全面掌握被测软件的需求。

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

    14     计算结果溢出

    141缺陷产生原因

    当所有的输入和数据都有效时,计算的最终结果也可以是无效的。所有变量都有值域范
    围,有时开发人员在执行计算时会忘记检查这些上限。

             142如何发现这类问题

    一次又一次地执行计算或使用很大或很小的输入和数据进行计算,重点测试数据类型的
    初始值或边界值附近的值。

             143测试方法小结

    Ø         应用场合:应用程序执行能够导出待产生结果并进行内部存储的计算。

    Ø         测试方法:强制数据产生上溢或下溢。

    Ø         测试知识储备:全面掌握被测软件的需求,了解计算变量的上下限。

  • 软件功能性测试21个故障模型(1-7) 转自51testing

    2007-11-06 12:18:45Top 1 Digest 1

    软件功能性测试21种故障模型(1-7)

    测试的目标是要发现错误,因此在编写测试用例的时候也要遵循这个目标,尽量在软件的最薄弱环节多编写测试用例。虽然测试时有很多单个输入变量、多个输入变量的组合,但优秀的软件测试人员不会依靠运气,他们有着丰富的经验和直觉,可以从中找到哪些是需要进行测试的,哪些不需要测试,哪些操作可能会引起软件失效。把这些测试人员的经验和直觉尽量归纳和固化,就形成了一些故障模型。故障模型指明了故障是如何以及为什么会在软件执行时引起软件失效。在测试过程中,我们可以按照这些故障模型所提供的缺陷类型和寻找该类缺陷的方法找到尽量多的缺陷。

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

    1         输入非法数据

    11缺陷产生原因

           开发人员通常用以下3技术来处理非法输入:

    Ø         防止不正确的输入进入被测软件。过滤掉不正确的输入,只允许合法输入通过界面。

    Ø         输入了不正确的数据后,软件提示错误信息,拒绝不正确的输入。

    Ø         允许不正确的输入进入系统并进行处理,软件失效时调用异常处理程序,显示一些错误信息。

    可见开发人员除了编写主要的功能代码外,还必须编写对非法输入的检查代码,这些代码经常被遗忘,或者编写完这部分代码后,开发人员很少认真检查,导致处理非法输入经常出错。

           12如何发现这类问题

                  进行测试时从输入值的属性出发,一般考虑以下三点:

    Ø         输入类型:键入无效的类型常会产生错误信息。

    Ø         输入长度:对于字符型,键入太多的字符常会引出错误信息。

    Ø         边界值:输入边界值或超过边界值的数据。

    13测试方法小结

    Ø         应用场合:GUI的输入。

    Ø         测试方法:分别从输入数据的类型、长度、边界值等方面进行考虑。

    Ø         测试信息检查:

    l         错误信息和错误要一致。

    l         错误信息的内容为空,用户不知道为什么出错。

    l         显示的错误信息是给开发人员调试使用的,例如“Error 5-unknown data”,开发人员可以通过该信息很容易找到错误类型,但是用户根本不明白,不知道做错了什么。

    Ø         测试知识储备:牢记各基本数据类型的边界值。

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

    2         输入默认值

    21缺陷产生原因

    一旦软件中使用了变量,就必须赋给初始值,如果在赋值之前就使用了这些变量,软件就会失效,正确地使用变量的顺序是:声明变量à给变量赋值à使用变量。通常会由于以下两个原因使变量的默认值不正确:

    Ø         给变量赋值这一步经常会被开发人员不经意地路过。

    Ø         开发人员有时不确定到底要赋什么初始值,就随便给了一个值,但用户并不认可该值,这种情况下,软件并不一定会失效,但对用户的使用会带来很多不便。例如某程序把打印默认输出份数设置为2份,会给用户造成很大麻烦。

    22如何发现这类问题

           确定应用软件中所使用的数据有以下一些基本原则:

    Ø         查找选项按钮、配置面板、安装屏幕等。这种屏幕上显示的数据常常在应用程序的许多地方用到。

    Ø         查阅源代码的数据声明部分(如果可以得到)。

    Ø         确定了要测试的数据,可以通过以下操作来强制使用或不使用默认的值:

    l         接受软件显示的默认值。有时软件需要用户输入一个值,如果没有输入任何值,软件就可能失效。这时可以只是简单的单击“确定”按钮来接受默认值,完成这个功能测试

    l         键入空值。删掉默认值,使输入域变成空值。

    l         将默认值改为另一个值,这样会使应用程序以不同的值来运行。

    l         将输入值改为另一个值,然后再变以空值。

    一个好的软件会这样处理以上情况,将输入的不合法内容默认为合法边界内的某个合理值,或者返回错误提示信息。

           23测试方法小结

    Ø         应用场合:需要有默认值的地方。

    Ø         测试方法:分别从选项按钮、配置面板、安装配置、开始界面等方面进行考虑,强制使用或不使用默认值等。

    Ø         测试知识储备:全面理解需求规格说明书中对默认值的要求;同时深刻理解被测软件的行业背景。

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

    3         输入特殊字符集

    31缺陷产生原因

           应用程序接受字符串输入,如果程序没有针对特殊输入进行特殊编程,那么就有可能导致程序

       挂起,主要包括以下3种情况:

    Ø         字符集包括普通字符和特殊字符。例如,ASCII字符集包括普通字符和特殊字符。应用程序有时只能处理普通字符,当输入特殊字符时就会出现错误。

    Ø         实现应用程序的程序设计语言有特定的处理一些字符和字符串的方法。例如,C语言把\n++&这样的字符用于特殊目的。如果将这些字符串键入到对话框中,程序必须进行错误处理,否则容易产生错误。

    Ø         应用程序有时也使用设置名称、系统对象和程序的保留字符串集合。只要在程序中使用了这些字符串,就可能导致失效。

    32如何发现这类问题

    Ø         根据被测软件所处的操作系统、使用的程序设计语言、字符集等信息列出表格,通过测试小组的讨论,标明应用表格中的哪些字符和数据类型作为输入来测试。

    Ø         根据经验,软件很少会因为这种操作而崩溃,通常它会挂起没有响应。

    33测试方法小结

    Ø         应用场合:需要接受字符输入的地方。

    Ø         测试方法:根据被测软件的具体情况输入非法字符。

    Ø         测试知识储备:尽可能多地了多地了解字符集、程序设计语言和操作系统中的保留字符串及其特定含义,可以使我们更好地分辨这类缺陷。

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

    4         输入使缓冲区溢出的数据

    41缺陷产生原因

    开发人员没有考虑传送给内存缓冲区的字符串的大小。如果缓冲区只能保留固定长度的字符串,输入更长的字符串就会改写其他的内存存储单元,引起操作系统强制性地终止应用程序。

             42如何发现这类问题

                      当应用程序允许输入字母、数字时,通过GUI控件(如文本框),或者通过API调用的参数来进行这种测试。

    Ø         首先弄清楚要测试的输入域的长度,输入最大字符串测试。

    Ø         输入一个比最大字符串长的字符串,应用程序可能出现错误提示信息,提示不允许输入;或者输入了更长的字符串使应用程序崩溃。

    43测试方法小结

    Ø         应用场合:需要接受字符输入的地方。

    Ø         测试方法:根据被测软件的具体情况输入最大字符串或输入一个比最大字符串更长的字符串。

    Ø         测试知识储备:尽可能多地和开发人员讨论,以了解和确定输入域的合理长度。

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

    5         输入产生错误的合法数据组合

    51缺陷产生原因

    测试多个输入值的组合,每个输入值已被单独测试过,但是这些值的组合可能会互相影响而引起软件失效。

             52如何发现这类问题

    首先要确定测试哪些输入组合,并弄清楚它们之间的“关系”。如果具备以下任一特性,就可以认为这些变量是有“关系”的。

    Ø         描述的是有关单个内部数据结构的属性和内容。例如,输入面板需要用户输入列表的“行”和“列”,这时测试人员要输入单个内部数据结构“列表”的属性“行和列”。

    Ø         一起用在了一个计算中,也就是将多个输入用做一个内部计算的操作数,因此这些输入变量具有了相互“关系”。

    53测试方法小结

    Ø         应用场合:输入值之间存在依赖关系。

    Ø         测试方法:输入可能是存在问题的组合值。

    Ø         测试知识储备:尽可能多的内部数据结构的属性和内容,并与开发人员探讨,以确定输入的数据值。

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

    6         产生同一个输入的各种可能输出

    61缺陷产生原因

    单个输入产生多种输出的情况与先前的输入和被测系统的状态都有关系。例如,在文字处理程序中单击“关闭”按钮,如果文件被编辑且未被保存,程序将提示是否保存文件。如果文件已被保存过,则文件直接关闭。

             62如何发现这类问题

    测试人员必须具有关于被测系统软件的业务方面的知识,具备各种程序文档,明确一个输入可以产生何种输出。我们可以据此列出关于程序输入与输出的一个列表,然后进行测试。

             63测试方法小结

    Ø         应用场合:同一输入对应多个输出的情况。

    Ø         测试方法:测试输入对应的每一个输出。

    Ø         测试知识储备:全面理解需求规格说明书中的内容,找出输入与输出之间的关系。

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

    7         输出不符合业务规则的无效输出

    71缺陷产生原因

    有时开发人员也可能对业务了解不深刻,对有些问题也是一知半解,因此编写出的软件就会产生不符合业务逻辑的问题。另外在绝大多数情况下开发人员会忽略处理没有遵循一般规则的输入,如果不对这些特殊情况进行编程处理,软件就会产生错误的结果。

             72如何发现这类问题

    Ø         测试人员应该尽可能地学习的涉及问题的领域。

    Ø         有时在列举出无效输出后,也很难知道哪些输入组合能强制这些输出产生。这时测试人员必须先要确定哪些输入与输出有关,然后用产生意外结果的输入组合进行测试,测试过程中要注意输入执行顺序,用不同的顺序执行可能得到不同的结果。如果不能强制无效的输出产生,就说明软件没有这方面的缺陷。

    73测试方法小结

    Ø         应用场合:强制产生不符合业务背景的知识。

    Ø         测试方法:列举出所有的无效输出,然后逐一测试。

    Ø         测试知识储备:全面理解需求规格说明书中的内容,熟悉行业背景知识。

  • 10大负面测试用例

    2007-11-05 15:11:03Top 1 Digest 1

     负面测试(Negative testing)是相对于正面测试(Positive testing)而言的。它们也是测试设计时的两个非常重要的划分。简单点说,正面测试就是测试系统是否完成了它应该完成的工作;而负面测试就是测试系统是否不执行它不应该完成的操作。形象一点,正面测试就象一个毕恭毕敬的小学生,老师叫我做什么,我就做什么;而负面测试就象一个调皮捣蛋的孩子,你叫我这样做,我偏不这样做,而且和你对着干。开发人员也是最讨厌修改此类bug的。
            正面测试主要根据需求,功能说明书,设计文档等相关参考文档来执行测试,而负面测试则主要根据错误猜测,逆向思维来测试系统,一定程序上的的依赖测试人员的经验积累。
            执行负面测试时,不单单要测试系统是否处理了用户的异常操作,还要检查系统对于这些异常操作是否给予了正确的错误提示。它是系统对用户进行继续正确操作的指引。
            简言之负面测试的三部曲就是:
    1. 检查程序中的屏幕或页面是否给出了清晰且充分的提示或约束;
    2. 测试系统是否处理了用户的异常操作;
    3. 检查系统的错误提示是否清晰且充分。
     
            以下是Steve Miller的《Top 10 Negative Test Cases》,概括性的提到了一些做负面测试时经常需要注意的测试。
     
            负面测试用例被设计于用软件未意欲被使用的方式测试软件,它也应该是测试工作的一部分。以下就是在设计测试工作量时你应该考虑的10大负面测试用例。
            1.植入的单引号。大多数基于SQL数据库系统在用户存储包含一个单引号的信息时会出现问题,例如John's car。每一个可以接受文字数字型数据条目的屏幕都要试试输入包含一个或多个单引号的文本。
            【Kiki补充】其实不只是单引号,基本上测试人员应该测试所有的特殊字符和空/空格(单纯的空格和文本前后的空格)。单引号,逗号,/,<,>(对于web的应用程序)都是很容易引发错误的。在开发早期测试组就可以建议开发组写一个通用的函数来处理这些特殊字符,然后在处理用户的输入时套用这个函数就可以避免此类错误了。
     
            2.必需输入的数据条目。功能说明书上应该清楚的指出屏幕上必须输入数据条目的字段。测试屏幕上每一个被说明为必须输入的字段以保证它强制要求你在字段中输入数据。
            【Kiki补充】对于强制输入的字段,在屏幕上最好有些标识以说明其为必须输入的字段。一般在字段前或后用红色的*号表示。测试时必须要检查有标识的字段是否和功能说明书或其他参考文档一致,错误信息提示是否正确,强制输入的字段是否真的必须输入。
     
            3.字段类型测试。功能说明书上应该清楚的指出要求特定数据输入要求(日期字段,数字字段,电话号码,邮编等等)的字段。测试屏幕上每一个被指出有特定类型的字段以保证你输入了基于字段类型的符合正确格式的数据(数字型字段应该不允许字符或特殊字符,日期型的字段应该允许输入一个正确的日期等等)
            【Kiki补充】其实这里还有一个字段格式和字段内容的测试。有些字段对输入的格式有要求,这些字段的格式一般在屏幕上也有相应的提示。所以在测试时需要测试提示的格式是否合理(和功能说明书或其他参考文档相一致)以及系统是否正确识别输入的格式。有些字段对字段的内容有限制,如常见的用户名,不能包含特殊字符,首字不能未数字等要求。所以在测试时需要测试提示的格式是否合理(和功能说明书或其他参考文档相一致)还有不符合内容要求的数据输入时系统是否正确的处理。
     
            4.字段长度测试。功能说明书上应该清楚的指出可以在字段中输入的字符数(例如,first name必须是50个或更少的字符)。写测试用例以保证你只可以输入特定的字符数。防止用户输入比允许范围更多的字符比因用户已输入过多的字符而给出的错误信息更加的文雅些。
            【Kiki补充】一般对于限制长度的字段,现在开发大多采用限制输入的方法(设置字段的长度)来处理。所以测试时需要测试限制的长度是否合理(和功能说明书或其他参考文档相一致),对于没有限制长度的字段,要测试无穷输入时是否出错,有问题报bug时建议开发人员根据需要限制长度。
     
            5.数字型的边界测试。对于数字型的字段,测试上下边界是非常重要的。例如,如果你正在计算某个账户的利息时,你永远不会输入一个负的利息数给应该赢取利息的账户。因此,你应该尝试用负数测试。同样,如果功能说明书上要求字段在某一个特定的范围(如从10~50),你就应该尝试输入9或51,它应该给出一个得体的信息表示失败。
     
            6.数字的约束测试。大多数数据库系统和编程语言允许数字条目被识别为整数或长整数。通常,整数的范围是从-32,767~32,767,长整数的范围从-2,147,483,648~2,147,483,647。对于那些没有特定边界限制的数字数据条目,用这些限制测试以确保不会出现数字的溢出错误。
            【Kiki补充】小数型的数字字段同样也需要格外的测试。一般对于未指出数字类型的字段,尝试输入负整数,负小数,0,正整数,正小数进行测试。
            不管是哪种数据库系统,对于数字一般都有多种数字类型。所以测试人员一定要测试的全面。
     
            7.日期边界测试。对于日期型的字段,测试上下边界是很重要的。例如,如果你正在检查一个出生日期的字段,很大可能出生日期不能早于150年前。同样,出生日期应该不是将来的某一天。
            【Kiki补充】一般来说,每种数据库系统的日期都有个范围,如SQL Server最小日期是1753年1月1日,所以如果是输入型的日期字段同样也应该测试早于1753的日期。
     
            8。日期的有效性。对于日期字段,确保不允许无效的日期是很重要的(04/31/2007是一个无效的日期)。测试用例也应该检查闰年(每个第4年和第400年是一个闰年)。
     
            9。web会话测试。很多的web应用程序依赖浏览器的会话来追踪已登录的用户,应用程序的设置等等。应用程序的大多数屏幕不被设计为没有首次登录就可以被运行。应用程序应该确保在打开应用程序的某一页面之前会话里有一个有效的登录。
     
            10.性能的改变。当发布产品的最新版本时,应该有一套运行于识别屏幕(列出信息的屏幕,add/update/delete数据的屏幕等等)速度的性能测试。测试包里应该包括比较先前版本和现有版本性能统计值的测试用例。这个可以帮助识别那些可以证明是随着对现有版本的代码变更而引起的潜在的性能问题。
     
            【Kiki补充】从第一条到第八条是我们在测试字段时常常需要做的测试,一般的测试人员都不陌生。第九条在测试web应用程序中会作为检查应用程序的安全性而做的一项测试。而第十条估计很多公司都不会将它考虑到测试的范畴中,一般最多也就是在测试用例中添加校验某一个操作是否在系统允许的响应时间里,很少去做这样的比较,除了一些有针对性的性能测试。
  • 常用SQL语句大全

    2007-10-24 18:08:26Top 1 Digest 1

    语 句 功 能

      --数据操作

      SELECT --从数据库表中检索数据行和列

      INSERT --向数据库表添加新数据行

      DELETE --从数据库表中删除数据行

      UPDATE --更新数据库表中的数据

      --数据定义

      CREATE TABLE --创建一个数据库表

      DROP TABLE --从数据库中删除表

      ALTER TABLE --修改数据库表结构

      CREATE VIEW --创建一个视图

      DROP VIEW --从数据库中删除视图

      CREATE INDEX --为数据库表创建一个索引

      DROP INDEX --从数据库中删除索引

      CREATE PROCEDURE --创建一个存储过程

      DROP PROCEDURE --从数据库中删除存储过程

      CREATE TRIGGER --创建一个触发器

      DROP TRIGGER --从数据库中删除触发器

      CREATE SCHEMA --向数据库添加一个新模式

      DROP SCHEMA --从数据库中删除一个模式

      CREATE DOMAIN --创建一个数据值域

      ALTER DOMAIN --改变域定义

      DROP DOMAIN --从数据库中删除一个域

    --数据控制

      GRANT --授予用户访问权限

      DENY --拒绝用户访问

      REVOKE --解除用户访问权限

      --事务控制

      COMMIT --结束当前事务

      ROLLBACK --中止当前事务

      SET TRANSACTION --定义当前事务数据访问特征

      --程序化SQL

      DECLARE --为查询设定游标

      EXPLAN --为查询描述数据访问计划

      OPEN --检索查询结果打开一个游标

      FETCH --检索一行查询结果

      CLOSE --关闭游标

      PREPARE --为动态执行准备SQL 语句

      EXECUTE --动态地执行SQL 语句

      DESCRIBE --描述准备好的查询

      ---局部变量

      declare @id char(10)

      --set @id = '10010001'

      select @id = '10010001'

  • LoadRunner 面试问题(附答案)

    2007-10-09 11:30:22Top 1 Digest 1

    1. What is load testing? - Load testing is to test that if the application works fine with the loads that result from large number of simultaneous users, transactions and to determine weather it can handle peak usage periods.
    2. What is Performance testing? - Timing for both read and update transactions should be gathered to determine whether system functions are being performed in an acceptable timeframe. This should be done standalone and then in a multi user environment to determine the effect of multiple transactions on the timing of a single transaction.
    3. Did u use LoadRunner? What version? - Yes. Version 7.2.
    4. Explain the Load testing process? -
      Step 1: Planning the test. Here, we develop a clearly defined test plan to ensure the test scenarios we develop will accomplish load-testing objectives. Step 2: Creating Vusers. Here, we create Vuser scrīpts that contain tasks performed by each Vuser, tasks performed by Vusers as a whole, and tasks measured as transactions. Step 3: Creating the scenario. A scenario describes the events that occur during a testing session. It includes a list of machines, scrīpts, and Vusers that run during the scenario. We create scenarios using LoadRunner Controller. We can create manual scenarios as well as goal-oriented scenarios. In manual scenarios, we define the number of Vusers, the load generator machines, and percentage of Vusers to be assigned to each scrīpt. For web tests, we may create a goal-oriented scenario where we define the goal that our test has to achieve. LoadRunner automatically builds a scenario for us. Step 4: Running the scenario.
      We emulate load on the server by instructing multiple Vusers to perform tasks simultaneously. Before the testing, we set the scenario configuration and scheduling. We can run the entire scenario, Vuser groups, or individual Vusers. Step 5: Monitoring the scenario.
      We monitor scenario execution using the LoadRunner online runtime, transaction, system resource, Web resource, Web server resource, Web application server resource, database server resource, network delay, streaming media resource, firewall server resource, ERP server resource, and Java performance monitors. Step 6: Analyzing test results. During scenario execution, LoadRunner records the performance of the application under different loads. We use LoadRunner’s graphs and reports to analyze the application’s performance.
    5. When do you do load and performance Testing? - We perform load testing once we are done with interface (GUI) testing. Modern system architectures are large and complex. Whereas single user testing primarily on functionality and user interface of a system component, application testing focuses on performance and reliability of an entire system. For example, a typical application-testing scenario might depict 1000 users logging in simultaneously to a system. This gives rise to issues such as what is the response time of the system, does it crash, will it go with different software applications and platforms, can it hold so many hundreds and thousands of users, etc. This is when we set do load and performance testing.
    6. What are the components of LoadRunner? - The components of LoadRunner are The Virtual User Generator, Controller, and the Agent process, LoadRunner Analysis and Monitoring, LoadRunner Books Online.
    7. What Component of LoadRunner would you use to record a scrīpt? - The Virtual User Generator (VuGen) component is used to record a scrīpt. It enables you to develop Vuser scrīpts for a variety of application types and communication protocols.
    8. What Component of LoadRunner would you use to play Back the scrīpt in multi user mode? - The Controller component is used to playback the scrīpt in multi-user mode. This is done during a scenario run where a vuser scrīpt is executed by a number of vusers in a group.
    9. What is a rendezvous point? - You insert rendezvous points into Vuser scrīpts to emulate heavy user load on the server. Rendezvous points instruct Vusers to wait during test execution for multiple Vusers to arrive at a certain point, in order that they may simultaneously perform a task. For example, to emulate peak load on the bank server, you can insert a rendezvous point instructing 100 Vusers to deposit cash into their accounts at the same time.
    10. What is a scenario? - A scenario defines the events that occur during each testing session. For example, a scenario defines and controls the number of users to emulate, the actions to be performed, and the machines on which the virtual users run their emulations.
    11. Explain the recording mode for web Vuser scrīpt? - We use VuGen to develop a Vuser scrīpt by recording a user performing typical business processes on a client application. VuGen creates the scrīpt by recording the activity between the client and the server. For example, in web based applications, VuGen monitors the client end of the database and traces all the requests sent to, and received from, the database server. We use VuGen to: Monitor the communication between the application and the server; Generate the required function calls; and Insert the generated function calls into a Vuser scrīpt.
    12. Why do you create parameters? - Parameters are like scrīpt variables. They are used to vary input to the server and to emulate real users. Different sets of data are sent to the server each time the scrīpt is run. Better simulate the usage model for more accurate testing from the Controller; one scrīpt can emulate many different users on the system.
    13. What is correlation? Explain the difference between automatic correlation and manual correlation? - Correlation is used to obtain data which are unique for each run of the scrīpt and which are generated by nested queries. Correlation provides the value to avoid errors arising out of duplicate values and also optimizing the code (to avoid nested queries). Automatic correlation is where we set some rules for correlation. It can be application server specific. Here values are replaced by data which are created by these rules. In manual correlation, the value we want to correlate is scanned and create correlation is used to correlate.
    14. How do you find out where correlation is required? Give few examples from your projects? - Two ways: First we can scan for correlations, and see the list of values which can be correlated. From this we can pick a value to be correlated. Secondly, we can record two scrīpts and compare them. We can look up the difference file to see for the values which needed to be correlated.  In my project, there was a unique id developed for each customer, it was nothing but Insurance Number, it was generated automatically and it was sequential and this value was unique. I had to correlate this value, in order to avoid errors while running my scrīpt. I did using scan for correlation.
    15. Where do you set automatic correlation options? - Automatic correlation from web point of view can be set in recording options and correlation tab. Here we can enable correlation for the entire scrīpt and choose either issue online messages or offline actions, where we can define rules for that correlation. Automatic correlation for database can be done using show output window and scan for correlation and picking the correlate query tab and choose which query value we want to correlate. If we know the specific value to be correlated, we just do create correlation for the value and specify how the value to be created.
    16. What is a function to capture dynamic values in the web Vuser scrīpt? - Web_reg_save_param function saves dynamic data information to a parameter.
    17. When do you disable log in Virtual User Generator, When do you choose standard and extended logs? - Once we debug our scrīpt and verify that it is functional, we can enable logging for errors only. When we add a scrīpt to a scenario, logging is automatically disabled. Standard Log Option: When you select
      Standard log, it creates a standard log of functions and messages sent during scrīpt execution to use for debugging. Disable this option for large load testing scenarios. When you copy a scrīpt to a scenario, logging is automatically disabled Extended Log Option: Select
      extended log to create an extended log, including warnings and other messages. Disable this option for large load testing scenarios. When you copy a scrīpt to a scenario, logging is automatically disabled. We can specify which additional information should be added to the extended log using the Extended log options.
    18. How do you debug a LoadRunner scrīpt? - VuGen contains two options to help debug Vuser scrīpts-the Run Step by Step command and breakpoints. The Debug settings in the Options dialog box allow us to determine the extent of the trace to be performed during scenario execution. The debug information is written to the Output window. We can manually set the message class within your scrīpt using the lr_set_debug_message function. This is useful if we want to receive debug information about a small section of the scrīpt only.
    19. How do you write user defined functions in LR? Give me few functions you wrote in your previous project? - Before we create the User Defined functions we need to create the external
      library (DLL) with the function. We add this library to VuGen bin directory. Once the library is added then we assign user defined function as a parameter. The function should have the following format: __declspec (dllexport) char* <function name>(char*, char*)Examples of user defined functions are as follows:GetVersion, GetCurrentTime, GetPltform are some of the user defined functions used in my earlier project.
    20. What are the changes you can make in run-time settings? - The Run Time Settings that we make are: a) Pacing - It has iteration count. b) Log - Under this we have Disable Logging Standard Log and c) Extended Think Time - In think time we have two options like Ignore think time and Replay think time. d) General - Under general tab we can set the vusers as process or as multithreading and whether each step as a transaction.
    21. Where do you set Iteration for Vuser testing? - We set Iterations in the Run Time Settings of the VuGen. The navigation for this is Run time settings, Pacing tab, set number of iterations.
    22. How do you perform functional testing under load? - Functionality under load can be tested by running several Vusers concurrently. By increasing the amount of Vusers, we can determine how much load the server can sustain.
    23. What is Ramp up? How do you set this? - This option is used to gradually increase the amount of Vusers/load on the server. An initial value is set and a value to wait between intervals can be
      specified. To set Ramp Up, go to ‘Scenario Scheduling Options’
    24. What is the advantage of running the Vuser as thread? - VuGen provides the facility to use multithreading. This enables more Vusers to be run per
      generator. If the Vuser is run as a process, the same driver program is loaded into memory for each Vuser, thus taking up a large amount of memory. This limits the number of Vusers that can be run on a single
      generator. If the Vuser is run as a thread, only one instance of the driver program is loaded into memory for the given number of
      Vusers (say 100). Each thread shares the memory of the parent driver program, thus enabling more Vusers to be run per generator.
    25. If you want to stop the execution of your scrīpt on error, how do you do that? - The lr_abort function aborts the execution of a Vuser scrīpt. It instructs the Vuser to stop executing the Actions section, execute the vuser_end section and end the execution. This function is useful when you need to manually abort a scrīpt execution as a result of a specific error condition. When you end a scrīpt using this function, the Vuser is assigned the status "Stopped". For this to take effect, we have to first uncheck the “Continue on error” option in Run-Time Settings.  
    26. What is the relation between Response Time and Throughput? - The Throughput graph shows the amount of data in bytes that the Vusers received from the server in a second. When we compare this with the transaction response time, we will notice that as throughput decreased, the response time also decreased. Similarly, the peak throughput and highest response time would occur approximately at the same time.
    27. Explain the Configuration of your systems? - The configuration of our systems refers to that of the client machines on which we run the Vusers. The configuration of any client machine includes its hardware settings, memory, operating system, software applications, development tools, etc. This system component configuration should match with the overall system configuration that would include the network infrastructure, the web server, the database server, and any other components that go with this larger system so as to achieve the load testing objectives.
    28. How do you identify the performance bottlenecks? - Performance Bottlenecks can be detected by using monitors. These monitors might be application server monitors, web server monitors, database server monitors and network monitors. They help in finding out the troubled area in our scenario which causes increased response time. The measurements made are usually performance response time, throughput, hits/sec, network delay graphs, etc.
    29. If web server, database and Network are all fine where could be the problem? - The problem could be in the system itself or in the application server or in the code written for the application.
    30. How did you find web server related issues? - Using Web resource monitors we can find the performance of web servers. Using these monitors we can analyze throughput on the web server, number of hits per second that
      occurred during scenario, the number of http responses per second, the number of downloaded pages per second.
    31. How did you find database related issues? - By running “Database” monitor and help of “Data Resource Graph” we can find database related issues. E.g. You can specify the resource you want to measure on before running the controller and than you can see database related issues
    32. Explain all the web recording options?
    33. What is the difference between Overlay graph and Correlate graph? - Overlay Graph: It overlay the content of two graphs that shares a common x-axis. Left Y-axis on the merged graph show’s the current graph’s value & Right Y-axis show the value of Y-axis of the graph that was merged. Correlate Graph: Plot the Y-axis of two graphs against each other. The active graph’s Y-axis becomes X-axis of merged graph. Y-axis of the graph that was merged becomes merged graph’s Y-axis.
    34. How did you plan the Load? What are the Criteria? - Load test is planned to decide the number of users, what kind of machines we are going to use and from where they are run. It is based on 2 important documents, Task Distribution Diagram and Transaction profile. Task Distribution Diagram gives us the information on number of users for a particular transaction and the time of the load. The peak usage and off-usage are decided from this Diagram. Transaction profile gives us the information about the transactions name and their priority levels with regard to the scenario we are deciding.
    35. What does vuser_init action contain? - Vuser_init action contains procedures to login to a server.
    36. What does vuser_end action contain? - Vuser_end section contains log off procedures.  
    37. What is think time? How do you change the threshold? -   Think time is the time that a real user waits between actions. Example: When a user receives data from a server, the user may wait several seconds to review the data before responding. This delay is known as the think time. Changing the Threshold: Threshold level is the level below which the recorded think time will be ignored. The default value is five (5) seconds. We can change the think time threshold in the Recording options of the Vugen.
    38. What is the difference between standard log and extended log? - The standard log sends a subset of functions and messages sent during scrīpt execution to a log. The subset depends on the Vuser type Extended log sends a detailed scrīpt execution messages to the output log. This is mainly used during debugging when we want information about: Parameter substitution. Data returned by the server. Advanced trace.
    39. Explain the following functions: - lr_debug_message - The lr_debug_message function sends a debug message to the output log when the specified message class is set. lr_output_message - The lr_output_message function sends notifications to the Controller Output window and the Vuser log file. lr_error_message - The lr_error_message function sends an error message to the LoadRunner Output window. lrd_stmt - The lrd_stmt function associates a character string (usually a SQL statement) with a cursor. This function sets a SQL statement to be processed. lrd_fetch - The lrd_fetch function fetches the next row from the result set.
    40. Throughput -  If the throughput scales upward as time progresses and the number of Vusers increase, this indicates that the bandwidth is sufficient. If the graph were to remain relatively flat as the number of Vusers increased, it would
      be reasonable to conclude that the bandwidth is constraining the volume of
      data delivered. 
    41. Types of Goals in Goal-Oriented Scenario -  Load Runner provides you with five different types of goals in a goal oriented scenario:

          The number of concurrent Vusers

          The number of hits per second

          The number of transactions per second

          The number of pages per minute

          The transaction response time that you want your scenario

     42   Analysis Scenario (Bottlenecks): In Running Vuser graph correlated with the response time graph you can see that as the number of Vusers increases, the average response time of the check itinerary transaction very gradually increases. In other words, the average response time steadily increases as the load
    increases. At 56 Vusers, there is a sudden, sharp increase in the average response
    time. We say that the test broke the server. That is the mean time before failure (MTBF). The response time clearly began to degrade when there were more than 56 Vusers running simultaneously.

     43   What is correlation? Explain the difference between automatic correlation and manual correlation? - Correlation is used to obtain data which are unique for each run of the scrīpt and which are generated by nested queries. Correlation provides the value to avoid errors arising out of duplicate values and also optimizing the code (to avoid nested queries). Automatic correlation is where we set some rules for correlation. It can be application server specific. Here values are replaced by data which are created by these rules. In manual correlation, the value we want to correlate is scanned and create correlation is used to correlate.

      44  Where do you set automatic correlation options? - Automatic correlation from web point of view, can be set in recording options and correlation tab. Here we can enable correlation for the entire scrīpt and choose either issue online messages or offline actions, where we can define rules for that correlation.  Automatic correlation for database, can be done using show output window and scan for correlation and picking the correlate query tab and choose which query value we want to correlate. If we know the specific value to be correlated, we just do create correlation for the value and specify how the value to be created.

     45   What is a function to capture dynamic values in the web vuser scrīpt? - Web_reg_save_param function saves dynamic data information to a parameter.

862/5<12345>

数据统计

  • 访问量: 44789
  • 日志数: 86
  • 文件数: 1
  • 建立时间: 2007-06-15
  • 更新时间: 2008-04-02

RSS订阅

Open Toolbar