对软件测试入门者来说,测试用例是第一位的。有了好的测试用例,你就能发现别人没有发现的BUG,只有当你具有良好的,开放型的测试思维,你才能得到优秀的测试用例。功能测试,加油ING~~ ----只要认准自己的方向,做自己喜欢并擅长的事情并持之以恒就一定会有所成!

发布新日志

  • XML--border

    2009-07-24 15:33:29

    border就是画边框的意思

    如果还不够详细

    它是CSS的一个属性,用它可以给能确定范围的HTML标记(如TD、DIV等等)画边框,它可以定义边框线的类型、宽度和颜色,利用这个特性,可以制作一些特殊效果。下面将通过实 例来说明其应用技巧。
    1、给文本加边框
    上面的示例中,给一段文字加了不同的边框,只是为了说明边框线的颜色、粗细是可变的。第一个边框的CSS代码是:style= "border:thin solid red";“border”后面的三个参数的含义是:边框线的宽度是:thin(细线);边框线的类型: solid(实线);边框线的颜色:red(红色)。我们定义边框,实际上就是设定这三个参数值。
    边框线的宽度有三个标准值:thin(细线)、medium(中粗线)和thick(粗线),此外,也可以自定义宽度,如:1pt、5px、2cm等。
    边框线的类型有九个确定值:none(无边框线)、 dotted(由点组成的虚线)、 dashed(由短线组成的虚线)、 solid (实线)、 double(双线,双线宽度加上它们之间的空白部分的宽度就等于border-width定义的宽度)、 groove(3D沟槽状的边 框)、 ridge(3D脊状的边框)、 inset(3D内嵌边框,颜色较深)、 outset(3D外嵌边框,颜色较浅),注意:如果系统不支持这些 边框的属性值,那么“dotted”、“dashed”、“double”、“groove”、“ridge”、“inset”和“outset”都会被 “solid”代替。
    边框线的颜色:可以用十六进制的颜色代码,如#00ffcc。
    从上面可以看出,给文本加边框确实很简单,上例中后面那几个边框的设置,我不讲你也明白了吧!在这里告诉你一点小技巧,给一段文本加边框,可 把CSS加在〈P〉标记里;给几段文本加边框,先把那几段文本用DIV标记括起来,再把CSS加在〈DIV〉标记里;若是要给一行文本加几个不同的边框, 则需要把文本放在表格里,再把CSS分别加到〈TD〉标记里。

    2、给导航菜单加分隔线
    上面这个例子中的小白线,当然可以用图象来做,但我在这里是用CSS的“border”的扩展属性画了边框的一条边,这样代码要少的多。画边框的单边与上例的边框的四条边类似,一个边框的四条边的属性如下:
    边框线名称:border-top(上边框线)、border-right(右边框线)、border-bottom(下边框线)和 boder-left(左边框线);每条边框线的类型、宽度和颜色的取值与“boder”属性相同。如本例中要定义每个单元格的左边框线为白色线,线的宽 度为“1px”的实线,则CSS代码是这样的:style="border-left: 1px solid #ffffff"。在单独定义边框线时,若 不给出某个值,那么就取其默认的初始值。在dreamweaver中定义CSS非常方便,不用编写代码;把常用的边框线一次定义好,放在外连式CSS文件 中,要用时调用一下就行了,非常方便。

    3、在一个边框中采用不同宽度和颜色的边框线
    在本例中的效果,当然可以用上例中的方法来实现,但那样代码过多,可采用另一种合并的方法,把四条边的属性值分类放在一起,如本例的代码是这样的:
    style="border-style.:solid; border-width: thin thin thick thick;border-color:#00ff00 #00ff00 #0000ff #0000ff" 。
    从上面可以看出,我把边框线的类型、宽度和颜色归类在一起定义了,这里请注意几点:
    一、四条边框线的位置顺序是:上边框线、右边框线、下边框线、左边框线;
    二、我在本例中边框线的类型只取了一种实线类型,实际上四条边也可以分别定义不同的类型;
    三、属性值可以定义一个、两个、三个或者四个。如果仅定义一个属性值,则其余三个自动取相同值,如:border-style.:solid与 border-style.:solid solid solid solid的效果完全一样;如果仅给出两个或三个值,那么缺失边的属性值将取与对边相同 的值。如:boder-width:thin thick与border-width:thin thick thin thick效果相同, border-width:1px 2px 3px与border-width:1px 2px 3px 2px的效果相同。
    Border属性的灵活应用,可以产生许多特殊效果,方法与上面介绍的相同

  • XML--border

    2009-07-24 15:33:29

    border就是画边框的意思

    如果还不够详细

    它是CSS的一个属性,用它可以给能确定范围的HTML标记(如TD、DIV等等)画边框,它可以定义边框线的类型、宽度和颜色,利用这个特性,可以制作一些特殊效果。下面将通过实 例来说明其应用技巧。
    1、给文本加边框
    上面的示例中,给一段文字加了不同的边框,只是为了说明边框线的颜色、粗细是可变的。第一个边框的CSS代码是:style= "border:thin solid red";“border”后面的三个参数的含义是:边框线的宽度是:thin(细线);边框线的类型: solid(实线);边框线的颜色:red(红色)。我们定义边框,实际上就是设定这三个参数值。
    边框线的宽度有三个标准值:thin(细线)、medium(中粗线)和thick(粗线),此外,也可以自定义宽度,如:1pt、5px、2cm等。
    边框线的类型有九个确定值:none(无边框线)、 dotted(由点组成的虚线)、 dashed(由短线组成的虚线)、 solid (实线)、 double(双线,双线宽度加上它们之间的空白部分的宽度就等于border-width定义的宽度)、 groove(3D沟槽状的边 框)、 ridge(3D脊状的边框)、 inset(3D内嵌边框,颜色较深)、 outset(3D外嵌边框,颜色较浅),注意:如果系统不支持这些 边框的属性值,那么“dotted”、“dashed”、“double”、“groove”、“ridge”、“inset”和“outset”都会被 “solid”代替。
    边框线的颜色:可以用十六进制的颜色代码,如#00ffcc。
    从上面可以看出,给文本加边框确实很简单,上例中后面那几个边框的设置,我不讲你也明白了吧!在这里告诉你一点小技巧,给一段文本加边框,可 把CSS加在〈P〉标记里;给几段文本加边框,先把那几段文本用DIV标记括起来,再把CSS加在〈DIV〉标记里;若是要给一行文本加几个不同的边框, 则需要把文本放在表格里,再把CSS分别加到〈TD〉标记里。

    2、给导航菜单加分隔线
    上面这个例子中的小白线,当然可以用图象来做,但我在这里是用CSS的“border”的扩展属性画了边框的一条边,这样代码要少的多。画边框的单边与上例的边框的四条边类似,一个边框的四条边的属性如下:
    边框线名称:border-top(上边框线)、border-right(右边框线)、border-bottom(下边框线)和 boder-left(左边框线);每条边框线的类型、宽度和颜色的取值与“boder”属性相同。如本例中要定义每个单元格的左边框线为白色线,线的宽 度为“1px”的实线,则CSS代码是这样的:style="border-left: 1px solid #ffffff"。在单独定义边框线时,若 不给出某个值,那么就取其默认的初始值。在dreamweaver中定义CSS非常方便,不用编写代码;把常用的边框线一次定义好,放在外连式CSS文件 中,要用时调用一下就行了,非常方便。

    3、在一个边框中采用不同宽度和颜色的边框线
    在本例中的效果,当然可以用上例中的方法来实现,但那样代码过多,可采用另一种合并的方法,把四条边的属性值分类放在一起,如本例的代码是这样的:
    style="border-style.:solid; border-width: thin thin thick thick;border-color:#00ff00 #00ff00 #0000ff #0000ff" 。
    从上面可以看出,我把边框线的类型、宽度和颜色归类在一起定义了,这里请注意几点:
    一、四条边框线的位置顺序是:上边框线、右边框线、下边框线、左边框线;
    二、我在本例中边框线的类型只取了一种实线类型,实际上四条边也可以分别定义不同的类型;
    三、属性值可以定义一个、两个、三个或者四个。如果仅定义一个属性值,则其余三个自动取相同值,如:border-style.:solid与 border-style.:solid solid solid solid的效果完全一样;如果仅给出两个或三个值,那么缺失边的属性值将取与对边相同 的值。如:boder-width:thin thick与border-width:thin thick thin thick效果相同, border-width:1px 2px 3px与border-width:1px 2px 3px 2px的效果相同。
    Border属性的灵活应用,可以产生许多特殊效果,方法与上面介绍的相同

  • XML学习

    2009-07-24 15:27:26

    ————————————————————————————————————

    margin是对外元素的距离,用来控制元素本身的浮动位置;
    margin-left:具体值;
    margin-bottom:具体值;
    margin-right:具体值;
    margin-top:具体值;
    padding是对内元素,用来控制元素内部元素的位置;
    padding-left:具体值;
    padding-bottom:具体值;
    padding-right:具体值;
    padding-top:具体值;
    我给你解释一下楼上的意思,margin是调节本身与周围之间的距离,注意,调节的是本身
    padding是调节内部元素与本身之间的距离,调节的不是本身
    举个不恰当的例子吧:元素比作一只鞋,margin是鞋与地面的距离,padding指的是脚与鞋之间的距离。
    至于上下左右,简单明了

    ————————————————————————————————————————————————

    overflow-y:hidden '表示没有垂直滚动条

    overflow-x:hidden '表示没有水平滚动条
    scroll:no或overflow-x:hidden;overflow-y:hidden或overflow:hidden '让浏览器窗口永远不出现滚动条

    ————————————————————————————————————————————————————

  • 生活只能是自己去适应

    2009-04-20 20:22:04

       半个月了,生活中除了工作,就是睡觉、吃饭。无休止的加班、加班,生活似乎变得特有规律:早上7:50出门,晚上9:30到家。洗漱上床、睡觉,尔后从晚10:30睡到早上7:10。第二天继续循环、反复……的确,忙了,生活来不及空虚、寂寞;似乎也没有时间想着妈妈默默地流泪。生活变的麻木也简单了,喜怒哀乐少了,惟一的重心就是工作,惟一的感觉就是“累”,没有了属于自己的空间更没有心思去考虑自己该学点什么?    
        晓蕾不能满足现状,更不能被现在的工作牵绊着,消耗掉自己所有的时间、经历,甚至把自己搞的精疲力尽直至成为工作的奴隶。也许随着业务知识的熟悉、工作经验的积累,自己做事效率提高了也就不会像现在这样。岁月催着晓蕾长大,成熟,晓蕾不能止步不前,该学的东西还很多!得多想想:一年后,工资想拿到***K,得真正掌握哪些东西?二年后或若干年后,我的职业生涯会不会遇到瓶颈?会被哪些东西牵绊着?
         尽快适应加班的生活,“累”不能成为我生活唯一的感觉。这样,所有的一切都会静止在原地,不能向前。还想写点什么,飞速地敲着键盘,却写了删,删了写。就这些吧,只想能整理下被工作搅的浮躁的心!
  • 软件评测师,偶也去考考试试~

    2009-03-20 21:34:08

          好久没更新博了,忙着上班,看电视,睡觉!除了吃饭,哈哈,因为感冒,一点食欲都没……

          也许这一切都是借口,只是好久以来,我不知应该在这里写点什么?关于测试方面的想法、收获少之甚少,自己那些乱七八糟的,小女孩的烦心事也不毕写在这里。测试的圣地,不能让我污染!

          言归正转,偶五月份想考软件测评师。有没想考的朋友?或是已经考过的朋友?今年参加考试的,可以一块学习。考过的朋友,多给提些宝贵意见!虽然很多人说现在证书不管用,好多公司只注重你的经验,工作能力。毕竟闲着也是闲着,给自己充下电,复习下那些基础也好。如果能考过,心里也踏实,手中又多了一份筹码!

          偶在网上搜集了一些软件评测师的资料,自己放着怕丢了。还是放到这里,给大家共享。这本书不错,讲的知识面广,呵呵!偶一直想买软件评测师真题详解那本书,找了好多地都没。毕竟看电子的太伤眼睛了。谁知道卖此书的地或是以前买过,想转的和我联系,留言就成,我随时关注。谢谢喽!

          软件测评师考试考点与真题详解:下载地址:http://bbs.51testing.com/viewthread.php?tid=141580&highlight=%C8%ED%BC%FE%C6%C0%B2%E2%CA%A6

          打开它时必备的阅读器--超星阅读器:下载地址:http://www.ibook8.com/software/Catalog832/12044.html

          谁还有好的电子复习资料,希望也能留个言。大家一块学习,谢谢。为了考试,只有冲刺……

  • 09年计划之一-----想考个PETS4

    2009-01-21 12:47:53

     


       09年计划之一想考个PETS4,逼着自己学英语。听力和口语确实是我的老大难……愁……
       考过PETS4和想考的朋友给提点意见,大家一块学习,谢!~~
       坚持学英语,希望是我测试生涯的又一个转折~~~
  • 一块来研究下“自学”软件测试的思路,应该学些什么……

    2008-12-28 16:53:14

        自学测试一个多月了。相关的书籍也看了不少。可觉得自己老在“测试基础”这块打转,进步很小。今天无意在网上看到***培训机构的课程设置,拿来和自己做下比较,看看自己学到了什么程度?还应该学点什么?应该按照怎样的思路continue……只是不知道这些课程是否适合“自学的”初学者。望自学软件测试的、正在从事测试工作的前辈、还有对测试感兴趣的朋友给提供点入门建议,更希望大家能提供点各个阶段的经典的书目或是电子资料。

    功能测试

    软件测试基础概念

     

    20 什么是软件工程
    什么是软件生命周期
    软件生命周期的阶段划分
    什么是软件测试
    软件测试的意义
    软件测试的发展历史
    软件测试在软件生命周期中的地位
    瀑布模型和V模型
    软件测试的分类
    按照测试目的划分(功能测试、并发测试、压力测试、稳定性测试、容量测试、本地化测试、兼容性测试、安装卸载测试、界面测试、易用性测试、恢复备份测试、安全性测试)
    按照执行方式划分(静态测试、动态测试)
    按照阶段划分(单元测试、集成测试、系统测试、验收测试)
    按照透明度划分(黑盒测试、白盒测试、灰盒测试)
    功能测试的意义
    软件测试流程基础概念 20 什么是软件测试流程
    什么是测试计划
    测试计划的意义
    什么是测试需求
    测试需求的意义
    测试需求的属性定义
    什么是测试用例
    测试用例的意义
    测试用例的属性定义
    什么是测试执行
    测试执行的属性定义
    什么是缺陷
    缺陷的生命周期
    缺陷的属性定义
    什么是测试报告
    测试报告的意义
    测试管理工具的基础使用(TestDirector) 40 介绍TD的基本情况
    介绍TD的结构和工作原理
    需求模块使用(界面介绍、三种视图、需求的添加,修改,删除)
    测试用例模块使用(界面介绍、两种视图、测试用例的添加,修改,删除、测试用例对测试需求的覆盖)
    测试执行模块使用(界面介绍、两种视图、执行流的设置,测试集的设置)
    缺陷模块使用(界面介绍、缺陷的添加,修改,删除)
    测试过程的图表汇总分析
    软件测试流程中的方法介绍 40 测试计划的模板元素讲解
    测试计划的编写
    测试需求的分析方法和实践应用
    测试需求的优先级分析方法
    测试用例的设计方法和实践应用
    测试用例的优先级分析方法
    测试数据的准备
    测试执行的日志记录
    如何汇报缺陷
    测试报告的模板元素讲解
    测试报告的编写
    测试项目实践(标准项目和提高项目) 96 标准项目:双向就业系统的测试实践
    根据标准的软件需求说明书,由老师指导学员编写测试计划,测试需求分析,测试用例设计,测试用例实现,测试执行,缺陷汇报,测试报告。其中测试需求,测试用例,测试执行和缺陷都在TD中实现。通过项目,将理论和工具都应用到实践中。
    提高项目:焦点测试论坛的测试实践
    根据目前大多数IT公司的测试情况,由学员独立进行项目的测试。提高项目的规模,复杂度都高于标准项目,这样学员在掌握标准测试流程的基础上,加深对测试的理解和应用。
    测试管理工具的高级使用(TestDirector) 24 TD的安装
    TD的目录结构介绍
    新建项目
    项目的用户管理
    项目的访问模块管理
    项目的用户组和权限管理
    项目的字段管理
    项目的列表管理
    项目的邮件设置
    项目的跟踪性原则设置
    项目的工作流设置
    自动化测试 自动化回归测试基础知识 9 自动化测试基本概念
    自动化测试用途
    自动化发展史
    自动化测试工具介绍、对比
    自动化测试项目组角色及其职责
    自动化测试实施风险
    自动化测试工具QuickTestPro使用技能 20 自动化测试工具QTP安装
    自动化测试工具QTP介绍
    自动化测试工具QTP操作
    自动化测试工具QTP使用高级技巧
    自动化测试项目实施管理流程 21 自动化测试项目建组
    自动化测试策略制定
    自动化测试需求调研
    自动化测试计划制订
    自动化测试设计
    自动化测试实现
    自动化测试运行
    自动化测试结果分析
    自动化测试项目练习 30 项目:焦点测试论坛
    在讲师带领下,通过调研获取自动化测试需求,然后制订策略、计划,设计、开发自动化测试脚本、执行测试、收集测试结果并分析。通过项目让学员掌握自动化测试项目的标准流程,并学习各种测试文档的编写。
    性能测试 性能测试基础知识 9 什么是性能测试
    性能测试的价值
    性能测试好做吗
    什么是性能测试瓶颈
    什么是性能测试经理、分析师、工程师
    什么是响应时间
    什么是吞吐量/处理能力
    什么是资源利用率
    什么是负载
    负载与响应时间、吞吐量、资源利用率的关系
    什么是在线用户
    什么是并发用户
    什么是TPS、HPS
    什么是基础数据
    什么是测试数据
    如何保证性能测试项目正确实施(需求分析的正确性、实现的准确性、执行的合理性、监控的有效性、分析的完整性)
    性能测试工具LoadRunner使用技能 20 脚本录制
    参数设置-录制设置、一般设置、运行设置
    脚本增强-事务
    脚本增强-检查点
    脚本增强-thinktime
    脚本增强-参数化
    脚本增强-自动关联&手动关联
    场景设置
    结果分析
    性能测试项目实施管理流程 21 如何启动性能测试项目
    如何制订性能测试策略
    如何建立性能测试模型
    如何制定性能测试计划
    如何制定性能测试方案
    如何准备性能测试
    如何执行性能测试
    如何分析性能测试结果
    如何编制性能测试报告
    如何评审性能测试报告
    性能测试项目练习 30 项目:焦点测试论坛
    在讲师带领下,通过调研获取性能测试需求,然后制订策略、建立模型、制订计划和方案、准备测试数据、执行测试、收集测试结果并分析。通过项目让学员掌握性能测试项目的标准流程,并学习各种测试文档的编写。
    操作系统 Unix/Linux基本命令、sh编程 19 Unix/Linux常用命令
    Unix/Linux sh编程
    Unix/Linux资源监控 5 Unix/Linux资源监控命令
    LoadRunner如何监控Unix/Linux资源
    Linux安装 3 如何安装Linux
    数据库 SQL Server2000安装、基本使用 5 SQL Server2000安装
    SQL Server2000基本使用
    SQL语法、高级使用 8 SQL基本语法(查询、修改、删除、插入、建表等)
    SQL高级使用(多表查询、修改、删除等)
    SQL存储过程 8 SQL存储过程
    SQL触发器、视图 8 SQL触发器、视图

        一比较才发现自己学的东西好少。刚学了功能测试前两个阶段---软件测试基础概念、软件流程基础概念、还有就是在51论坛,博客里看的一些比较零散的知识。哎很难整合到一块,更别说成体系了。按照上面的这个课程设置,下一步我应该学TD、自动化测试。可不管自己怎么学,终究是一些书面的知识,没有实际的环境。即使装个真实的环境,也没有实际的项目练习。还是不想这些了,掌握基础再说。最近超喜欢一句广告语“只要你想到了,全世界都会为你让路”,只要能想到,就有实现的机会!

         现实生活的压力,我不可能全心全意地停下来学习软件测试还得继续工作。生活有保障了,我才能谈测试,谈其它。明年吧,明年的目标是真正能进入测试行业!

         忘说了,软件测试基础阶段我看的是ROTTON的《软件测试》;蔡为东的《测试实战--WEB MSN》;蔡为东的《软件测试工程师面试指导》,最近刚出一本《软件测试工程师培训教程》我大概看了几眼,这本书可以给大家提供一个学习的体系和思路,虽然介绍的东西挺全,但都不是很详细,不如看网上下的电子资料……其它 各个阶段的经典书目,电子资料,希望大家能提供点……

  • 年关了,该写点什么……

    2008-12-21 15:58:14

        年关了,该写点什么……总结下过去,展望下未来!  
        今年是鼠年,偶的本命年-----人一生,唯一的一次二十四岁本命年。不知再过十二年,晓蕾会是什么样子。重要的是,那时的晓蕾会不会从心底感受到生活的幸福,享受幸福的生活……希望这十二年能慢点到来……
        今年可用“沧桑”来形容。想要总结点什么,但除了伤感、离别不知还有什么……曾经经历的那些撕心裂肺的痛都将沉沉的压在心底。自己也清楚,不可能瞬间忘记,哪怕一辈子。那就这样——想起时,都化作前进的动力。09年一切都会好起来的!
        09年,不强求工资能达到多少K,先想想自己应该学哪些知识,掌握哪些技能,然后综合自己的性格,特长应该朝哪方面发展有优势。这些理顺了,工资,收入水道渠成……
        09年,多多少少改变下自己的性格。有机会的话,学学经商的头脑,管理的能力……
        09年,形象上改变下自己。不需要多成熟。只要不再被别人称之为“小”女孩就OK!那种婀娜多姿,风情万种的女人,我也不太喜欢……
        目前,还是先做好眼前的工作,比较实际……虽然涉及到测试的内容很少。但最起码有那么一点。经济危机中生活有保障了,才能再谈工作~工作中,抽时间接着学测试。

  • 面试题目,不会的,想请教下大家!

    2008-12-11 09:17:08

    1、简单的SQL题目:删除表中的第一条记录

       偶写的是delete top 1 from 表名 可在SQLSERVER2000上运行了一下,结果不对,请教下大家

    2、设计测试用例:

      研发部:普通员工薪水3000元,部门经理4500元

      技术支持部:普通员工薪水2500元,部门经理4000元

    为了提高 工作效率,保障员工健康,公司制订以下政策:

    1、每周工作40小时内,公司按正常发放薪金

    2、每周工作大于40小时而小于45小时,40小时内牛刀割鸡正常薪金发放,大于部分为正常薪金的15倍

    3、每周工作大于45小时,40小时部分薪金正常发放,40(不包括)--45(包括)部分为正常薪金的1.5倍,大于40部分为正常薪金的0.5倍

    该公司的员工编号在10001-20000之间为技术支持部,20001-40000部分为研发部,其中编号末两位为0则为部门经理,其它则为普通员工

    这个题目,我写的有点乱,请教下大家~

  • 转:几道经典的SQL题目

    2008-12-11 09:06:33

    (1)表名:购物信息
    购物人      商品名称     数量
    A            甲          2
    B            乙          4
    C            丙          1
    A            丁          2
    B            丙          5
    ……
    (其他用户实验的记录大家可自行插入)

    给出所有购入商品为两种或两种以上的购物人记录

    答:select * from 购物信息 where 购物人 in (select 购物人 from 购物信息 group by 购物人 having count(*) >= 2);

    (2)表名:成绩表
    姓名   课程       分数
    张三     语文       81
    张三     数学       75
    李四     语文       56
    李四     数学       90
    王五     语文       81
    王五     数学       100
    王五     英语       49
    ……
    (其他用户实验的记录大家可自行插入)

    给出成绩全部合格的学生信息(包含姓名、课程、分数),注:分数在60以上评为合格

    答:select * from 成绩表 where 姓名 not in (select distinct 姓名 from 成绩表 where 分数 < 60)
    或者:
    select * from 成绩表 where 姓名 in (select 姓名 from 成绩表 group by 姓名 having min(分数) >=60)


    (3)表名:商品表
    名称   产地             进价
    苹果   烟台                2.5
    苹果   云南                1.9
    苹果   四川                3
    西瓜   江西                1.5
    西瓜   北京                2.4
    ……
    (其他用户实验的记录大家可自行插入)

    给出平均进价在2元以下的商品名称

    答:select 名称 from 商品表 group by 名称 having avg(进价) < 2

    (4)表名:高考信息表
    准考证号   科目       成绩
    2006001     语文       119
    2006001     数学       108
    2006002     物理       142
    2006001     化学       136
    2006001     物理       127
    2006002     数学       149
    2006002     英语       110
    2006002            语文       105
    2006001            英语        98
    2006002     化学       129
    ……
    (其他用户实验的记录大家可自行插入)

    给出高考总分在600以上的学生准考证号

    答:select 准考证号 from 高考信息表 group by 准考证号 having sum(成绩) > 600

    (5)表名:高考信息表
    准考证号        数学        语文        英语        物理        化学
    2006001                108         119         98        127         136
    2006002                149         105        110        142         129
    ……
    (其他用户实验的记录大家可自行插入)

    给出高考总分在600以上的学生准考证号

    答:select 准考证号 from 高考信息表 where (数学+语文+英语+物理+化学) > 600



    (四部分)
    (一)表名:club

    id gender age
    67 M      19
    68 F      30
    69 F      27
    70 F      16
    71 M      32
    ……(其余测试数据请自行插入)

    查询出该俱乐部里男性会员和女性会员的总数

    答:select gender,count(id) from club group by gender

    (二)表名:team
    ID(number型) Name(varchar2型)
    1                  a
    2                  b
    3                  b
    4                  a
    5                  c
    6                  c
    要求:执行一个删除语句,当Name列上有相同时,只保留ID这列上值小的
    例如:删除后的结果应如下:
    ID(number型) Name(varchar2型)
    1                  a
    2                  b
    5                  c
    请写出SQL语句。

    delete from team where id not in (select min(id) from team group by name)

    (三)表名:student

    name course score
    张青 语文     72
    王华 数学     72
    张华 英语     81
    张青 物理     67
    李立 化学     98
    张燕 物理     70
    张青 化学     76

    查询出“张”姓学生中平均成绩大于75分的学生信息

    答:select * from student where name in (select name from student
    where name like '张%' group by name having avg(score) > 75)
  • 写给偶自己,还有刚学测试的新手~

    2008-12-01 23:45:39

        最近一直在看蔡为东的《软件测试实战-WEB MSN》,感觉不错。拓宽了我的测试思路,推荐给新入门的新手。想要做好测试真的很不容易,天天动脑想些别人想不到的东西,这还是最基础的功能测试。以后的路还长,要学的也还好多。还是先入门,再决定自己的方向,是集成测试还是压力测试还是其它?

        蔡为东还有一本《软件工程师面试指导》偶也看完了。不看还好,看完真是有点担心,以前学的数据结构,C,网络方面的东西,全都忘没了~哎,学过的东西就这样:一扔掉,想再拿起真的好难。等学的差不多了,投简历面试时再恶补吧。现在当务之急,巩固基础,拓宽自己的测试思路~

        一心一意做一件事的感觉真好,虽然还在路口徘徊,但最起码心里踏实……

  • Web测试]输入框的测试

    2008-11-30 00:00:42

    最近在测试Web的输入框的时候,老是不知道从何处下手,去网上搜罗了一些资料,当然网上对输入框的测试资料少之又少,所以我作了一个简单的总结,总的情况有一下几个方面:

      1.验证输入与输出的是否信息一致;

      2.输入框之前的标题是否正确;

      3.对特殊字符的处理,尤其是输入信息徐需要发送到数据库的。特殊字符包括:'(单引号)、"(双引号)、[](中括号)、()(小括号)、{}(大括号)、;(分号)、<>(大于小于号)……

      4.对输入框输入超过限制的字符的处理,一般非特殊的没有作出限制的在255byte左右;

      5.输入框本身的大小、长度;

      6.不同内码的字符的输入;

      7.对空格、TAB字符的处理机制;

      8.字符本身显示的颜色;

      9.密码输入窗口转换成星号或其它符号;

      10.密码输入框对其中的信息进行加密,防止采用破解星号的方法破解;

      11.按下ctrl和alt键对输入框的影响;

      12.对于新增、修改、注册时用的输入框,有限制的,应该输入时作出提示,指出不允许的或者标出允许的;

      13.对于有约束条件要求的输入框应当在条件满足时输入框的状态发生相应的改变,比如选了湖南就应该列出湖南下面的市,或者选了某些条件之后,一些输入框会关闭或转为只读状态;

      14.输入类型;根据前面的栏位标题判断该输入框应该输入哪些内容算是合理的。例如,是否允许输入数字或字母,不允许输入其他字符等。

      15.输入长度;数据库字段有长度定义,当输入过长时,提交数据是否会出错。

      16.输入状态;当处于某种状态下,输入框是否处于可写或非可写状态。例如,系统自动给予的编号等栏位作为唯一标识,当再次处于编辑状态下,输入框栏位应处于不可写状态,如果可写对其编辑的话,可能会造成数据重复引起冲突等。

      暂时,就能想这么多,看大家谁还有观点,互相学习下!

      17.如果是会进行数据库操作的输入框,还可以考虑输入SQL中的一些特殊符号如单引号等,有时会有意想不到的错误出现

      18.输入类型 输入长度 是否允许复制粘贴 为空的情况 空格的考虑 半角全角测试 对于密码输入框要考虑显示的内容是* 输入错误时的提示信息及提示信息是否准确

      19.可以先了解你要测试的输入框在软件系统的某个功能中所扮演的角色,然后了解其具体的输入条件,在将输入条件按照有效等价类,无效等价类,边界值等方法进行测试用例的设计。

      20.关键字有大小写混合的情况;

      21.关键字中含有一个或多个空格的情况,包括前空格,中间空格(多个关键字),和后空格;

      22.关键字中是否支持通配符的情况(视功能而定);

      23.关键字的长度分别为9、10、11个字符时的情况;

      24.关键字是valid,但是没有匹配搜索结果的情况;

      25.输入html的标签会出现哪些问题?输入&lt;html&gt; 会出现什么问题呢?(这条是我自己发现的,在网上也没找到类似的东东,呵呵,大家凑合着看吧)
  • 常用的网站功能测试方法(已更新)和GUI基本测试内容

    2008-11-27 10:15:31

    网站功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:

    1、页面链接检查: 每一个链接是否都有对应的页面,并且页面之间切换工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,同时能够生成html格式的测试报告。

    2、相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确检查按钮的功能是否正确 如新建、编辑、删除、关闭、返回、保存、导入等功能是否正确。

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

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

    2)特殊字符检查:输入特殊符号,如@、#、$、%、!等,看系统处理是否正确。

    3)字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度。

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

    检查信息的完整性 在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致。

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

    6、检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理。

    7、检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型

    8、检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错

    9、重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于Web系统检查多次使用返回键的情况   在有返回键的地方,返回到原来页面,重复多次,看会否出错

    10、搜索检查:有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确。

    11、输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。

    12、上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。下载文件能否打开或者保存,下载的文件是否有格式要求,如需要特殊工具才可以打开等。

    13、必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项。

    14、快捷键检查:是否支持常用快捷键,如Ctrl+C、 Ctrl+V、 Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。

    15、回车键检查:在输入结束后直接按回车键,看系统处理如何,会否报错。

    16、刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错。   

    17、回退键检查:在Web系统中,使用浏览器的回退键,看系统处理如何,会否报错。对于需要用户验证的系统,在退出登录后,使用回退键,看系统处理如何;多次使用回退键,多次使用前进键,看系统如何处理。

    18、直接URL链接检查:在Web系统中,直接输入各功能页面的URL地址,看系统如何处理,对于需要用户验证的系统更为重要。

    19、空格检查:在输入信息项中,输入一个或连串空格,查看系统如何处理。如对于要求输入整型、符点型变量的项中,输入空格,既不是空值,又不是标准输入。

    20、输入法半角全角检查:在输入信息项中,输入半角或全角的信息,查看系统如何处理。如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“.”,如4.5);输入全角的空格等。

    21、密码检查:一些系统的加密方法采用对字符Ascii码移位的方式,处理密码加密相对较为简单,且安全性较高,对于局域网系统来说,此种方式完全可以起到加密的作用,但同时,会造成一些问题,即大于128的Ascii对应的字符在解密时无法解析,尝试使用“uvwxyz”等一些码值较大的字符作为密码,同时,密码尽可能的长,如17位密码等,造成加密后的密码出现无法解析的字符。

    22、用户检查:任何一个系统,都有各类不同的用户,同样具有一个或多个管理员用户,检查各个管理员之间是否可以相互管理,编辑、删除管理员用户。同时,对于一般用户,尝试删除,并重建同名的用户,检查该用户其它信息是否重现。同样,提供注销功能的系统,此用户再次注册时,是否作为一个新的用户。

    23、系统数据检查:这是功能测试最重要的,如果系统数据计算不正确,那么功能测试肯定是通不过的。数据检查根据不同的系统,方法不同。对于业务管理平台,数据随业务过程、状态的变化保持正确,不能因为某个过程出现垃圾数据,也不能因为某个过程而丢失数据。

    24、系统可恢复性检查:以各种方式把系统搞瘫,测试系统是否可正常迅速恢复。



                                                                      GUI基本测试内容


    图形用户界面( GUI )对软件测试提出了有趣的挑战,因为 GUI 开发环境有可复用的构件,开发用户界面更加省时而且更加精确。同时, GUI 的复杂性也增加了,从而加大了设计和执行测试用例的难度。因为现在 GUI 设计和实现有了越来越多的类似,所以也就产生了一系列的测试标准。下列问题可以作为常见 GUI 测试的指南:

    窗口:
    · 窗口是否基于相关的输入和菜单命令适当地打开?
    · 窗口能否改变大小、移动和滚动?
    · 窗口中的数据内容能否用鼠标、功能键、方向键和键盘访问?
    · 当被覆盖并重新调用后,窗口能否正确地再生?
    · 需要时能否使用所有窗口相关的功能?
    · 所有窗口相关的功能是可操作的吗?
    · 是否有相关的下拉式菜单、工具条、滚动条、对话框、按钮、图标和其他控制可为窗口使用,并适当地显示?
    · 显示多个窗口时,窗口的名称是否被适当地表示?
    · 活动窗口是否被适当地加亮?
    · 如果使用多任务,是否所有的窗口被实时更新?
    · 多次或不正确按鼠标是否会导致无法预料的副作用?
    · 窗口的声音和颜色提示和窗口的操作顺序是否符合需求?
    · 窗口是否正确地被关闭?

    下拉式菜单和鼠标操作:
    · 菜单条是否显示在合适的语境中?
    · 应用程序的菜单条是否显示系统相关的特性(如时钟显示)?
    · 下拉式操作能正确工作吗?
    · 菜单、调色板和工具条是否工作正确?
    · 是否适当地列出了所有的菜单功能和下拉式子功能?
    · 是否可以通过鼠标访问所有的菜单功能?
    · 文本字体、大小和格式是否正确?
    · 是否能够用其他的文本命令激活每个菜单功能?
    · 菜单功能是否随当前的窗口操作加亮或变灰?
    · 菜单功能是否正确执行?
    · 菜单功能的名字是否具有自解释性?
    · 菜单项是否有帮助,是否语境相关?
    · 在整个交互式语境中,是否可以识别鼠标操作?
    · 如果要求多次点击鼠标,是否能够在语境中正确识别?
    · 光标、处理指示器和识别指针是否随操作恰当地改变?

    数据项:
    · 字母数字数据项是否能够正确回显,并输入到系统中?
    · 图形模式的数据项(如滚动条)是否正常工作?
    · 是否能够识别非法数据?
    · 数据输入消息是否可理解?


  • 界面测试用例

    2008-11-24 14:56:39

    一、文本框、按钮等控件测试

    1、文本框的测试

    如何对文本框进行测试:

    a、输入正常的字母或数字;51Testing软件测试网 K,je-}1o#O"H
    b、输入已存在的文件的名称;51Testing软件测试网!noQ%e(}}Of
    c、输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入256个字符,检查程序能否正确处理;
    AJ^(kaC&?)k C222458d、输入默认值,空白,空格;51Testing软件测试网W$}0C U7A
    e、若只允许输入字母,尝试输入数字;反之,尝试输入字母;
    N`~ {O$l2f222458f、利用复制,粘贴等操作强制输入程序不允许的输入数据;51Testing软件测试网~Q5Q#QN2@"[ P T
    g、输入特殊字符集,例如,NUL及\n等;
    7I$g@&FBU&^+G"H8{)N222458h、输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示;
    t y]9~y"X2ovx222458i、输入不符合格式的数据,检查程序是否正常校验,如程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示。

    在测试过程中所用到的测试方法:

    1、输入非法数据;
    .v(U$dKd|[6R2224582、输入默认值;51Testing软件测试网 oDl%@ oH+n
    3、输入特殊字符集;51Testing软件测试网v@\t/Ub(g
    4、输入使缓冲区溢出的数据;
    F_ ],Hi It&h@-v2224585、输入相同的文件名;

    2、命令按钮控件的测试

    测试方法:

    a、点击按钮正确响应操作。如单击确定,正确执行操作;单击取消,退出窗口;51Testing软件测试网 Gyf"GZU3yC @ Z
    b、对非法的输入或操作给出足够的提示说明,如输入月工作天数为32时,单击“确定”后系统应提示:天数不能大于31;
    uH? _]!Z tF,I222458c、对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会;

    3、单选按钮控件的测试

    测试方法:

    a、一组单选按钮不能同时选中,只能选中一个;
    _:|"_-ZZ6`\NCj#[222458b、逐一执行每个单选按钮的功能。分别选择了“男”、“女”后,保存到数据库的数据应该相应的分别为“男”、“女”;
    IN)Z/y LE%l]222458c、一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空。51Testing软件测试网G7v~l Lq%U1E

    '?tG"h3LG2224584、up-down控件文本框的测试

    测试方法:

    a、直接输入数字或用上下箭头控制,如在“数目”中直接输入10,或者单击向上的箭头,使数目变为10;
    Nv!b-s y'BB222458b、利用上下箭头控制数字的自动循环,如当最多数字为253时,单击向上箭头,数目自动变为1;反之亦适用;51Testing软件测试网 ~bYK|)D8jT%G0va
    c、直接输入超边界值,系统应该提示重新输入;
    M3{vQCVu5F222458d、输入默认值,空白。如“插入”数目为默认值,点击“确定”;或删除默认值,使内容为空,单击“确定”进行测试;51Testing软件测试网*xj+J*Rn9zh&B1l7BN
    e、输入字符。此时系统应提示输入有误。

    5、组合列表框的测试

    测试方法:

    a、条目内容正确,其详细条目内容可以根据需求说明确定;
    3L v[.r8|#yd222458b、逐一执行列表框中每个条目的功能;
    `9O!`,|@ s|222458c、检查能否向组合列表框输入数据。

    6、复选框的测试

    测试方法:

    a、多个复选框可以被同时选中;
    9]3uG&m2Ke%f*f;x Tl-o-m222458b、多个复选框可以被部分选中;51Testing软件测试网gj/jt'eU
    c、多个复选框可以都不被选中;51Testing软件测试网 PG1Q8h0t4]7YB0P0q
    d、逐一执行每个复选框的功能。

    7、列表框控件的测试

    测试方法:

    a、条目内容正确:同组合列表框类似,根据需求说明书确定列表的各项内容正确,没有丢失或错误;
    ^T_7Io7IE4j.R rrkG.z222458b、列表框的内容较多时要使用滚动条;
    Z1d bs9`uKjf222458c、列表框允许多选时,要分别检查shift选中条目,按ctrl选中条目和直接用鼠标选中多项条目的情况;

    8、滚动条控件的测试

    要注意一下几点:

    a、滚动条的长度根据显示信息的长度或宽度及时变换,这样有利于用户了解显示信息的位置和百分比,如word中浏览100页文档,浏览到50页时,滚动条位置应处于中间;
    OKcu(T7Q222458b、拖动滚动条,检查屏幕刷新情况,并查看是否有乱码;
    s9JU HV222458c、单击滚动条;51Testing软件测试网)U)B`5sk\0i.x
    d、用滚轮控制滚动条;51Testing软件测试网,u@6C:_0m%g-lRb
    e、滚动条的上下按钮。

    9、各种控件在窗体中混和使用时的测试

    a、控件间的相互作用;
    YEW)vS!`A lc222458b、tab键的顺序,一般是从上到下,从左到右;
    6},k I p0Z*a+Q7v222458c、热键的使用,逐一测试;51Testing软件测试网 } Mc3e-P
    d、enter键和esc键的使用。

    在测试中,应遵循由简入繁的原则,先进行单个控件功能的测试,确保实现无误后,再进行多个控件的的功能组合的测试。

    ps:密码输入框测试时要特别注意进行字母大写输入的测试。二、查找替换操作

    案例演示:打开word中的“替换”对话框。

    测试本功能有通过测试和失败测试两种情况:

    通过测试:

    1、输入内容直接查找、或查找全部;
    xqM ZAi8K(u2224582、在组合框中寻找已经查找过的内容、再次查找并确认文档的内容正确,如已经查找过“测试用例”、再次进入不用重新输入查找内容、直接在文档中搜寻就可以。

    失败测试:

    1、输入过长或过短的查询字符串。如假设查询的字符串长度为1到255,那么,输入0、1、2、256、255和254进行测试;
    (kZ"IE2h&vE#s2224582、输入特殊字符集。如在word中^g代表图片、^代表分栏符、可以输入这类特殊字符测试;

    替换测试大体相同。

    关于编辑操作窗口的功能测试的用例:

    1、关闭查找替换窗口。不执行任何操作、直接退出;51Testing软件测试网l5kFe Cg
    2、附件和选项测试。假如设定“精确搜寻”、“向后”搜索等附件选项等等来测试;51Testing软件测试网E7Ki\V
    3、控件间的相互作用。如搜寻内容为空时、按钮“搜寻全部”、“搜寻”、“全部替换”、“替换”都为灰色。
    XMgY(I j:z f8p3K2224584、热键、Tab键。回车键的使用。

    插入操作

    1、插入文件

    测试的情况:

    a、插入文件;51Testing软件测试网,y$@$gH0Z%T%g/B
    b、插入图像;51Testing软件测试网|+S*p%w`y[8_
    c、在文档中插入文档本身;
    FuB%xl9k222458d、移除插入的源文件;51Testing软件测试网8n9COZoc
    e、更换插入的源文件的内容。

    2、链接文件

    测试方法:

    a、插入链接文件;51Testing软件测试网3A+f rs;tb?P E
    b、在文档中链接文档本身;51Testing软件测试网-g4Q/X'\2Gp
    c、移除插入的源文件:
    3H v{ h~U*d/?.`222458d、更换插入的源文件的内容。

    3、插入对象

    要测试的内容:

    a、插入程序允许的对象、如在word中插入excel工作表;51Testing软件测试网khu#xWLe
    b、修改所插入对象的内容。插入的对象仍能正确显示;
    (~$`EKgM&U^|222458c、卸载生成插入对象的程序、如在word中插入excel工作表后卸载excel、工作表仍正常使用。

    编辑操作

    编辑操作包括剪切、复制、粘贴操作。

    测试剪切操作的方法

    a、对文本、文本框、图文框进行剪切;51Testing软件测试网/`7D0yA.J
    b、剪切图像;
    5tz;x {+W7Ku cl222458c、文本图像混合剪切。

    复制操作方法与剪切类似。

    测试时,主要是对粘贴操作的测试方法是:

    a、粘贴剪切的文本、文本框及图文框;
    \+gN[ss Y]b^ t*Z222458b、粘贴所剪切的图像;51Testing软件测试网mTOn TDC2dg
    c、剪切后,在不同的程序中粘贴;51Testing软件测试网 n8y/TCI'h#x&h8D
    d、多次粘贴同一内容,如剪切后,在程序中连续粘贴3次;
    9il%X DW(W+c8z222458e、利用粘贴操作强制输入程序所不允许输入的数据。

    三、界面测试用例的设计方法

    1、窗体

    测试窗体的方法:

    a、窗体大小,大小要合适,控件布局合理;
    gV K,Y$Y'q#?,O8|9e222458b、移动窗体。快速或慢速移动窗体,背景及窗体本身刷新必须正确;51Testing软件测试网 iPU#r'~yc
    c、缩放窗体,窗体上的控件应随窗体的大小变化而变化;51Testing软件测试网C^m0G I
    d、显示分辨率。必须在不同的分辨率的情况下测试程序的显示是否正常。

    进行测试时还要注意状态栏是否显示正确,工具栏的图标执行操作是否有效,是否与菜单懒中图标显示一致;错误信息内容是否正确、无错别字且明确等等。

    2、控件

    测试方法:

    a、窗体或控件的字体和大小要一致;51Testing软件测试网0X q h2_z$[1u3C~
    b、注意全角、半角混合;51Testing软件测试网iH!r0C2XB9C Y^n8U
    c、无中英文混合。

    四、菜单

    进行测试时要注意:

    a、选择菜单是否可以正常工作、并与实际执行内容一致;
    #o]:kg0N1z8S2D222458b、是否有错别字;
    #|~XF.`~$@%n222458c、快捷键是否重复;51Testing软件测试网Z%tKw+k:WH
    d、热键是否重复;
    JB1e`5S[ yq/Z|222458e、快捷键与热键操作是否有效;
    IZEqArii222458f、是否存在中英文混合;51Testing软件测试网9a)ig"W3fj5pp
    g、菜单要与语境相关、如、不同权限的用户登陆一个应用程序、不同级别的用户可以看到不同级别的菜单并使用不同级别的功能;51Testing软件测试网bK;qdDF$df+kI
    h、鼠标右键快捷菜单。

    特殊属性

    1、安装界面应有公司介绍或产品介绍、有公司的图标;
    2`1q'fe C2224582、主界面及大多数界面最好有公司图标;51Testing软件测试网'jnLm*^(t:Q
    3、选择“帮助”->“关于”命令、应看见相关版权和产品信息。

  • 想学好软件测试,先从简单的界面测试开始吧~

    2008-11-24 14:22:06

        LR学快一周了吧,感觉自己好浮躁,想尽快学好,但又不知真正想学点什么。也不知怎么了,从网上搜到的那些资料,走马观花似的看着,但又静下心来一字一句推敲,哎……

        前几天,随凯纳,做了些简单的界面测试。第一次找BUG,写测试用例、测试报告,还真有点摸不着头脑。找了六个BUG。呆会把我第一次找的BUG贴到这里,作个纪念吧,嘿嘿!真是做什么都不容易。不过,软件测试,激起了我很大的兴趣。以后还是多实践,只看书上那些简单的操作步骤,真不行。

        告诫自己:“万事开头难,静下心来,一点一点去琢磨吧。入了门就好了~”

     

    我第一次写的BUG,贴在这里,大家多多指教:

    以下你提的BUG老师都对系统重新做了修改,你可以再重新测试一下,看是否通过,不通过就再提BUG

    谢谢!~

     

     

    BUG标识符:*ZC001 

    BUG描述:注册时,不同用户名可用同一邮箱注册

    BUG步骤:我用不同的用户名,同一个邮箱注册了N次,可以注册成功

    处理建议:建议同一个用户名只能用一个邮箱注册

    处理结果:*ZC001 已经处理,请再测试

     

     

     

    BUG标识符:*ZC002 

    BUG描述:首次注册成功后,图像为叉,也没出现用户名,需重新注销登陆才能出现图像“A“,个人资料里填写姓名登陆后”A“图像下才能出现用户名。

    BUG步骤:

    处理建议:建议首次注册成功,能显示系统头像。头像下应该显示注册时的用户名

    处理结果:*ZC002 已经处理,请再测试

     

     

    BUG标识符:?ZC003 

    BUG描述:座机为必选项

    BUG网页:http://www.kainatech.com.cn/user/person_detail.php

    处理建议:座机设为可选项,现在有座机号的很少

    处理结果:?ZC003 已经处理,请再测试

     

     

    BUG标识符:?ZC004

    BUG描述:不同用户名可以用同一身份证号码注册 

    BUG步骤:我用不同的用户名,同一个身份证号码注册了N次,可以注册成功

    处理建议:同一用户名只能用同一身份证号码注册

    处理结果:?ZC004 等和身份证件末未是X的一起修改,记录为已知BUG,暂不做修改

     

    BUG标识符: *ZC005

    BUG描述:教育状况只能添加,删除。

    BUG步骤:已存在的教育状况不能修改。

    处理建议:添加修改这一功能。

    我也认为是个BUG,可是老师说由于教育状况的东西比较少,所以填错了就直接删就行。所以就不加“修改”按钮了

     

    BUG标识符: *ZC006

    BUG描述:家庭住址,当前住址邮政编码的验证太单一,只验证了长度为6位。提示不明确

    BUG步骤:邮政编码为6位的字母注册时,也能成功。

    处理建议:邮政编码一般为小于6位的数字, 提示改为“6位的数字”

    处理结果:*ZC006 已经修改,请再测试

     

     

     

  • 学习loadrunner之一_事务(转)

    2008-11-24 13:31:57

    Loadrunner是一款负载测试工具,它有三个核心组件分别是Virtual User GeneratorControllerAnalysisVirtual User Generator 可以通过录制脚本准确的记录下来用户的每一步操作并且可以进行集合点设置、事务设置、参数化等操作从而为在Controller中执行特定的场景做准备。Controller顾名思义,它可以控制脚本的执行,通过把脚本放置在一个特定的场景中,模拟一批真实用户的操作过程,这些模拟的真实用户就叫做虚拟用户。通过这些虚拟用户可以对系统进行负载测试。Analysis应该是测试人员极为关注的一个组件,通过Controller执行完某一个场景之后,Analysis可以自动生成测试结果并通过图形的形式显示出来,测试人员只有借助这些图表才能准确分析出系统的瓶颈并且确定性能是否达到要求。

    下面介绍一下如何进行集合点、检查点以及参数化的设置:

    对于集合点、检查点的设置有两种方法,一种是在录制完脚本以后,手工在脚本中添加相关的关键字例如lr_start_transaction等,这种方法对脚本语言的理解能力要求较高。另一种是直接在录制的过程中添加集合点、检查点,这样lr就会自动把集合点、检查点的关键字添加到脚本中。

    事务:就是用户某一步或者某几步操作的集合。当我们需要通过某一步或是某几步操作从而衡量服务器的性能的时候,这时我们就把这些操作设置成一个事务,当事务开始执行的时候lr就开始计时当事务运行结束计时停止,执行事务的时间会在在最后的结果中显示出来。

    实例:登录sina网站,把点击“天气”设置成一个事务,衡量服务器处理处理该事务的性能。

    1,点击红色的录制按钮,输入URL开始录制。弹出sina的首页,点击 <!--[if !vml]--><!--[endif]-->设置事物的开始位置,这时弹出事务开始对话框要求输入事务的名称,一般来讲我们都会把事务名称命名为容理解的名字,此处我们命名为“天气”

    点击OK完成事务的开始点设置。

    2,在sina页面上点击“天气”的连接,出现天气页面

    3,点击 <!--[if !vml]--><!--[endif]-->设置事务的结束点,这时弹出事务结束对话框

    lr根据匹配原则已经自动把事务名字一栏填入“天气”,我们只需要选择事务的状态。状态有三种LR_AUTO LR_PASS LR_FAIL LR_STOP

    LR_AUTO:事物的状态被自动设置,如果事务执行成功,状态设置为PASS,如果执行失败,状态设置为FAIL,如果由于异常中断,状态被设置成STOP.

    LR_PASS:事务如果执行成功,代码的返回状态就是PASS

    LR_FAIL:事务如果执行失败,代码的返回状态就是FAIL

    一般我们选择LR_AUTO 那么我们会有疑问什么时候我们选择PASS或者是FAIL呢?

    Lr的帮助文档中有一条例子,可以很好的帮助我们理解

    lr.start_transaction("GetStocks");51Testing软件测试网`D6nA&ilBn!N
    try {

    String stocks[];
    (Od,yc+c x/U222458stocks = orStockServer1.getStockList();51Testing软件测试网fX)cQ&M
    if (stocks.length == 0)

                  throw new Exception("No stocks returned/available");51Testing软件测试网M8Z)E4I0c}`
    lr.end_transaction("GetStocks", lr.PASS);
    |u/a:d/B c.j222458}

    catch (Exception e1) {

           lr.end_transaction("GetStocks", lr.FAIL);

           lr.message(" An exception occurred : " + e1.toString() );

           }

    代码说明:这时一个得到stock list的例子,程序中设置了异常检查来确保getStockList()方法返回非零的长度。

     

    同时我也进行了如下的脚本修改

    ………………

    lr_start_transaction("天气");

        lr_think_time( 3 );

        web_add_cookie("mysinal=ai_erica; DOMAIN=weather.news.sina.com.cn");

        web_add_cookie("SINAGLOBAL=221.219.31.58.924471172571904604; DOMAIN=weather.news.sina.com.cn");

    ………………

    lr_end_transaction("天气", LR_FAIL);

    在最后我把该事物的结束状态设置为FAIL,然后运行该脚本,其实该事物的运行是没有任何错误的,完全可以运行成功,只是在最后我把事务的状态手工设置为FAIL。当脚本执行完后,查看Ececution Log看到这样一条log语句:

    Action.c(297): Notify: Transaction "天气" ended with "Fail" status (Duration: 5.1436).

    那么这样做的意义是什么呢?为什么要设置事务结束状态呢?原因就是在Analysis中生成结果图表的时候我们就能看到这个名为“天气”的事务执行是失败的。如果语句是这样:

    Action.c(297): Notify: Transaction "天气" ended with "Pass" status (Duration: 5.1436).

    Analysis中生成结果图表的时候我们就能看到这个名为“天气”的事务执行是成功的。

    设置事务结束状态的用途就在这里。试想Lr为什么能自动生成结果图表?无非就是Analysis通过一些定义好的API获取执行脚本过程中的返回值,从而显示出事务执行的正确还是错误,或是显示出响应时间等信息,然后调用GUI使我们很直观的看到测试结果

  • 如何在脚本中做关联(在网络上搜到的)

    2008-11-24 09:20:16

    如何在 LoadRunner 脚本中做关联 (Correlation) 51Testing软件测试网.Q)X0ZlC.Ud#F
    当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本。在VuGen的Recording Log中,您可以找到浏览器与服务器之间所有的对话,包含通讯内容、日期、时间、浏览器的请求、服务器的响应内容等等。脚本和Recording Log最大的差别在于,脚本只记录了client端要对server端所说的话,而Recording Log则是完整纪录二者的对话。 51Testing软件测试网9hbD$c+j s{

    ~2B @wb;^a222458当执行脚本时,您可以把VuGen想象成是一个演员,它伪装成浏览器,然后根据脚本,把当初真的浏览器所说过的话,再对网站伺服器重新说一遍,VuGen企图骗过服务器,让服务器以为它就是当初的浏览器,然后把网站内容传送给VuGen。
    q[mFV/n ? S222458所以纪录在脚本中要跟服务器所说的话,完全与当初录制时所说的一样,是写死的(hard-coded)。这样的作法在遇到有些比较聪明的服务器时,还是会失效。这时就需要透过「关联(correlation)」的做法来让VuGen可以再次成功地骗过服务器。 51Testing软件测试网jt)Eyfhr,K&w
    何谓关联(correlation)?
    ;Y$w#Acl.\222458所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。
    n`(Q3nS`222458举一个常见的例子,刚刚提到有些比较聪明的服务器,这些服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。这也就是为什么执行脚本会失败的原因,因为VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给VuGen了。 (比如饭票,当月使用可以,下月使用就过期了,食堂和用户手里都有这个饭票)51Testing软件测试网Z'L.{-O2l#aCP
    下面的图示说明了这样的情形: 51Testing软件测试网{,Y(M8{'z[m'r$kf
    当录制脚本时,浏览器送出网页A的请求,服务器将网页A的内容传送给浏览器,并且夹带了一个ID=123的数据,当浏览器再送出网页B的情求时,这时就要用到ID=123的数据,服务器才会认为这是合法的请求,并且把网页B的内容送回给浏览器。
    k/^]&S eAGH222458在执行脚本时会发生什么状况?浏览器再送出网页B的请求时,用的还是当初录制的ID=123的数据,而不是用服务器新给的ID=456,整个脚本的执行就会失败。
    'q+s;\q([ HrX1K222458
    $yXm!ek1aD qq222458要对付这种服务器,我们必须想办法找出这个Session ID到底是什么、位于何处,然后把它撷取下来,放到某个参数中,并且取代掉脚本中有用到Session ID的部份,这样就可以成功骗过服务器,正确地完成整个交易了。 51Testing软件测试网 v8}4qd%jO
    哪些错误代表着我应该做关联(correlation)? 51Testing软件测试网,vpD/P2FP
    假如脚本需要关联(correlation),在还没做之前是不会执行通过的,也就是说会有错误讯息发生。不过,很不幸地,并没有任何特定的错误讯息是和关联(correlation)有关系的。会出现什么错误讯息,与系统实做的错误处理机制有关。错误讯息有可能会提醒您要重新登入,但是也有可能直接就显示HTTP 404的错误讯息。 51Testing软件测试网`0nI] S8oJX{+p
    要如何做关联(correlation)? 51Testing软件测试网)jZ-e;LVM-~q^ v
    关联(correlation)函数
    S`!M YA8Hw oR222458关联(correlation)会用到下列的函数: 51Testing软件测试网n3F6\V.V9[
    • web_reg_save_param:这是最新版,也是最常用来做关联(correlation)的函数。
    :K'BK(T"P222458语法: 51Testing软件测试网9Q~`X(l"hxi
    web_reg_save_param ( “Parameter Name” , < list of Attributes >, LAST ); 51Testing软件测试网bi,{#x!i,P-p_ ]
    • web_create_html_param、web_create_html_param_ex:这二个函数主要是保留作为向前兼容的目的的。建议使用 web_reg_save_param 函数。
    8@&~/o;?5|4?\7b"m&t L222458详细用法请参考使用手册。在VuGen中点选【Help】>【Function reference】>【Contexts】>【Web and Wireless Vuser Functions】>【Correlation Functions】。 51Testing软件测试网 c}5~1p)X nZ
    如何找出要关联(correlation)数据
    0g8`4kw't[G8j222458简单的说,每一次执行时都会变动的值,就有可能需要做关联(correlation)。 51Testing软件测试网 N q&q3M4T/b@(P
    VuGen提供二种方式帮助您找出需要做关联(correlation)的值:
    $m M^Z?|V ^"n[O%`2224581. 自动关联
    Y_5QH`"|2224582. 手动关联
    7qZ;rIy2~2yW*?222458自动关联 51Testing软件测试网2lB_-JA1f*C/i.\"D
    VuGen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。 51Testing软件测试网-TV3p,k|@0D
    自动关联提供下列二种机制:
    e8Iod8aJ o222458• Rules Correlation:在录制过程中VuGen会根据订定的规则,实时自动找出要关联的值。规则来源有两种:
    E#{3w1Nm`222458o 内建(Built-in Correlation):
    `;@dh7g+Y}222458VuGen已经针对常用的一些应用系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,内建关联规则,这些应用系统可能会有一种以上的关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】中启用关联规则,则当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。 51Testing软件测试网k5o"cp WA N
    您也可以在【Recording Options】>【Internet Protocol】>【Correlation】检视每个关联规则的定义。
    IM!DG"f1n-w+B6j222458o 使用者自订(User-defined Rules Correlation):
    "YX^#u Cg-ch222458除了内建的关联规则之外,使用者也可以自订关联规则。您可以在【Recording Options】>【Internet Protocol】>【Correlation】建立新的关联规则。
    b [rc&m2tc D222458• Correlation Studio:有别于Rules Correlation,Correlation Studio则是在执行脚本后才会建立关联,也就是说当录制完脚本后,脚本至少须被执行过一次,Correlation Studio才会作用。Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。
    @|G#{K2jl222458Rule Correlation 51Testing软件测试网HHfy j+B0k
    请依照以下步骤使用Rule Correlation: 51Testing软件测试网] @0[#Q'@-i4{/A
    1. 启用auto-correlation 51Testing软件测试网?oO-_Rrm
    1. 点选VuGen的【Tools】>【Recording Options】,开启【Recording Options】对话窗口,选取【Internet Protocol】>【Correlation】,勾选【Enable correlation during recording】,以启用自动关联。
    r0jIY3BE9[2224582. 假如录制的应用系统属于内建关联规则的系统,如AribaBuyer、BlueMartini、BroadVision、InterStage、mySAP、NetDynamics、Oracle、PeopleSoft、Siebel、SilverJRunner等,请勾选相对应的应用系统。
    qxi)X V%l1bHd2224583. 或者也可以针对录制的应用系统加入新的关联规则,此即为使用者自订的关联规则。 51Testing软件测试网fhM.Gv
    4. 设定当VuGen侦测到符合关联规则的数据时,要如何处理:
    r)KM-Q(M2M222458 【Issue a pop-up message and let me decide online】:跳出一个讯息对话窗口,询问您是否要建立关联。
    8M`!CJ7_"v:E222458 【Perform correlation in sceipt】:直接自动建立关联
    /[_s$r*n_ v W2224582. 录制脚本 51Testing软件测试网 cys'L2TrQ/P(]a
    开始录制脚本,在录制过程中,当VuGen侦测到符合关联规则的数据时,会依照设定建立关联,您会在脚本中看到类似以下的脚本,此为BroadVision应用系统建立关联的例子,在脚本批注部分可以看到关联前的数据为何。 51Testing软件测试网VEQ+Fub)l^
    51Testing软件测试网U e3I,qJy
    3. 执行脚本验证关联是OK的。
    *A YL2ic222458Correlation Studio
    J ib7y%{(W222458当录制的应用系统不属于VuGen预设支持的应用系统时,Rule Correlation可能既无法发挥作用,这时可以利用Correlation Studio来做关联。
    C e hH#vt8a222458Correlation Studio会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。
    8`gs/F8o rtVf222458使用Correlation Studio的步骤如下:
    %A,X!V*n0}RD_7N*Z2224581. 录制脚本并执行 51Testing软件测试网+ok Go-U
    2. 执行完毕后,VuGen会跳出下面的【Scan Action for Correlation】窗口,询问您是否要扫描脚本并建立关联,按下【Yes】按钮。
    5R H4g~g+WY22245851Testing软件测试网#J^;dVA/e
    3. 扫描完后,可以在脚本下方的【Correlation Results】中看到扫描的结果。 51Testing软件测试网"Lc0dPzs"^
    51Testing软件测试网*oX W)WN0{
    4. 检查一下扫瞄的结果后,选择要做关联的数据,然后按下【Correlate】按钮,一笔一笔做,或是按下【Correlate All】让VuGen一次就对所有的数据建立关联。 51Testing软件测试网#Qp2f Gw\Z&w
    注意:由于Correlation Studio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用【Correlate All】。 51Testing软件测试网ma NNUhe5Ll/B
    5. 一般来说,您必须一直重复步骤1~4直到所有需要做关联的数据都找出来为止。因为有时前面的关联还没做好之前,将无法执行到后面需要做关联的部份。 51Testing软件测试网cGhb c)Rf m
    有可能有些需要做关联的动态数据,连Correlation Studio都无法侦测出来,这时您就需要自行做手动关联了。 51Testing软件测试网4f0mD p%yC
    手动关联
    )hv}wbX5V4J8W\222458手动关联的执行过程大致如下:
    %r-y5N^-T'dl2224581. 使用相同的业务流程与数据,录制二份脚本
    x%Q_"_Pt$hB,f2224582. 使用WinDiff工具协助找出需要关联的数据
    Vk6G2ne8~-B2224583. 使用web_reg_save_param函数手动建立关联
    UY4l&PzA/?N6@3W1n2224584. 将脚本中有用到关联的数据,以参数取代
    ;cS:pX[l6b~222458接下来将详细的说明如何执行每个步骤 51Testing软件测试网R1Rk;S+\ }FX
    使用相同的业务流程与数据,录制二份脚本 51Testing软件测试网 _M9u} z
    1. 先录制一份脚本并存档。
    %},N OZ/n2224582. 依照相同的操作步骤与数据录制第二份脚本并存盘。注意,所有的步骤和输入的数据一定都要一样,这样才能找出由服务器端产生的动态数据。
    Sb @5q ydTq222458有时候会遇到真的无法使用相同的输入数据,那您也要记住您使用的输入数据,到时才能判断是您输入的数据,还是变动的数据。
    d9u4e;T x\+U:x222458使用WinDiff工具协助找出需要关联的数据
    jlc{N#av:O%G2224581. 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。
    L,WHIE?2224582. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。 51Testing软件测试网q!df{P
    3. 逐一检视二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。选取差异的脚本,然后复制。 51Testing软件测试网HZ Bh'JC
    在复制时,有时并不需要取整行脚本,可能只会选取脚本中的一部分。
    8S0yD!S9[222458注意:请忽略lr_thik_time的差异部份,因为lr_thik_time是用来模拟每个步骤之间使用者思考延迟的时间。
    4E6I.~.y-IqEm222458
    $I| [Fw2224584. 接着要在Recording Log(单一protocol)或是Generation Log(多重protocol)中找这个值。将鼠标光标点到Recording Log的第一行开头,按下Ctrl+F,开启【Find】窗口,贴上刚刚复制的脚本,找出在Recording Log第一次出现的位置。
    G:Q3~6]u3ya2} bQ222458
    Wb?7xXm&z&z t|v222458结果会有二种: 51Testing软件测试网3L5O8_E+v9b
    o 在Recording Log中找不到要找的数据,这时请先确认您找对了脚本,毕竟现在开启了二个几乎一样的脚本,很容易弄错。
    2g%c3v jq `{RzW222458o 在Recording Log中找到了要找的数据,这时要确认数据是从服务器端传送过来的。首先可以先检查数据的标头,从标头的Receiving response可以知道数据是从服务器端传送到client端的。假如此数据第一次出现是在Sending request中,则表示此数据是由client端产生,不需要做关联,但是有可能需要做参数化(parameterized)。
    8p&H*B.N_222458您要找的标头格式如下: 51Testing软件测试网)QR0Pr} o#w
    *** [tid=b9 Action1 2] Receiving response from host astra.merc-int.com:80 ( 25/11/2002 12:04:00 )
    \5W${e x N1\222458
    @'ze7u'y'V2224585. 现在您已经找到录制二次都不一样,而且是由服务器所产生的动态数据了,而此数据极有可能需要做关联。
    E~7q,?IQQ'm222458使用web_reg_save_param函数手动建立关联
    8i:xx:po"L$A222458在找到是由服务器所产生的动态数据之后,接下来要做的就是找出适当的位置,使用web_reg_save_param函数,将这个动态数据撷取到某个参数中。 51Testing软件测试网(W#]{ wq9Gvt d,?
    1. 要在哪里使用web_reg_save_param函数?
    DaC*z)v}EY{4G222458在之前的步骤,我们已经在Execution Log找到可能需要关联的动态数据。在Execution Log中选取动态数据前的文字然后复制,我们将会利用这段文字,来帮助我们找出要关联的动态数据。
    M3P `\v|,S222458
    J5M]x^Kzj+P222458不过在这之前我们要先找出使用web_reg_save_param函数的正确位置,所以我们要再重新执行一遍脚本,而且这次会开启所有的Log。
    $A%THv0~2224581. 在VuGen中点选【Vuser】>【Run-Time Settings】。 51Testing软件测试网7mn,{wx1A4P|
    2. 点选【General】>【Log】。
    3y a#]yE2224583. 勾选【Enable logging】、【Always sends messages】、【Extended log】,以及【Extended log】下的所有选项。
    9h.u4t&mLX/}2224584. 按下【OK】就可以执行脚本了。
    T0A4QQ5lm:R222458执行完脚本之后,在Execution Log中搜寻刚刚复制的字符串。找到字符串后,在字符串前面会有A.tion1.c(7),这个7就是到时候要插入web_reg_save_param函数的位置,也就是要插入到脚本的第7行。
    np5d'A,Er)K DZZ222458在脚本的第7行前插入一行空白行,然后输入 51Testing软件测试网8@mI5qJ{5g/x.z;C
    web_reg_save_param(“UserSession”, 51Testing软件测试网\-O+gyA,e
    “UserSession” 这个 “UserSession” 就是到时要使用的参数名称,建议给个有意义的名字。
    ^u\dJ,k222458注意:到这里整个web_reg_save_param函数还没完成。 51Testing软件测试网 nu3[E;x^Zo
    51Testing软件测试网"\s#a1fu ye
    2. 找出web_reg_save_param中要用到的边界
    "_ Q"y9ix I@9OK-@222458web_reg_save_param函数主要是透过动态数据的前面和后面的固定字符串,来辨识要撷取的动态数据的,所以我们还需要找出动态数据的边界字符串。 51Testing软件测试网B)C b&uz;M e
    找出左边界字符串
    u1n#z5R2o222458再回到Execution Log中,选取动态数据前的字符串并且复制它。 51Testing软件测试网C I a{y h!p
    这时会有个问题,到底要选取多少字符串才足以唯一识别要找的动态数据呢?建议是越多越好,但是尽量不要包含到特殊字符。 51Testing软件测试网EQ&NT1fE[0`
    在这边我们选取「input type=hidden name=userSession value=」字符串。选好之后,还要再确认一次这段字符串真的是可以唯一识别的,所以我们在Execution Log中透过Ctrl+F的搜寻,找找看这段字符串是否可以找到要找的动态数据。假如找不到,web_reg_save_param函数还有个ORD参数可以使用,ORD参数可以设定出现在第几次的字符串才是要找的字符串。 51Testing软件测试网i.z J8f.H,g }M.`
    将这个边界字符串加到未完成的web_reg_save_param函数中: 51Testing软件测试网O'e%SZ+L!J`
    web_reg_save_param(“UserSession”, “LB= input type=hidden name=userSession value=”,
    1T\ O&hvW ['J222458找出右边界字符串 51Testing软件测试网5JRp J2c,{/HW
    接下来要找出动态数据的右边界字符串,这个字符串就比较好找了,从动态数据的最后一个字符开始,通常就是我们要找的右边界字符串了。 51Testing软件测试网zg,M6D`hs
    以这个例子来看,就是「>」,所以再把右边界字符串加入,web_reg_save_param函数中,这时web_reg_save_param函数已经快完成了。最后再加上「LAST);」就完成整个web_reg_save_param函数了。 51Testing软件测试网(];MZu#t{ xE!v*xq
    web_reg_save_param(“UserSession”, “LB= input type=hidden name=userSession value=”, “RB=>”, LAST); 51Testing软件测试网qs^)R ncB5|
    51Testing软件测试网C'Q+WORn i
    将脚本中有用到关联的数据,以参数取代
    r9[ Q0N(`222458当使用web_reg_save_param建立参数后,接下来就是用“UserSession”参数去取代脚本中写死的(hard-coded)资料。 51Testing软件测试网$p O+v0IU/V#pQ e
    范例:
    Z\&z,e6H5JG222458
    @V _Ncy;VY222458“Name=userSession”, “Value=75893.0884568651DQADHfApHDHfcDtccpfAttcf”, ENDITEM, 51Testing软件测试网?jR&E$s8d&t2Zf
    换成 51Testing软件测试网WN8p'S(wY'w!U
    “Name=userSession”, “Value={UserSession}”, ENDITEM,
    /T6bg$AWBI22245851Testing软件测试网_4RbQ,n3nX3} `
    到这里您已经完成了一个关联了,接下来就是执行脚本,是否能成功运行,假如还是有问题,就要检查看看是否还需要再做另一个关联。
    0F z1TW E$t222458关于 web_reg_save_param 函数 51Testing软件测试网0BS!v!FIJDfL q
    对于关联(correlation)来说,web_reg_save_param是最重要的一个函数,其功能是在下载的网页内容中,透过设定的边界字符串,找出特定的数据并将其储存在一个参数中,以供后续脚本使用。 51Testing软件测试网u)fB*i&m)@q9P _
    接下来将针对web_reg_save_param做比较详细的说明。
    Iq E*@QE222458Service and registration type function 51Testing软件测试网]*`3J9S4`
    web_reg_save_param是一个Service function。service function主要是用来完成一些特殊的工作的,如关联、设定proxy、提供认证信息等,当其作用时,不会对网页的内容做任何的修改。 51Testing软件测试网"mq^ ]D/^&|X O
    web_reg_save_param同时也是一个registration type function (只要函数名称中包含_reg_的字眼,表示其为registration type function)。registration type function意味着其真正作用的时机是在下一个action function完成时执行的。举例来说,当某个web_url执行时所接收到的网页内容中包含了要做关联的动态数据,则必须将web_reg_save_param放在此web_url之前,则web_reg_save_param会在web_url执行完毕后,也就是网页内容都下载完后,再执行web_reg_save_param找寻要做关联的动态数据并建立参数。 51Testing软件测试网/P#D Z]'{Jo
    所以要记住一点,要使用registration type function时,要注意其放置的位置必须在要作用的action function之前。 51Testing软件测试网%vC"QXX&bK9GZK
    语法 51Testing软件测试网3|uZ-D-uV,}
    int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST); 51Testing软件测试网b-di4z$ij
    参数说明 51Testing软件测试网[c:F8@)~i
    ParamName:存放动态数据的参数名称
    4E.Jk M1a a.^222458list of Attributes:其它属性,包含 Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, 以及 SaveLen。属性值不分大小写,例如 Search=all。以下将详细说明每个属性值的意义: 51Testing软件测试网IF0gV Q;i:m!P D
    • Notfound:指定当找不到要找的动态数据时该怎么处置。 51Testing软件测试网9qT&b4[)k$vE*v
    o Notfound=error:当找不到动态数据时,发出一个错误讯息。假如没设定此属性,此为LoadRunner的默认值。
    /m D%T0{ Tr222458o Notfound=warning:当找不到动态数据时,不发出错误讯息,只发出警告,脚本也会继续执行下去不会中断。在对角本除错时,可以使用此属性值。 51Testing软件测试网\8j0}@R@
    • LB:动态数据的左边界字符串。此属性质是必须要有的,而且区分大小写。 51Testing软件测试网}Q sMC
    • RB:动态数据的右边界字符串。此属性质是必须要有的,而且区分大小写。 51Testing软件测试网,x/C rzy8q7w
    • RelFrameID:相对于URL而言,欲搜寻的网页的Frame。此属性质可以是All或是数字,而且可有可无。
    9C\ k(E(JA222458• Search:搜寻的范围。可以是Headers(只搜寻headers)、Body(只搜寻body部分,不搜寻header)、Noresource(只搜寻body部分,不搜寻header与resource)或是All(搜寻全部范围,此为默认值)。此属性质可有可无。 51Testing软件测试网 rm"[rR `$]
    • ORD:指明从第几次出现的左边界开始才是要撷取的数据。此属性质可有可无,默认值是1。假如值为All,则所有找到符合的数据会储存在数组中。 51Testing软件测试网*a+u%|:w.PF d*SrJ4j0?"n
    • SaveOffset:当找到符合的动态数据时,从第几个字符开始才开始储存到参数中。此属性质不可为负数,其默认值为0。 51Testing软件测试网4IP0u Bsu _9s
    • Convert:可能的值有二种: 51Testing软件测试网`$pri I'V6F4D }
    o HTML_TO_URL: 将HTML-encoded数据转成URL-encoded数据格式 51Testing软件测试网'i$n U3g+KUZ.t Q
    o HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式
    u B2o#g'W n222458• SaveLen:从offect开始算起,到指定的长度内的字符串,才储存到参数中。此参数可有可无,默认值是-1,表示储存到结尾整个字符串。
    ]X"c7ftIvP;y222458范例
    v%OeF*I rkK222458web_reg_save_param("A", "LB/ic=<a href=", "RB='>", "Ord=All", LAST);nner会搜寻网页中所有以 「<a href=」 开头,且以 「’>」结束,当中包含的字符串,并且储存在「A」参数中。 51Testing软件测试网1T(D"V8{I7t
    Tips and Tricks
    k:{| Ioj)^222458以下提供一些关联的常见问题:
    O%Ac8jhd222458• 如何打印出参数值?
    v/X]"r,\,v/`+n222458lr_output_message这二个函数来做到。例如:
    y.w.A5s \'oCw4IL,m222458lr_output_message(“Value Captured = %s”, lr_eval_string(“{ParameterName}”));
    ypV E6S Sh222458lr_eval_string与lr_output_message函数的使用说明请参考LoadRunner Online Function Reference。 51Testing软件测试网7P ZtZY Z c_AY
    • 在脚本的data目录下找不到路制时的快照(snapshot)
    :JIp+[7[{222458造成在脚本的data目录下找不到路制时的快照(snapshot)的可能原因如下:
    7t^{$]h/Hy'l.j3v222458o 脚本是由VuGen 6.02或更早的版本所录制的 51Testing软件测试网0er2Za"iVla/e,S\
    o 汇入的Action不会包含快照(snapshot)的档案 51Testing软件测试网 HN7]&~4u M[m
    o 脚本是储存在只读的目录下,早成VuGen无法储存执行时撷取的快照(snapshot) 51Testing软件测试网VdM0W2Z0jU
    o 某些步骤并不会产生快照(snapshot),如浏览某个资源 51Testing软件测试网HW q:`}5r
    o 快照(snapshot)功能被取消 51Testing软件测试网.WQdN(z1vo[
    【Tools】>【General options】>【Correlation】tab >【Save correlation information during replay】 51Testing软件测试网Knq?6HS }C
    • 开启WinDiff时出现「File no longer available」的错误讯息
    yVF/n7x&[ cz0nI222458WinDiff这个工具有些限制,无法开启包含空格符的目录或是脚本,所以建议命名时不要使用空格符,并且尽可能将名称取短一点。
    ;B;Q&HH4t)SHr222458• 录制时突然跳出【Correlation warning】对话窗口 51Testing软件测试网4{t0f,p"Une\/@
    当你有勾选自动关联的【Issue a popup message and let me decide online】选项,当VuGen发现有可能要做关联的数据时,就会跳出【Correlation warning】的窗口,询问你要做关联(Correlation in scrīpt)还是要忽略(Ignore)。 51Testing软件测试网0K3E| o ` N3Ow9a
    另外你也可以勾选【Perform correlation in scrīpt】,让VuGen自动作关联,不会再跳出询问窗口。 51Testing软件测试网(M1TmHKxV3c?t)U
    或是勾选【Disable correlation engine】,关闭自动关联的功能。 51Testing软件测试网"T}\ K [u

    #U-MrM h p#`i~!}222458• 如何手动启动「Scan action for correlation」的功能 51Testing软件测试网pO/\r"C#^d
    要手动启动「Scan action for correlation」的功能,请先执行脚本一次后,点选【Vuser】>【Scan Action for Correlation】。
    &}5D IliYa h D22245851Testing软件测试网!\.o#n@'R$t
    • 执行完脚本后并未出现【Scan Action for Correlation】窗口
    }&a0mr*@ vYr222458要启用【Scan Action for Correlation】功能,请点选【Tools】>【General options】>【Correlation】tab,勾选【Show Scan for correlation popup after replay of Vuser】选项。
  • LR在安装和卸载问题上的一点总结(转帖)

    2008-11-22 23:01:08

    LR在安装和卸载问题上的一点总结(转帖)

    在安装 Loaderunnner 过程中也许你经常遇到,提示无法安装的情况,我也遇到过相关问题,于是查阅了相关资料,总结了一下,好东西不敢独享,拿出来和同行一起交流
    (一) 提示:" the link file .... may be corrupted or has illegated link string "的,提示重复多次均无法安装。
    原因 :你的 Loaderunner 的安装文件夹名写成中文了,造成 Lr 的安装教本无法识别路径,最终导致不断有这样的错误提示。
    解决方案:把安装文件的目录名改为非中文就可以了。
    (二)  没法完全卸载
    要想把 LR 的老版本完全卸载,正确的步骤是:
    1.  停止所有的运行的 LR 的进程和服务( including the Controller, VuGen, Analysis , or the LoadRunner Agent Process/Service )
    2.  备份已有的脚本,你的脚本有可能在你的默认安装路径下
    3.  在控制面板的添加删除程序中,删除 LR ,并重启机器
    4.  手动删除所有 LR 的文件夹,包括您的开始菜单里的 LR 快捷方式
    5.  如果你的版本是 6.0 系列的,删除 Borland 文件夹(通常在 C:\Borland or C:\BDE  目录下)
    6.  搜索    wlrun.* 、    vugen.* ,除了安装文件夹中的文件,其他的都删除
    7.  打开注册表,找到
    如果只安装了 MI 公司的 LoadRunner 这一个产品,请删除:
    HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive
    HKEY_CURRENT_USER\SOFTWARE\Mercury Interactive
    否则请删除:
    HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner
    HKEY_CURRENT_USER\SOFTWARE\Mercury Interactive\LoadRunner
    删除所有和 LR 有关的数值,除了你的 License2 或 License。
    8.  清空回收站
    实现以上步骤后,即可放心安装了,切记在重装后,一定要重启机器,因为一些必要信息要写入注册表。
    (三)  卸载后 , 执行安装过程时出现" license security violation.Operation is not allowed "提示信息 , 安装失败
    解决方案:
    1.  进入一台 Loadrunner 运行正常的电脑(安装路径要和你的相同)进入注册表,导出以下两个目录:
    HKEY_CURRENT_USER\Software\Mercury Interactive
    HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive
    2.  回到刚才安装不成功的电脑 , 进入注册表导入刚才这两个文件。
    3.  再次执行安装。
    建议:如果有用 Ghost 提前做 Ghost,或者为系统设置还原点。
  • LR中全局变量与局部变量——我写的example

    2008-11-22 09:55:29

    globals.h文件

    //包含头文件
    #include "lrun.h"
    #include "web_api.h"
    #include "lrw_custom_body.h"

    //包含全局变量

    char *p;

    vuser_init中脚本

    #include "web_api.h"
    #include "lrw_custom_body.h"


    vuser_init()
    {
     p=(char *) malloc (10*sizeof(char));
        memset(p,'0',9);
        memset(p+9,'/0',1);
    }

    Action中脚本

    Action()
    {  
        lr_output_message("%s",p)
     
    }

    vuser_end中脚本

    vuser_end()
    {
      lr_output_message("%s",p);
         free(p);
         return 0;
    }

    第二次脚本写成这样,可以运行。

    我想问下,第一次globals.h文件中我写成这样,不能运行,为什么?还有我在输入这行memset(p+9,'/0',1);脚本时,'/0'为什么总是人民币'$0'那个符号,而且还可以运行?有懂的朋友给解释下喽~

    globals.h文件

    #ifndef _GLOBALS_H

    #define _GLOBALS_H

    //包含头文件
    #include "lrun.h"
    #include "web_api.h"
    #include "lrw_custom_body.h"

    //包含全局变量

    char *p;

    #endif //_GLOBALS_H

  • LR8.0破解文件及破解方法

    2008-11-20 23:54:30

     

    1、下载:lm70.rar,mlr5lprg.rar这两个文件

    2、这两个文件复制并粘贴到LR8.1安装目录下的bin文件夹下;

    3、打开license管理器,点击添加new license,将老license复制进去,OK,验证通过!

    4、license有:

    AEAMAUIK-YAFEKEKJJKEEA-BCJGI

     AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB

    5、新建两个new license 然后close.

    6、再次重启,如没有提示,则破解成功

241/212>
Open Toolbar