欢迎光临~~http://blog.51testing.com/?75087

发布新日志

  • [论坛] BUG级别与严重程度

    chen217222 发布于 2007-08-31 10:33:07

    优先级
    严重程度
    p1 blocker 死机、乱码。
    p1 critical 页面不存在、服务器错误、数据库错误、丢失数据、造成资料被破坏、内存泄露。
        1、出现错误后,测试无法继续执行
    p2 major 主要功能未实现或与产品需求规格书不符。
        1、菜单或按钮没有实现其本来的作用,不能进入所链接的页面,影响其它功能的实现。如添加,修改按钮不起作用。
    2
    、影响下一个流程的操作。如不能保存数据。
    3
    、按钮实现了不属于自已本身的功能。如确定按钮实现了保存功能。
    4
    、遗漏了功能。
    5、数据丢失或毁坏。
    p2p3 normal 运行错误,本身不属于功能问题(和测试环境有关系等)。
        1、各选项或按钮没有实现其本身的作用,但不影响其它功能的实现。如不能删除、搜索 、排序等。
    2
    、对数据约束的功能没有实现。
    3、数据约束与需求不一致。
    p3 minor 次要功能未实现或与产品需求规格书不符。
        1、页面跳转错误。
    2Javascrīpt
    错误。
    3、功能已实现,但无提示信息。
    p3 trivial 装饰性问题,主要是界面方面问题,如错别字、画面误显示或误动作,提示信息有误。
        1、提示信息文字描述问题。
    2、页面显示问题。
    p4p5 enhancement
    进行合理化建议。
        1、不影响使用的瑕疵。
    2、更好的实现方式。
    这是我们部门定义的BUG级别与严重程度的参考,大家看看,有什么不妥及需要完善的地方.
  • SQL学习

    lisa.chen 发布于 2007-08-27 22:58:04Top 1 Digest 1

    以下是从网上搜索来的知识,我们51testing网站上就有。我觉得对于像我一样不怎么懂行的人来讲,还是很有用的,于是也挂在自己的blog上,以加强记忆,希望斑竹不要骂我浪费空间哦。

    **********************************************************

    SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作。


    一、基础
    1
    、说明:创建数据库
    CREATE DATABASE database-name

    2
    、说明:删除数据库
    drop database dbname
    3
    、说明:备份sql server
    ---
    创建 备份数据的
    device
    USE master
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
    ---
    开始 备份

    BACKUP DATABASE pubs TO testBack
    4
    、说明:创建新表
    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
    根据已有的表创建新表:
    A
    create table tab_new like tab_old (使用旧表创建新表
    )
    B
    create table tab_new as select col1,col2... from tab_old definition only
    5
    、说明:删除新表

    drop table tabname
    6
    、说明:增加一个列
    Alter table tabname add column col type
    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
    7
    、说明:添加主键: Alter table tabname add primary key(col)
    说明:删除主键:
    Alter table tabname drop primary key(col)
    8
    、说明:创建索引:
    create [unique] index idxname on tabname(col....)
    删除索引:
    drop index idxname
    注:索引是不可更改的,想更改必须删除重新建。

    9
    、说明:创建视图:create view viewname as select statement
    删除视图:
    drop view viewname
    10
    、说明:几个简单的基本的sql语句

    选择:select * from table1 where 范围
    插入:insert into table1(field1,field2) values(value1,value2)
    删除:delete from table1 where 范围

    更新:update table1 set field1=value1 where 范围
    查找:select * from table1 where field1 like '%value1%' ---like的语法很精妙,查资料!
    排序:
    select * from table1 order by field1,field2 [desc]
    总数:
    select count as totalcount from table1
    求和:
    select sum(field1) as sumvalue from table1
    平均:
    select avg(field1) as avgvalue from table1
    最大:
    select max(field1) as maxvalue from table1
    最小:
    select min(field1) as minvalue from table1
    11
    、说明:几个高级查询运算词

    A
    UNION 运算符
    UNION
    运算符通过组合其他两个结果表(例如 TABLE1 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2

    B
    EXCEPT 运算符

    EXCEPT
    运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

    C
    INTERSECT 运算符

    INTERSECT
    运算符通过只包括 TABLE1 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
    注:使用运算词的几个查询结果行必须是一致的。

    12
    、说明:使用外连接

    A
    left outer join

    左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

    SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    B
    right outer join:
    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

    C
    full outer join

    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。


    二、提升
    1
    、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
    法一:
    select * into b from a where 1<>1
    法二:
    select top 0 * into b from a
    2
    、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用
    )
    insert into b(a, b, c) select d,e,f from b;
    3
    、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用
    )
    insert into b(a, b, c) select d,e,f from b in '
    具体数据库' where 条件

    例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
    4
    、说明:子查询(表名1a 表名2
    b)
    select a,b,c from a where a IN (select d from b )
    或者
    : select a,b,c from a where a IN (1,2,3)
    5
    、说明:显示文章、提交人和最后回复时间

    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
    6
    、说明:外连接查询(表名1a 表名2b)
    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    7
    、说明:在线视图查询(表名1
    a )
    select * from (SELECT a,b,c FROM a) T where t.a > 1;
    8
    、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

    select * from table1 where time between time1 and time2
    select a,b,c, from table1 where a not between
    数值1 and 数值2
    9
    、说明:in 的使用方法

    select * from table1 where a [not] in ('
    1','2','4','6')
    10
    、说明:两张关联表,删除主表中已经在副表中没有的信息

    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
    11
    、说明:四表联查问题:

    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
    12
    、说明:日程安排提前五分钟提醒
    SQL: select * from
    日程安排 where datediff('minute',f开始时间
    ,getdate())>5
    13
    、说明:一条sql 语句搞定数据库分页

    select top 10 b.* from (select top 20
    主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
    14
    、说明:前10条记录
    select top 10 * form table1 where
    范围
    15
    、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
    16
    、说明:包括所有在 TableA 中但不在 TableBTableC 中的行并消除所有重复行而派生出一个结果表

    (select a from tableA ) except (select a from tableB) except (select a from tableC)
    17
    、说明:随机取出10条数据
    select top 10 * from tablename order by newid()
    18
    、说明:随机选择记录
    select newid()
    19
    <SPAN style="COLOR: #454545; FONT-FAMILY:

  • 常用的功能测试方法

    leaf840404 发布于 2007-03-09 16:41:31

    常用的功能测试方法
     
     
    功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:
    1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。
    2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。
    3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。
    4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.
    5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.
    6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.
    7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.
    8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致
    9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.
    10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.
    11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.
    12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.
    13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。
    14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.
    15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.
    16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.
    17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。
    18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*
    19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。
    20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.
  • 常规测试方法汇总

    沉默风云 发布于 2007-02-15 09:08:12

     

    常规测试方法

     

     

    一. 功能测试

     

    1. 安装测试

    1)     安装过程中对于缺省安装目录及任意指定的安装目录,是否都能正确安装;

    2)     若是选择安装,查看能否实现其相应的功能;

    3)     在所有能中途退出安装的位置退出安装程序后,验证此程序并未安装成功(没有程序组及程序项产生);

    4)     软件安装后,对其它已经安装的软件是否有影响;

    5)     裸机安装后,各功能点是否可用;

    6)     安装前,安装程序是否判断可用磁盘空间大小,如果不能满足安装空间要求,安装程序能否继续;

    7)     安装过程中查看 版权声明、版本信息、公司名称、LOGO等是否符合标准;

    8)     安装过程中界面显示与提示语言是否准确、友好;

    9)     重复安装时系统是否有提示、是否可以覆盖安装、是否可以升级安装、是否允许多版本共存;

    10)  是否有注册码或硬件加密狗,在没有它们(或错误)存在的情况下能否顺利安装。

     

    2.配置测试

    1)    是否可以按照用户手册的说明,运行于多种操作系统(Windows 各版本 、Unix Linux 等);

    2)    按系统最低要求进行软件的安装配置,查看能否正常实现各种功能;

    3)    数据源等信息配置不正确时能否给出提示信息;

    4)    是否可以按照用户手册的说明,支持多种数据库。

     

    3. 卸载测试

    1)     卸载后注册表中的注册信息及相关的程序安装目录是否能完全删除掉;

    2)     卸载过程中完全删除共享文件后,看其它程序能否正常运行;

    3)     卸载后,是否对其它已经安装的软件有影响;

    4)     系统卸载后用户建立文档是否保留;

    5)     软件卸载画面上的软件名称及版本信息是否正确;

    6)     在所有能中途退出卸载的位置是否能正确退出;

    7)     卸载过程中界面显示与提示语言是否准确、友好;

    8)     卸载后安装此系统能否打开原来保存的文件,并一切运行正常;

    9)     卸载程序如果要求重新启动机器,在重启动之间是否给用户提示以保存现有的己运行的程序的资料;

    10)  是否可以选择组件进行卸载;

    11)  卸载过程中,对意外情况的处理(掉电等)。

    12)  在卸载过程中,是否有终止或者结束按钮。

     

    4. 运行与关闭测试

    1)     运行时是否与其它应用程序有冲突(内存冲突)

    2)     是否可以同时运行多个程序;

    3)     任务栏有无程序运行提示;

    4)     若有未保存的数据,关闭系统时是否有提示;

    5)     后台服务程序在点击关闭按钮时是否有确认提示;

    6)     运行时是否过份占用系统资源、退出时能否完成释放占用的系统资源。

     

    5. 服务程序的测试

    1)    系统是否限制服务器程序启动的数量,如不限制,同一范围内启动多个服务是否对系统有影响;

    2)    服务程序能否长时间正常运行;

    3)    外界异常后,服务程序的自动恢复能力(服务器掉电、网络中断后恢复、数据库异常后恢复);

    4)    在点击关闭按钮时是否有确认提示;

    5)    应用程序与其他程序是否兼容(能否避免内存冲突)。

     

    6. 系统管理(参数设置)

    1)     参数设置后,能否正确的进行应用;

    2)     设置错误参数,系统的容错能力;

    3)     修改参数,对与之相关模块的影响;

    4)     系统是否有默认的参数,A 有:默认的参数是否起到作用;B 没有:不设置,系统能否运行或者给出提示。

     

    7. 用户、权限管理

    1)     赋予一个人员相应的权限后,在界面上看此人员是否具有此权限,并以此人员身份登陆,验证权限设置是否正确(能否超出所给予的权限);

    2)     删除或修改已经登陆系统并正在进行操作的人员的权限,程序能否正确处理;

    3)     重新注册系统变更登陆身份后再登录,看程序是否能正确执行,具有权限是否正确;

    4)     在有工作组或角色管理的情况下,删除包含用户的工作组或角色,程序能否正确处理;

    5)     不同权限用户登录同一个系统,权限范围是否正确;

    6)     覆盖系统所有权限设定;

    7)     能否添加信息为空的用户(其中包括空用户名及空口令、空用户名非空口令、非空用户名及空口令)

    8)     能否添加长用户名及长口令,如果允许,新用户能否正确登录;

    9)     系统是否允许删除系统管理员这一特殊用户或修改系统管理员口令,删除或修改后系统的实际情况;

    10)  登录用户能否修改自己的权限;

    11)  添加用户(有标识或编号):标识相同,用户名不同;标识相同,用户名相同;标识不同,用户名相同;标识不同,用户名不同;

    12)  登录用户能否修改本人(或其他人)的信息,删除本人(或其他人);

    13)  修改用户的信息(包括权限,口令,基本信息等),对其他模块的影响;

    14)  修改用户信息:修改后的用户信息和已经存在的用户信息相同;修改后的用户信息和已经存在的用户信息不同;

    15)  不给用户授权,是否允许登录;

    15)  改某些设置时,是否会影响具有上级权限及相同权限人员的设置;

    16)  系统管理员修改了某些数据,以其他人员身份登录时数据是否改变;

    17)  用户能否同时属于多个组,各个组的权限能否交叉;

    18)  删除后重新添加的用户是否具有以前的权限;更改用户各项属性(包括权限)看对权限是否有影响。

     

    8. 系统登录测试

    1)     使用合法用户登录系统;

    2)     用户名、口令错误或漏填时能否登陆;

    3)     系统是否容许多次非法登陆,是否有次数限制;

    4)     使用已登录账号登录系统系统能否正确处理;

    5)     使用禁用帐号登陆系统能否正确处理;

    6)     删除或修改后的用户用原用户登录;

    7)     不输入用户名和口令,重复点“确定”和“取消”按钮,是否允许登录。

     

    9.    注销

    1)    注销为原模块、新模块系统能否正确处理;

    2)    中止注销能否返回原模块、原用户;

    3)    注销为原用户、新用户系统能否正确处理;

    4)    使用错误的帐号、口令或无权限帐号、被禁用帐号进行注销。

     

    10. 修改口令

    1)    正常情况;

    2)    输入错误的原口令或新口令与确认口令不一致系统能否正确处理;

    3)    修改口令后,用原口令是否能登录(同时验证新口令是否有效);

    4)    是否能修改其它用户的口令。

           

    11. 右键功能

    1)     右键菜单中的功能是否与菜单(或工具栏)中对应的功能一致;

    2)     右键菜单中的功能能否正确实现;

    3)     同一菜单下的热键是否相同。

     

    12. 记录列表

    1)     增加重复记录、空白记录,系统能否正确处理;

    2)     修改后不保存(有保存按钮),系统能否正确处理;

    3)     删除或修改正在使用信息,系统能否正确处理;

    4)     删除级联记录的上游或下游记录,系统能否正确处理;

    5)     删除记录时是否有提示;

    6)     记录中包含的缺省系统信息能否删除和修改;

    7)     记录列表能否及时反应记录的变化;

    8)     记录变化之后系统相关信息能否及时更新;

     

    13. 统计、查询

    1)     对非法的时间范围系统能否正确处理;

    2)     统计查询语句包含多个与或非条件时,系统能否正确处理;

    3)     条件逻辑混乱,系统能否正确处理;

    4)     多表查询统计及单表查询统计功能是否正确实现;

    5)     分类查询、精确查询、无条件查询、组合查询能否完整列出满足条件的记录;

    6)     能否按系统默认的条件进行查询;

    7)     当统计时间段为当日、跨日、跨月、跨季、跨年度时,统计查询结果是否正确;

    8)     当某些操作被别人取消后,设置条件段为取消前、取消后、包含取消操作的一段时间;

    9)     以不同的权限登录时,统计、查询是否正确;

    10)  在查询或统计大数据量时,系统是否允许终止操作;

    11)  查询、统计按钮是否允许双击或更多的点击,系统做何反映;

    12)  查询出的数据是否允许修改。

     

    <SPAN lang=EN-US style="COL

  • 软件测试流程

    smilings 发布于 2006-12-22 17:46:02

    软件测试流程

    一、新产品或工程管理流程

    1、  需求调研

    在软件需求分析阶段,测试人员从软件生命周期的需求阶段就开始介入在需求阶段的测试人员参与软件需求调研,以测试角度分析需求的可测性,可构思将来对其测试的方法、原则等;同时全面了解系统需求,从客户角度考虑软件测试需要达到的验证状态,即何些功能点需重点测试、何些无需,以便将来制定测试计划。

    2、  制定测试计划

    进行每一种测试之前,测试负责人要根据“产品定义书”及“总体设计说明”和“详细设计文档”制定“测试计划”,制定总体的测试计划,详细阐明本次测试目的、对象、方法、范围、过程、环境要求、接受标准以及测试人员和测试时间等内容,“测试计划”经过审查通过,才能实施。

    3、  需求Review

    开发在完成软件需求分析之后,会提交需求分析文档,测试人员根据需求调研所了解的需求以及产品需求说明文档等资料,对需求分析文档进行Review,检查文档是否满足了需求,是否与需求一致等等。

    4、  设计Review

    在软件分析设计阶段,测试人员参与设计讨论,了解系统的实现方式和原理,并对概要设计和详细设计提出自己的见解。设计结束之后,开发提交概要设计文档和详细设计文档,测试人员对设计进行Review,检查设计规划和实现方案是否合理,如果不合理,存在的问题是什么、如何改进等等。

    5、  测试设计

    在设计测试方案时,首先分解测试内容,对于一个复杂系统,通常可以分解成几个互相独立的子系统,正确地划分这些子系统及其逻辑组成部分和相互间的关系,可以降低测试的复杂性,减少重复和遗漏,也便于设计和开发测试用例,有效的组织测试,将系统分析人员的开发分析文档加工成以测试为角度的功能点分析文档,重要的是描述对系统分解后每个功能点逐一的校验描述,包括何种方法测试、何种数据测试、期望测试结果等。然后以功能点分析文档作为依据进行测试用例的设计,设计测试用例是关系到测试效果以至软件质量的关键性一步,也是一项非常细致的工作,根据对具体的北侧系统的分析和测试要求,逐步细化测试的范围和内容,设计具体的测试过程和数据,同时将结果写成可以按步执行的测试文档。每个测试用例必须包括以下几个部分:

    (1)       标题和编号

    (2)       测试的目标和目的

    (3)       输入和使用的数据和操作过程

    (4)       期望的输出结果

    (5)       其他特殊的环境要求、次序要求、时间要求等

    6、开发测试工具和准备测试数据

       在软件测试中,为了提高测试工作的效益和质量,只要条件许可,应尽可能采用计算机自动或半自动测试的方法,利用软件工具本身的优势来提高工作效率。

    7、测试执行

    当所有必需的测试准备工作都已完成,并且产品已经开发完毕并提交测试,则可以按照预定的测试计划和测试方案逐项进行测试。在测试过程中发现的任何与预期目标不符的现象和问题都必须详细记录下来,填写测试记录。为了能准确的找出问题产生的原因,及时的解决问题,保证测试工作的顺利进行,一般来说所发现的问题必须是能够重视的。

    8、回归测试

       在测试中发现的任何问题和错误都必须有一个明确的解决方法。一般来说,经过修改的软件可能仍然包含着错误,甚至引入了新的错误,因此,对于修改以后的程序和文档,按照修改的方法和影响的范围,必须重新进行有关的测试。另一方面,对于版本更新后的软件也必须进行同样的测试过程。

    9、测试分析报告

       测试结束后要及时地进行总结,对测试结果进行分析,由测试负责人提交“测试分析报告”。

    10、产品发布

       测试完毕,整理产品发布包和相关文档并发布。对于新产品来说,必要的文档必须包括:

    (1)       安装操作手册

    (2)       产品白皮书

    (3)       管理维护手册

    (4)       用户操作手册

    (5)       测试报告

    11、版本控制

    新版本软件发布之后,马上对代码进行质量控制。

    (1)       Build Master给新版本的代码打一个cvs tag,方便代码回滚check out。比如,发布版本为p2p3.3.2,则给该软件代码也打一个与发布版本相同名字的tag p2p3.3.2。这样做的一个好处是,在目前的软件的基础上做了修改并发布新的版本后,如果需要check out某个版本的代码,则可以通过这个版本的tagcheck out,代码的修改可以在该版本上进行。

    (2)       Build Master对新发布的软件代码进行cvs lock,不允许开发人员在软件发布之后commit源代码,直到有新版本需求修改再给开发人员开放commit权限。这样做的好处是避免开发人员随意修改和commit源代码,确保源代码服务器上的源版本版本与当前最新的发布版本一致。

    二、工程维护管理流程

    1、  收集新需求:新功能和不紧急的故障,其代码的修改操作不必马上进行,取而代之的是做好新需求与故障统计;对已经确认的故障也可以先在bug管理系统报bug,但只是记录,不需求马上修改。当然了,对于紧急的工程故障,需要马上修改和测试。

    2、  确认新需求:与工程人员或客户或产品经理确认新需求,确保需求被理解正确。

    3、  需求讨论:当需求与故障积累到一定数量或者工程有新版本需求,进行一次发布测试,在新版本开始修改之前把近期积累的需求与故障整理,与相关开发人员、测试人员、项目经理和测试经理讨论,确认哪些新功能可以实现、新功能的实现方法与业务流程、新功能开发修改时间、测试版本、测试时间与发布时间。

    4、  bug跟踪管理系统报bug:确认所有需要修改的新功能和需求录入bug跟踪管理系统,并在bug跟踪管理系统中详细描述新功能需求和解决方法,同时整理相关bug列表,交付开发修改。

    5、  制定测试计划:

    A、 根据用户需求,定义并完善测试需求,作为测试的标准

    B、 确定重点测试事项,哪些功能需要重点测试

    C、 测试时间计划,并详细计划具体测试任务与时间

    D、风险说明

    E、 测试准备,提前对测试环境和测试资源进行准备

    F、 发布具体时间

    G、资源需求:包括测试人员、硬件需求、软件需求和培训计划

    6、  编写测试案例:根据功能需求编写测试案例

    7、  测试开发:开发自动测试脚本,补充自动测试案例

    8、  测试实施:按照测试计划进行测试,发现并申报bug

    9、  测试评估:

    A、 哪些需求通过了测试

    B、 有哪些遗留问题

    C、 测试效率评估

    D、开发质量度量和评估

    E、 并根据评估编写测试报告

    10、              发布新版本:

    A、 编写新功能文档,给工程提供新功能说明

    B、 编写升级文档,给工程提供升级参考方案

    C、 软件发布,包括新版本软件、新功能文档、升级文档和测试报告

    11、              代码版本控制:新版本软件发布之后,马上对代码进行质量控制。

    A、 Build Master给新版本的代码打一个cvs tag,方便代码回滚check out。比如,发布版本为p2p3.3.2,则给该软件代码也打一个与发布版本相同名字的tag p2p3.3.2。这样做的一个好处是,在目前的软件的基础上做了修改并发布新的版本后,如果需要check out某个版本的代码,则可以通过这个版本的tagcheck out,代码的修改可以在该版本上进行。

    B、 Build Master对新发布的软件代码进行cvs lock,不允许开发人员在软件发布之后commit源代码,直到有新版本需求修改再给开发人员开放commit权限。这样做的好处是避免开发人员随意修改和commit源代码,确保源代码服务器上的源版本版本与当前最新的发布版本一致。

     

    Written by smilings in GuangZhou , 2006

     

     

  • 如何制定成功的测试计划

    tianming08 发布于 2007-07-24 16:08:53

                           如何制定成功的测试计划

       “工欲善其事,必先利其器”。专业的测试必须以一个好的测试计划作为基础。尽管测试的每一个步骤都是独立的,但是必定要有一个起到框架结构作用的测试计划。测试的计划应该作为测试的起始步骤和重要环节。一个测试计划应包括:产品基本情况调研、测试需求说明、测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等等。

       产品基本情况调研:

      这部分应包括产品的一些基本情况介绍,例如:产品的运行平台和应用的领域,产品的特点和主要的功能模块,产品的特点等。对于大的测试项目,还要包括测试的目的和侧重点。

      具体的要点有:

      目的:重点描述如何使测试建立在客观的基础上,定义测试的策略,测试的配置, 粗略的估计测试大致需要的周期和最终测试报告递交的时间。

      变更:说明有可能会导致测试计划变更的事件。包括测试工具改进了,测试的环境改变了,或者是添加了新的功能。

      技术结构:可以借助画图,将要测试的软件划分成几个组成部分,规划成一个适用于测试的完整的系统,包括数据是如何存储的,如何传递的(数据流图),每一个部分的测试是要达到什么样的目的。每一个部分是怎么实现数据更新的。还有就是常规性的技术要求,比如运行平台、需要什么样的数据库等等。

      产品规格:就是制造商和产品版本号的说明。

      测试范围:简单的描述如何搭建测试平台以及测试的潜在的风险。

      项目信息:说明要测试的项目的相关资料,如:用户文档,产品描述,主要功能的举例说明。

      测试需求说明:

      这一部分要列出所有要测试的功能项。凡是没有出现在这个清单里的功能项都排除在测试的范围之外。万一有一天你在一个没有测试的部分里发现了一个问题,你应该很高兴你有这个记录在案的文档,可以证明你测了什么没测什么。具体要点有:

      功能的测试:理论上是测试是要覆盖所有的功能项,例如:在数据库中添加、编辑、删除记录等等,这会是一个浩大的工程,但是有利于测试的完整性。

      设计的测试:对于一些用户界面、菜单的结构还有窗体的设计是否合理等的测试。

      整体考虑:这部分测试需求要考虑到数据流从软件中的一个模块流到另一个模块的过程中的正确性。

      测试的策略和记录:

      这是整个测试计划的重点所在,要描述如何公正客观地开展测试,要考虑:模块、功能、整体、系统、版本、压力、性能、配置和安装等各个因素的影响。要尽可能的考虑到细节,越详细越好,并制作测试记录文档的模板,为即将开始的测试做准备,测试记录重要包括的部分具体说明如下:

      公正性声明:要对测试的公正性、遵照的标准做一个说明,证明测试是客观的,整体上,软件功能要满足需求,实现正确,和用户文档的描述保持一致。

      测试案例:描述测试案例是什么样的,采用了什么工具,工具的来源是什么,如何执行的,用了什么样的数据。测试的记录中要为将来的回归测试留有余地,当然,也要考虑同时安装的别的软件对正在测试的软件会造成的影响。

      特殊考虑:有的时候,针对一些外界环境的影响,要对软件进行一些特殊方面的测试。

      经验判断:对以往的测试中,经常出现的问题加以考虑。

      设想:采取一些发散性的思维,往往能帮助你找的测试的新途径。

      测试资源配置:

      项目资源计划:制定一个项目资源计划,包含的是每一个阶段的任务、所需要的资源,当发生类似到了使用期限或者资源共享的事情的时候,要更新这个计划。

      计划表:

      测试的计划表可以做成一个多个项目通用的形式,根据大致的时间估计来制作,操作流程要以软件测试的常规周期作为参考,也可以是根据什么时候应该测试哪一个模块来制定。

      问题跟踪报告:

      在测试的计划阶段,我们应该明确如何准备去做一个问题报告以及如何去界定一个问题的性质,问题报告要包括问题的发现者和修改者、问题发生的频率、用了什么样的测试案例测出该问题的,以及明确问题产生时的测试环境。

      问题描述尽可能是定量的,分门别类的列举,问题有几种:

      1、严重问题:严重问题意味着功能不可用,或者是权限限制方面的失误等等,也可能是某个地方的改变造成了别的地方的问题。

      2、一般问题:功能没有按设计要求实现或者是一些界面交互的实现不正确。

      3、建议问题:功能运行得不象要求的那么快,或者不符合某些约定俗成的习惯,但不影响系统的性能,界面先是错误,格式不对,含义模糊混淆的提示信息等等。

      测试计划的评审:

      又叫测试规范的评审,在测试真正实施开展之前必须要认真负责的检查一遍,获得整个测试部门人员的认同,包括部门的负责人的同意和签字。

      结果:

      计划并不是到这里就结束了,在最后测试结果的评审中,必须要严格验证计划和实际的执行是不是有偏差,体现在最终报告的内容是否和测试的计划保持一致,然后,就可以开始着手制作下一个测试计划了。

  • 男生止步

    tugygghik 发布于 2007-07-26 09:26:00

    男生止步
    1、如果一个男人开始怠慢你,请你离开他。不懂得疼惜你的男人不要为之不舍,更不必继续付出你的柔情和爱情。

    2、任何时候,不要为一个负心的男人伤心,女子更要懂得,伤心,最终伤的是自己的心。如果那个男人是无情的,你更是伤不到他的心,所以,收拾悲伤,好好生活。

    3、永远不要无休止的围着你喜欢的那个男人转,尽管你喜欢得他快要掏心掏肺的死掉了,也还是要学着给他空间,否则,你要小心缠得太紧勒死了他。

    4、当一个男人对你说:分手吧。请不要哭泣和流泪,应该笑着说:等你说这话很久了。然后转身走掉。

    5、要相信自己,善待自己,让自己的生活精彩纷呈。不要误认为是要让某个人后悔,而是为了让自己的人生更精彩。

    6、每天打扮的优雅从容出门,给自己带上不同的笑容。

    7、对善意欣赏你的男子回报浅浅的微笑。

    8、女子25岁后,要学会保养自己的皮肤。

    9、如果可以不抽烟,别抽。如果可以不喝酒,别喝。

    10、再郁闷也不要去泡酒吧。一个孤独的女子手握高脚杯或者抽烟,会更添寂寞感与忧伤。

    11、不要贪慕虚荣。虚荣是一剂毒药,而且会上瘾。

    12、要穿高跟鞋,但是不要高的太过分。

    13、要有几个死党,独自一人的时候,保证还能有死党为你端茶送水。而不是声竭力嘶的嚎叫为什么说爱你的那个人不能来陪你。

    14、睁开双眼选择你的未来伴侣,如果选错了,立即分开。不要凑合过日,那样会害了两个人。

    15、不要和男人动手。第一,你动不过他;第二,和你动手的男人一定是个疯子。所以,不如不动。

    16、外出旅游。旅行中的心灵能更充实。

    17、有喝下午茶、阅读书本、听音乐的习惯。

    18、买适合自己的衣服、饰物。适合你的就是最好的,所以不必羡慕别人的行头。

    19、不要接受你不喜欢的男子送的任何礼物。

    20、一次只爱一个人。

    21、知道自己要什么,包括你爱的男人。

    22、宁缺毋滥。不要因为寂寞随手抓一个男人,这对你和他都不公平,而且太缺乏责任感。

    23、对你不喜欢的追求者的示好和关心坚定的说不和拒绝。即使他说,这不关你的事。

    24、认真的对待你的工作。工作也许不如爱情来的让你心跳,但至少能保证你有饭吃,有房子住,而不确定的爱情给不了这些,所以,认真努力的工作。

    25、已经错失的好男人不要去后悔,他们不属于你,于是你要睁大眼睛再找一个。

    26、不要爱上已婚却还对你信誓旦旦说会抛妻弃子迎娶你的男人。如果他们真的没感情,自然会离婚,而不是整日对你说些莫名其妙的话。

    27、你可以去爱一个男人,但是不要把自己的全部都赔进去。没有男人值得你用生命去讨好。你若不爱自己,怎么能让别人爱你?

    28、偶尔做美女私房菜给他或者老友吃。但不要天天做,你生来不是为了某个人天天下厨房。

    29、闲情时候自己煮花茶喝或者做茶点吃,放一段柔情音乐,翻阅几页好书,然后睡个懒觉,快哉。

    30、疯狂的事情经历一次就好,比如翻越千山万水的去看望一个人。

    31、没有时间和精力的话,不要乱表爱心养小动物,怠慢它们同样是种残忍,虽然我理解你很寂寞需要一个伴。

    32、不要学人搓麻将。折磨身心的事情不要做。

    33、偶尔自己唱歌给自己听,好坏不重要,心情爽朗就可以。

    34、孤单的时候找好朋友聊天、逛街、吃饭。不要让孤寂淹没自己。

    35、如果发短信息给你喜欢的人,他不回。不要再发。

    36、万一脆弱的不行了,请选好哭泣的对象,不要随便借肩膀和胸膛。

    37、出门前,记得照镜子,检查一下着装是否协调。如果时间太紧,建议睡觉前就选好第二天穿的衣服。

    38、如果喜欢一个人,在允许的情况下,告诉对方。也许得不到答案,但至少你努力过,将来不必后悔(也许后悔的是对方,呵呵)。

    39、有固定的消遣场所,比如固定的咖啡馆、书店。让那个地方的服务生认识你,这样,你会在孤单时有个温暖的去处。

    40、如果决定离开一个人,行动要快一点,快刀斩乱麻;如果决定爱上一个人,时间拉长一点,看清楚是否适合你。


  • 看图熟记TCP/IP协议系统

    caicai1724 发布于 2007-07-27 18:35:22

     

    以下所有内容来自于《TCP/IP协议详解》卷1中文版。图像更能给人直观的感受,容易记忆。

    注:图片看不清楚的,点击另外打开查看即可。

     

    网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。T C P / I P通常被认为是一个四层协议系统,如图1 - 1所示。

     

    假设在一个局域网( L A N)如以太网中有两台主机,二者都运行F T P协议,图1 - 2列出了该过程所涉及到的所有协议。该图是图1-1的具体实现。

     

    1 - 3是一个包含两个网络的互连网:一个以太网和一个令牌环网,通过一个路由器互相连接。构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。

     

     

     

    T C P / I P协议族中,有很多种协议。图1 - 4给出了本书将要讨论的其他协议。从图中可以看出每个协议所属的层。

     

    当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图1 - 7所示。U D P数据与T C P数据基本一致。

     

    当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用( D e m u l t i p l e x i n g),图1 - 8显示了该过程是如何发生的。在图1 - 4中,把它们与I P放在同一层上,那是因为事实上它们是I P的附属协议。但是在这里,我们又把它们放在I P层的上面,这是因为ICMPIGMP报文都被封装在IP数据报中。和图1-7是个相反的过程。

     

  • TCP/IP协议的英文专业术语整理

    caicai1724 发布于 2007-07-27 16:37:46

     

    TCP/IP协议中的一些术语进行了整理。对该协议群有个全面的认识。包括UDP、TCP、IP、datagram、RTO、RTT、SYN、FIN、MTU、MSS、cwnd、rwnd、SLIP、RFC、PPP、flag、ARP、RARP、ICMP、RIP、EGP、IGP、BCAST、MCAST、IGMP、DNS、TFTP、B00TP、SNMP、Telnet、Rlogin、FTP、RPC、NFS。

    UDP(User Datagram Protocol)是指用户数据报协议,是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。

    TCP(Transmission Control Protocol)是指传输控制协议,是基于连接的协议,在正式收发数据前,必须和对方建立可靠的连接。TCP提供一种面向连接的、可靠的字节流服务。许多流行的应用程序如Telnet、Rlogin、FTP和SMTP都使用TCP。

    IP(Internet Protocol)是指网际协议,IP是TCP/IP协议族中最为核心的协议。IP的责任就是把数据从源传送到目的地,由IP协议控制传输的协议单元称为IP数据报。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP提供不可靠、无连接的数据报传送服务。

    datagram是指数据报,表示TCP/UDP等协议发送和接收数据的基本单位。每个Datagram独立发送,彼此没有关联。

    RTO(Retransmisiion Timeout)值是一个包发送出去到发送者认为该包已经丢失需要被重传所经历的时间,发生超时重传这一事件叫timeout。RTO是对RTT的上限值的推测值。

    RTT(Round-trip time)是从一个包离开发送者到发送者接收到接收者发送的对该包的响应确认(ACK:ACKnowledge Character)所经历的时间。

    SYN(synchronize)是TCP建立连接三次握手时的标志。

    FIN是TCP断开连接的四次握手时的标志。

    MTU(Maxitum Transmission Unit)是指最大传输单元,以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。如果IP数据报超过最大的 MTU,将对它进行分片。

    MSS(Maximum Segment Size)是指最长报文大小,是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes),通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。

    cwnd(全称不明)是指拥塞窗口,是对发送端收到确认(ACK)之前能向网络传送的最大数据量的一个发送端限制。

    rwnd(全称不明)是指接收端通知窗口,最近通知的接收端窗口,是对未完成数据量的接收端限制。cwnd和rwnd的最小值决定了数据传送。

    SLIP(Serial Line IP)是指串行线路IP,它是一种在串行线路上对IP数据报进行封装的简单形式。SLIP仍然是一种广泛使用的协议

    RFC(Request for Comment),所有关于Internet的正式标准都以RFC文档出版。另外,大量的RFC并不是正式的标准,出版的目的只是为了提供信息。

    PPP(全称不明)是指点对点协议,包括以下三个部分:1) 在串行链路上封装IP数据报的方法。2) 建立、配置及测试数据链路的链路控制协议( LCP:Link Control Protocol)。3) 针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系

    flag(fragmentation)是指某个数据报的分片,如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据报分成若干片,这样每一片都小于MTU。

    ARP(Address Resolution Protocol)是指地址解析协议,为IP地址到对应的硬件地址之间提供动态映射,将网络中的协议地址(当前网络中大多是IP地址)解析为本地的硬件地址(MAC地址)

    RARP(Reverse Address Resolution Protocol)是指逆地址解析协议,将局域网中某个主机的物理地址转换为IP地址,应用于许多无盘系统在引导时用来获取IP地址的。RARP分组格式基本上与ARP分组一致。

    ICMP(Internet Control Message Protocal)是指Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的状态信息。

    RIP(Routing Information Protocol)是指路由信息协议,它是一种内部网关协议(IGP),用于小型同类网络,是典型的距离向量(distance-vector)协议。RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。

    EGP(Exterier Gateway Protocol)是指外部网关协议,用于在非核心的相邻网关之间传输信息。非核心网关包含互联网络上所有与其直接相邻的网关的路由信息及其所连机器信息,但是它们不包含Internet上其他网关的信息。

    IGP(Interior Gateway Protocol)是指内部网关协议,RIP可能是最常见的IGP协议.

    BCAST(Broadcast)是指广播,指定用于发送广播消息的 IP 地址。使用本地 IP 地址和子网掩码创建缺省广播地址。子网掩码指示哪部分IP地址识别网络,哪部分识别主机。 广播地址是一种特殊的IP地址,共有四种类型。广播是将数据报发送到网络中的所有主机(通常是本地相连的网络)

    MCAST(MultiCast)是指多播,是一种点到多点(或多点到多点)的通信方式,即多个接收者同时接收一个源发送的相同信息。多播是将数据报发送到网络的一个主机组。广播和多播仅应用于UDP。

    IGMP(Internet Group Multicast Protocol)是指Internet组管理协议,该协议运行于主机和与主机直接相连的多播路由器之间,是IP主机用来报告多址广播组成员身份的协议。它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况。

    DNS(Domain Name Server)是指域名服务器,是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。这里提到的分布式是指在Internet上的单个站点不能拥有所有的信息。DNS请求首先到达地理上比较近的DNS服务器,如果寻找不到此域名,主机会将请求向远方的DNS服务器发送。

    TFTP(Trivial File Transfer Protocol)是指简单文件传送协议,运行在 UDP上。 TFTP 的被设计为小而简单容易的运行,因此,它缺乏标准 FTP 协议的许多特征。 TFTP 只能从远程服务器上读、写文件(邮件)或者读、写文件传送给远程服务器。提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。

    BOOTP(Bootstrap Protocol)是指引导程序协议,它可以让无盘站从一个中心服务器上获得IP地址,为局域网中的无盘工作站分配动态IP地址,并不需要每个用户去设置静态IP地址。BOOTP使用UDP,它为引导无盘系统获得它的IP地址提供了除RARP外的另外一种选择。且通常需与TFTP协同工作。

    SNMP(Simple Network Management Protocol)是指简单网络管理协议,而网络中的设备来自各个不同的厂家,SNMP是为了解决Internet上的设备管理问题而产生的。SNMP是一系列协议组和规范,它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。

    Telnet(telecommunication network protocol)是远程登录(Remote Login)的一种协议,Telnet是标准的提供远程登录功能的应用,几乎每个TCP/IP的实现都提供这个功能。它能够运行在不同操作系统的主机之间。Telnet通过客户进程和服务器进程之间的选项协商机制,从而确定通信双方可以提供的功能特性。

    Rlogin(remote login)是远程登录的一种协议,第一次发布是在4.2BSD中,当时它仅能实现Unix主机之间的远程登录。这就使得Rlogin比Telnet简单。在过去的几年中,Rlogin协议也派生出几种非Unix环境的版本。

    FTP(File Transfer Protocol)是指文件传送协议,用于文件传输的Internet标准。FTP协议规范提供了控制文件传送与存储的多种选择。FTP支持有限数量的文件类型(ASCII,二进制,等等)和文件结构(面向字节流或记录),它采用两个TCP连接来传输一个文件。

    SMTP(Simple Mail Transfer Protocol)是指简单邮件传送协议,目标是向用户提供高效、可靠的电子邮件传输。SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。

    RPC(Remote Procedure Call Protocol)是指远过程调用协议,一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。最广泛使用的RPC应用之一就是Sun的NFS。

    NFS(Network File System)是指网络文件系统,是一种在网络上的机器间共享文件的方法,使用NFS,客户可以透明地访问服务器上的文件和文件系统。NFS客户通过向一个NFS服务器发送RPC请求来访问其上的文件。

    MSL(maximum segment lifetime)是指最长分节生命期。

  • 测试工具下载地址大全【转】

    lijiang816 发布于 2007-07-27 20:02:45

  • 测试报告编写

    Spark.lee 发布于 2007-03-14 09:40:15

    摘要 测试报告是把测试的过程和结果写成文档,并对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。本文提供测试报告模板以及如何编写的实例指南。
    关键字 测试报告 缺陷
    正文
        测试报告是测试阶段最后的文档产出物,优秀的测试经理应该具备良好的文档编写能力,一份详细的测试报告包含足够的信息,包括产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终的测试结果分析。
    下面以通用的测试报告模板为例,详细展开对测试报告编写的具体描述。
    PARTⅠ 首页
    0.1页面内容:
    密级
        通常,测试报告供内部测试完毕后使用,因此密级为中,如果可供用户和更多的人阅读,密级为低,高密级的测试报告适合内部研发项目以及涉及保密行业和技术版权的项目。
    XXXX项目/系统测试报告
    报告编号
        可供索引的内部编号或者用户要求分布提交时的序列号

    部门经理______项目经理______
    开发经理______测试经理______

    XXX公司 XXXX单位 (此处包含用户单位以及研发此系统的公司)
    XXXX年XX月XX日
    0.2格式要求:
        标题一般采用大体字(如一号),加粗,宋体,居中排列
    副标题采用大体小一号字(如二号)加粗,宋体,居中排列
    其他采用四号字,宋体,居中排列
    0.3版本控制:
    版本 作者 时间 变更摘要
    新建/变更/审核
    PARTⅡ 引言部分
    1.1编写目的
        本测试报告的具体编写目的,指出预期的读者范围。
    实例:本测试报告为XXX项目的测试报告,目的在于总结测试阶段的测试以及分析测试结果,描述系统是否符合需求(或达到XXX功能目标)。预期参考人员包括用户、测试人员、、开发人员、项目管理者、其他质量管理人员和需要阅读本报告的高层经理。
    提示:通常,用户对测试结论部分感兴趣,开发人员希望从缺陷结果以及分析得到产品开发质量的信息,项目管理者对测试执行中成本、资源和时间予与重视,而高层经理希望能够阅读到简单的图表并且能够与其他项目进行同向比较。此部分可以具体描述为什么类型的人可参考本报告XXX页XXX章节,你的报告读者越多,你的工作越容易被人重视,前提是必须让阅读者感到你的报告是有价值而且值得浪费一点时间去关注的。
    1.2项目背景
        对项目目标和目的进行简要说明。必要时包括简史,这部分不需要脑力劳动,直接从需求或者招标文件中拷贝即可。
    1.3系统简介
        如果设计说明书有此部分,照抄。注意必要的框架图和网络拓扑图能吸引眼球。
    1.4术语和缩写词
        列出设计本系统/项目的专用术语和缩写语约定。对于技术相关的名词和与多义词一定要注明清楚,以便阅读时不会产生歧义。
    1.5参考资料
    1.需求、设计、测试用例、手册以及其他项目文档都是范围内可参考的东东。
    2.测试使用的国家标准、行业指标、公司规范和质量手册等等
    PARTⅢ 测试概要
    测试的概要介绍,包括测试的一些声明、测试范围、测试目的等等,主要是测试情况简介。(其他测试经理和质量人员关注部分)
    2.1测试用例设计
        简要介绍测试用例的设计方法。例如:等价类划分、边界值、因果图,以及用这类方法(3-4句)。
    提示:如果能够具体对设计进行说明,在其他开发人员、测试经理阅读的时候就容易对你的用例设计有个整体的概念,顺便说一句,在这里写上一些非常规的设计方法也是有利的,至少在没有看到测试结论之前就可以了解到测试经理的设计技术,重点测试部分一定要保证有两种以上不同的用例设计方法。
    2.2测试环境与配置
        简要介绍测试环境及其配置。
        提示:清单如下,如果系统/项目比较大,则用表格方式列出

    数据库服务器配置
    CPU:
    内存:
    硬盘:可用空间大小
    操作系统:
    应用软件:
    机器网络名:
    局域网地址:
    应用服务器配置
    …….
    客户端配置
    …….

        对于网络设备和要求也可以使用相应的表格,对于三层架构的,可以根据网络拓扑图列出相关配置。
    2.3测试方法(和工具)
        简要介绍测试中采用的方法(和工具)。
    提示:主要是黑盒测试,测试方法可以写上测试的重点和采用的测试模式,这样可以一目了然的知道是否遗漏了重要的测试点和关键块。工具为可选项,当使用到测试工具和相关工具时,要说明。注意要注明是自产还是厂商,版本号多少,在测试报告发布后要避免大多工具的版权问题。
    PARTⅣ 测试结果及缺陷分析
    整个测试报告中这是最激动人心的部分,这部分主要汇总各种数据并进行度量,度量包括对测试过程的度量和能力评估、对软件产品的质量度量和产品评估。对于不需要过程度量或者相对较小的项目,例如用于验收时提交用户的测试报告、小型项目的测试报告,可省略过程方面的度量部分;而采用了CMM/ISO或者其他工程标准过程的,需要提供过程改进建议和参考的测试报告-主要用于公司内部测试改进和缺陷预防机制-则过程度量需要列出。
    3.1测试执行情况与记录
    描述测试资源消耗情况,记录实际数据。(测试、项目经理关注部分)
    3.1.1测试组织
        可列出简单的测试组架构图,包括:
    测试组架构 (如存在分组、用户参与等情况)
    测试经理(领导人员)
    主要测试人员
    参与测试人员
    3.1.2测试时间
        列出测试的跨度和工作量,最好区分测试文档和活动的时间。数据可供过程度量使用。
    例如 XXX子系统/子功能
    实际开始时间-实际结束时间
    总工时/总工作日
    任务 开始时间 结束时间 总计

    合计
        对于大系统/项目来说最终要统计资源的总投入,必要时要增加成本一栏,以便管理者清楚的知道究竟花费了多少人力去完成测试。
    测试类型 人员成本 工具设备 其他费用

    总计
        在数据汇总时可以统计个人的平均投入时间和总体时间、整体投入平均时间和总体时间,还可以算出每一个功能点所花费的时/人。
    用时人员 编写用例 执行测试 总计

    合计
        这部分用于过程度量的数据包括文档生产率和测试执行率。
    生产率人员 用例/编写时间 用例/执行时间 平均

    合计
    3.1.3测试版本
        给出测试的版本,如果是最终报告,可能要报告测试次数回归测试多少次。列出表格清单则便于知道那个子系统/子模块的测试频度,对于多次回归的子系统/子模块将引起开发者关注。
    3.2覆盖分析
    3.2.1需求覆盖
        需求覆盖率是指经过测试的需求/功能和需求规格说明书中所有需求/功能的比值,通常情况下要达到100%的目标。
    需求/功能(或编号) 测试类型 是否通过 备注
    [Y][P][N][N/A]
    根据测试结果 ,按编号给出每一测试需求的通过与否结论。P表示部分通过,N/A表示不可测试或者用例不适用。实际上,需求跟踪矩阵列出了一一对应的用例情况以避免遗漏,此表作用为传达需求的测试信息以供检查和审核。
    需求覆盖率计算 Y项/需求总数 ×100%
    3.2.2测试覆盖
        需求/功能(或编号) 用例个数 执行总数 未执行 未/漏测分析和原因

        实际上,测试用例已经记载了预期结果数据,测试缺陷上说明了实测结果数据和与预期结果数据的偏差;因此没有必要对每个编号在此包含更详细的说明的缺陷记录与偏差,列表的目的仅在于更好的查看测试结果。
    测试覆盖率计算 执行数/用例总数 ×100%

    3.2缺陷的统计与分析
        缺陷统计主要涉及到被测系统的质量,因此,这部分成为开发人员、质量人员重点关注的部分。
    3.3.1缺陷汇总
        被测系统 系统测试 回归测试 总计

    合计
    按严重程度
    严重 一般 微小

    按缺陷类型
    用户界面 一致性 功能 算法 接口 文档 用户界面 其他

    按功能分布
    功能一 功能二 功能三 功能四 功能五 功能六 功能七


        最好给出缺陷的饼状图和柱状图以便直观查看。俗话说一图胜千言,图标能够使阅读者迅速获得信息,尤其是各层面管理人员没有时间去逐项阅读文章。

    图例
    3.3.2缺陷分析
        本部分对上述缺陷和其他收集数据进行综合分析
    缺陷综合分析
    缺陷发现效率 = 缺陷总数/执行测试用时
    可到具体人员得出平均指标
    用例质量 = 缺陷总数/测试用例总数 ×100%
    缺陷密度 = 缺陷总数/功能点总数
    缺陷密度可以得出系统各功能或各需求的缺陷分布情况,开发人员可以在此分析基础上得出那部分功能/需求缺陷最多,从而在今后开发注意避免并注意在实施时予与关注,测试经验表明,测试缺陷越多的部分,其隐藏的缺陷也越多。
    测试曲线图
    描绘被测系统每工作日/周缺陷数情况,得出缺陷走势和趋向

    重要缺陷摘要
    缺陷编号 简要描述 分析结果 备注

    3.3.3残留缺陷与未解决问题
    残留缺陷
    编号:BUG号
    缺陷概要:该缺陷描述的事实
    原因分析:如何引起缺陷,缺陷的后果,描述造成软件局限性和其他限制性的原因
    预防和改进措施:弥补手段和长期策略
    未解决问题
    功能/测试类型:
    测试结果:与预期结果的偏差
    缺陷:具体描述
    评价:对这些问题的看法,也就是这些问题如果发出去了会造成什么样的影响
    PARTⅤ 测试结论与建议
    报告到了这个部分就是一个总结了,对上述过程、缺陷分析之后该下个结论,此部分为项目经理、部门经理以及高层经理关注,请清晰扼要的下定论。
    4.1测试结论
    1. 测试执行是否充分(可以增加对安全性、可靠性、可维护性和功能性描述)
    2. 对测试风险的控制措施和成效
    3. 测试目标是否完成
    4. 测试是否通过
    5. 是否可以进入下一阶段项目目标
    4.2建议
    1.对系统存在问题的说明,描述测试所揭露的软件缺陷和不足,以及可能给软件实施和运行带来的影响
    2.可能存在的潜在缺陷和后续工作
    3.对缺陷修改和产品设计的建议
    4.对过程改进方面的建议

        测试报告的内容大同小异,对于一些测试报告而言,可能将第四和第五部分合并,逐项列出测试项、缺陷、分析和建议,这种方法也比较多见,尤其在第三方评测报告中,此份报告模板仅供参考。



     
  • Loadrunner中参数的设置

    雷声之前 发布于 2007-03-15 21:08:54

    做负载或者压力测试时,很多人选择使用了Loadrunner测试工具。该工具的基本流程是先将用户的实际操作录制成脚本,然后产生数千个虚拟用户运行脚本(虚拟用户可以分布在局域网中不同的PC机上),最后生成相关的报告以及分析图。但是在录制脚本的过程中会遇到很多实际的问题,比如不同的用户有不同的使用数据,这就牵涉到参数的设置问题。本文就Loadrunner中参数的设置进行说明,希望对大家有所帮助。
    在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本。如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值。这个过程称为参数化脚本。
    本文主要包括如下内容:理解参数的局限性、建立参数、定义参数的属性、理解参数的类型、为局部数据类型设置参数的属性、为数据文件设置参数的属性、从已经存在的数据库中引入数据。
    除了GUI,以下的内容适合于各种类型的用户脚本。

    一、关于参数的定义
    在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本。函数中参数的值就是在录制过程中输入的实际值。
    例如,你录制了一个Web应用程序的脚本。脚本生成器生成了一个声明,该声明搜索名称为“UNIX”的图书的数据库。当你用多个虚拟用户和迭代回放脚本时,也许你不想重复使用相同的值“UNIX”。那么,你就可以用参数来取代这个常量。结果就是你可以用指定的数据源的数值来取代参数值。数据源可以是一个文件,也可以是内部产生的变量。
    用参数表示用户的脚本有两个优点:可以使脚本的长度变短。可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
    参数化包含以下两项任务:在脚本中用参数取代常量值。设置参数的属性以及数据源。
    参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。另外,不是所有的函数都可以参数化的。

    二、参数的创建
    可以指定名称和类型来创建参数。不存在对脚本中参数个数的限制。在Web程序的用户脚本中,你可以使用如下过程在基于文本的脚本视图中创建参数。或者,也可以在基于图标的树形视图中创建参数。
    在基于文本的脚本视图中创建一个参数:
    1
    、 将光标定位在要参数化的字符上,点击右键。打开弹出菜单。
    2
    、 在弹出菜单中,选择“Replace with a Parameter”。选择或者创建参数的对话框弹出。
    3
    、 在“Parameter name”中输入参数的名称,或者选择一个在参数列表中已经存在的参数。
    4
    、 在“Parameter type”下拉列表中选择参数类型。
    5
    、 点击“OK”,关闭该对话框。脚本生成器便会用参数中的值来取代脚本中被参数化的字符,参数用一对“{}”括住。
    注意:在参数化CORBA或者General-Java 用户脚本的时候,必须参数化整个字符串,而不是其中的部分。另外注意:除了Web或者WAP,缺省的参数括号对于任何脚本都是 “{}”。你可以在“General Options”对话框中的“Parameterization”标签(Tools>General Options)中定义参数括号种类。
    6
    、 用同样的参数替换字符的其余情况,选中参数,点击右键,弹出菜单。从弹出的菜单中,选择“Replace More Occurrences”。搜索和替换对话框弹出。“Find What”中显示了你企图替换的值。“Replace With”中显示了括号中参数的名称。选择适当的检验框来匹配整个字符或者大小写。如果要搜索规则的表达式(.!?等等),选中“Regular Expression”检验框,然后点击“Replace”或者“Replace All”
    注意:小心使用“Replace All”,尤其替换数字字符串的时候。脚本生成器将会替换字符出现的所有情况。
    7
    、 如果想用以前定义过的参数来替换常量字符串的话,选中该字符串,点击右键,然后选择“Use Existing Parameter”,子菜单“Use Existing Parameters”弹出。从子菜单“Use Existing Parameters”选择参数,或者用“Select from Parameter List”来打开参数列表对话框。
    注意:如果用以前定义过的参数来替换常量字符串的话,那么,使用“Parameter List”非常方便。同时,还可以查看和修改该参数的属性。
    8
    、 对于已经用参数替换过的地方,如果想取回原来的值,那么,就在参数上点击右键,然后选择“Restore Original value”
    Web用户脚本的树形视图中创建参数:
    1
    、将光标定位在企图参数化的地方,点击右键,从弹出的菜单中选择“Properties”。则相关的属性对话框打开。

    2
    、点击在要参数化的参量的旁边的“ABC”形状的图标。“Select or Create Parameter”对话框打开。
    3
    、在“Parameter name”中输入参数的名称,或者从列表中选择一个已经存在的参数。
    4
    、在“Parameter type”中输入参数的类型。
    5
    、点击“OK”关闭该对话框。用户脚本生成器会用参数来替换最初的字符串常量,并用一个表格形状的图标替换“ABC”形状的图标。
    6
    、要恢复参数化以前的值,点击图标,然后从弹出的菜单中选择“Undo Parameter”,则以前的值便会重现。

    三、定义参数的属性
    创建参数完成后,就可以定义其属性了。参数的属性定义就是定义在脚本执行过程中,参数使用的数据源。在Web用户脚本中,你既可以在基于文本的脚本视图中定义参数属性,也可以在基于图标的树形视图中定义参数属性。下面的过程将教你如何在基于本文的脚本视图中定义参数属性。
    在基于文本的脚本视图中定义参数属性步骤:
    1
    、 在参数上点击右键,有菜单弹出。
    2
    、 在弹出的菜单中,选择“Parameter Properties”。参数属性对话框打开,显示和当前参数类型相关的属性。
    3
    、 输入参数的属性值。
    4
    、 点击“Close”关闭参数属性对话框。
    Web用户脚本的树形视图中定义参数的属性:
    1
    、 将关标定位在参数上,然后点击右键,选择“Properties”。属性对话框打开。
    2
    、 点击要定义属性的参数旁边的表格形状按钮,点击右键,选择“Parameter Properties”。参数属性对话框打开,和参数类型相关的属性显示出来。
    3
    、 输入参数的属性。
    4
    、 点击“Close”关闭参数属性对话框。
    使用参数列表:  使用参数列表可以在任意时刻查看所有的参数,创建新的参数、删除参数,或者修改已经存在参数的属性。
    1
    、 点击参数列表按钮或者用“Vuser>Parameter List”。参数列表对话框打开。
    2
    、 要创建新的参数,点击“New”按钮。新的参数则被添加在参数树中,该参数有一个临时的名字,你可以给它重新命名,然后回车。设置参数的类型和属性,点击“OK”,关闭参数列表对话框。
    注意:不要将一个参数命名为“unique”,因为这个名称是用户脚本生成器本身的。用户脚本生成器创建新的参数,但是不会自动用该参数在脚本中替换任意选中的字符串。
    3
    、 要删除已有的参数,那么,要先从参数树中选择该参数,点击“Delete”,然后确认你的行为即可。
    4
    、 要修改已有参数,那么,要先从参数树中选择该参数,然后编辑参数的类型和属性。

     

    四、理解参数的类型  在你定义参数属性的时候,要指定参数值的数据源。你可以指定下列数据源类型的任何一种:
    Internal Data――
    虚拟用户内部产生的数据。
    Data Files ――
    存在于文件中的数据。可能是已存在的文件或者是用脚本生成器新创建的。
    User-Defined Functions――
    调用外部DLL函数生成的数据  Internal Data包括以下几种:
    1
    Date/Time  Date/Time用当前的日期/时间替换参数。要指定一个Date/Time格式,你可以从菜单列表中选择格式,或者指定你自己的格式。这个格式应该和你脚本中录制的Date/Time格式保持一致。
    2
    Group Name  Group Name 用虚拟用户组名称替换参数。在创建scenario的时候,你可以指定虚拟用户组的名称。当从用户脚本生成器运行脚本的时候,虚拟用户组名称总是None
    3
    Load Generator Name  Load Generator Name用脚本负载生成器的名称替换参数。负载生成器是虚拟用户在运行的计算机。
    4. Iteration Number
      Iteration Number用当前的迭代数目替换参数。
    5
    Random Number  Random Number用一个随机数替换参数。通过指定最大值和最小值来设置随机数的范围。
    6
    Unique Number  Unique Number用一个唯一的数字来替换参数。你可以指定一个起始数字和一个块的大小。
    7
    Vuser ID  Vuser ID用分配给虚拟用户的ID替换参数,ID是由Loadrunner的控制器在scenario运行时生成的。如果你从脚本生成器运行脚本的话,虚拟用户的ID总是-1

    五、数据文件  数据文件包含着脚本执行过程中虚拟用户访问的数据。局部和全局文件中都可以存储数据。可以指定现有的ASCII文件、用脚本生成器创建一个新的文件或者引入一个数据库。在参数有很多已知值的时候数据文件非常有用。数据文件中的数据是以表的形式存储的。一个文件中可以包含很多参数值。每一列包含一个参数的数据。列之间用分隔符隔开,比如说,用逗号。  对数据文件设置参数属性  如果使用文件作为参数的数据源,必须指定以下内容:文件的名称和位置、包含数据的列、文件格式,包括列的分隔符、更新方法。  如果参数的类型是“File”,打开参数属性(Parameter Properties)对话框,设置文件属性如下:
    1
    、 在“File path”中输入文件的位置,或者点击“Browse”指定一个已有文件的位置。缺省情况下,所有新的数据文件名都是“parameter_name.dat”,注意,已有的数据文件的后缀必须是.dat


    2
    、 点击“Edit”。记事本打开,里面第一行是参数的名称,第二行是参数的初始值。使用诸如逗号之类的分隔符将列隔开。对于每一新的表行开始一行新的数据。  注意:在没有启动记事本的情况下如果想添加列,就在参数属性对话框中点击“Add Col”,那么“Add new column”对话框就会弹出。输入新列的名称,点击“OK”。脚本生成器就会添加该列到表中,并显示该列的初始值。


    3
    、 在“Select Column”部分,指明包含当前参数数据的列。你可以指定列名或者列号。列号是包含你所需要数据的列的索引。列名显示在每列的第一行(row 0)。


    4
    、 在“Column delimiter”中输入列分隔符,你可以指定逗号、空格符等等。


    5
    、 在“First data line”中,在脚本执行的时候选择第一行数据使用。列标题是第0行。若从列标题后面的第一行开始的话,那就在“First data line”中输入1。如果没有列标题,就输入0


    6
    、 在“Select next row”中输入更新方法,以说明虚拟用户在脚本执行的过程中如何选择表中的数据。方法可以是:连续的、随机的、唯一的、或者与其它参数表的相同行。
    6.1
    、 顺序(Sequential):该方法顺序地给虚拟用户分配参数值。如果正在运行的虚拟用户访问数据表的时候,它会取到下一行中可用的数据。
    6.2
    、 随机(Random):该方法在每次迭代的时候会从数据表中取随机数
    6.3
    、 使用种子取随机顺序(Use Random Sequence with Seed):如果从Loadrunner的控制器来运行scenario,你可以指定一个种子数值用于随机顺序。每一个种子数值在测试执行的时候代表了一个随机数的顺序。无论你何时使用这个种子数值,在scenario中同样的数据顺序就被分配给虚拟用户。如果在测试执行的时候发现了一个问题并且企图使用同样的随机数序列来重复测试,那么,你就可以启动这个功能(可选项)。
    6.4
    、 唯一(Unique):Unique方法分配一个唯一的有顺序的值给每个虚拟用户的参数。
    6.5
    、与以前定义的参数取同一行(Same Line As ):该方法从和以前定义过的参数中的同样的一行分配数据。你必须指定包含有该数据的列。在下拉列表中会出现定义过的所有参数列表。注意:至少其中的一个参数必须是SequentialRandom或者Unique
    如果数据表中有三列,三个参数定义在列表中:id1name1title1,如下:。
    ID Name Title
    132 Kim Manager
    187 Cassie Engineer
    189 Jane VP
    对于参数id1,你可以指示虚拟用户使用Random方法,而为参数name1title1就可以指定方法“Same Line as id1”。所以,一旦ID“132”被使用,那么,姓名(Name“Kim”和职位(Title“Manager”同时被使用。


    7
    Updta value on数据的更新方法
    7.1
    Each iteration――每次反复都要取新值。

    7.2
    Each occurrence――只要发现该参数就要重新取值。

    7.3
    Once――在所有的反复中都使用同一个值


    8
    When out of values超出范围:(选择数据为unique时才可用到)
    8.1
    Abort Vuser――中止

    8.2
    Continue in a cyclic manner――继续循环取值

    8.3
    Continue with last value――取最后一个值


    9
    Allocate Vuser values in the Controller在控制器中分配值:(选择数据为unique时才可用到)

     

数据统计

  • 访问量: 12060
  • 日志数: 23
  • 图片数: 1
  • 建立时间: 2007-03-21
  • 更新时间: 2007-12-20

RSS订阅