用例设计.docx

上传人:b****2 文档编号:2468864 上传时间:2023-05-03 格式:DOCX 页数:41 大小:288.29KB
下载 相关 举报
用例设计.docx_第1页
第1页 / 共41页
用例设计.docx_第2页
第2页 / 共41页
用例设计.docx_第3页
第3页 / 共41页
用例设计.docx_第4页
第4页 / 共41页
用例设计.docx_第5页
第5页 / 共41页
用例设计.docx_第6页
第6页 / 共41页
用例设计.docx_第7页
第7页 / 共41页
用例设计.docx_第8页
第8页 / 共41页
用例设计.docx_第9页
第9页 / 共41页
用例设计.docx_第10页
第10页 / 共41页
用例设计.docx_第11页
第11页 / 共41页
用例设计.docx_第12页
第12页 / 共41页
用例设计.docx_第13页
第13页 / 共41页
用例设计.docx_第14页
第14页 / 共41页
用例设计.docx_第15页
第15页 / 共41页
用例设计.docx_第16页
第16页 / 共41页
用例设计.docx_第17页
第17页 / 共41页
用例设计.docx_第18页
第18页 / 共41页
用例设计.docx_第19页
第19页 / 共41页
用例设计.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

用例设计.docx

《用例设计.docx》由会员分享,可在线阅读,更多相关《用例设计.docx(41页珍藏版)》请在冰点文库上搜索。

用例设计.docx

用例设计

数量

需求分析

1、内容:

数字、小数点

2、边界值:

不考虑(出现可能性太小不值得测试)

3、约束:

非空(JS)、小数点最多只能有1个[0,1]

4、其他:

默认值:

1

事件:

键盘抬起事件,非数字和小数点被自动清除

粘贴事件,非数字和小数点被自动清除

点击事件,再次校验

特殊输入:

"点"(.)

"点开头"(.9)

"点结尾"(9.)

等价类划分

需求

有效等价类

编号

无效等价类

编号

内容

数字

A01

非数字和小数点

B01

小数点

A02

约束

没有小数点

A03

2个小数点

B02

1个小数点

A04

设计输入

原则:

有效:

1对多;无效:

1对1

序号

有效输入

覆盖编号

序号

无效输入

覆盖编号

1

19

A01、A03

3

A

B01

2

10.9

A02、A04

4

2.3.4

B02

用例模板

用例编号

用例标题

步骤名称

步骤描述

预期输出

ST-001

数量(双精度)

Step0默认值

查看默认值

默认为:

1

Step1输入整数

输入:

19

成功

Step2输入小数

输入:

10.9

成功

Step3输入非数字

输入:

A

失败,提示:

“。

Step4输入多个小数点

输入:

2.3.4

失败,提示:

“。

Step5键盘事件

1、按下任意字母键

2、抬起

输入的该字母被自动清除

Step6粘贴事件

1、复制:

e3Y.%8

2、粘贴

显示:

3.8

Step7点击事件

1、按下任意字母键不抬起

2、鼠标切换焦点

3、提交

1、显示:

非数字输入

2、提示:

“。

Step8特殊情况

只输入1个点

失败,提示:

“。

Step9点开头的情况

Step10点结尾的情况

库存查询——关键字

程序设计

Nowkeyword=request(“keyword”)

sql="select*frombuywheretype=0andzu"

ifnowkeyword<>""then

sql=sql+

"and(bianhao='"&nowkeyword&"'

orid_gysin(selectidfromgyswherecompanylike'%"&nowkeyword&"%')

orid_loginin(selectidfromloginwhereusernamelike'%"&nowkeyword&"%')

orbianhaoin(selectbianhaofrombuywheretype=0

and(titlelike'%"&nowkeyword&"%'

orhuohaolike'%"&nowkeyword&"%')))"

endif

需求分析

查询表

查询字段

字段说明

查询类型

Buy表

Bianhao

编号

精确查询

Title

产品名称

模糊查询

Huohao

货号

模糊查询

gys表

Company

供应商名称

模糊查询

login表

username

经办人

模糊查询

测试用例

用例编号

用例标题

步骤名称

步骤描述

预期输出

ST-009

入库查询关键字

预置条件

完成以下类似测试数据:

1、增加一个供应商:

名称:

中国科学院

2、增加一个员工:

姓名:

小张三

3、增加一个新产品:

供应商:

中国科学院

经办人:

小张三

产品名称:

杂交水稻

产品货号:

1234567

Step1产品名称模糊查询

输入:

交水

找到

Step2产品货号模糊查询

输入:

3456

找到

Step3供应商名称模糊

输入:

国科学

找到

Step4经办人模糊查询

输入:

找到

Step5编号精确查询

取编号中间任意字符查询

找不到

Step6编号精确查询

取全部编号查询

找到

画图分析

分析过程

1、测试对象:

圆角矩形

2、分析:

受其他条件的制约(组合)

条件1:

线条粗细:

条件2:

颜色(前景色、背景色)

条件3:

样式

3、方法:

判定表(多个条件的组合)

用例设计

线条粗细:

细、粗(考虑成本,只取边界)

前景色:

黑、白(考虑成本,只取边界)

背景色:

黑、白(考虑成本,只取边界)

样式:

三种

1~4

5~12

13、14

条件

样式

样式一

样式二

样式三

线条粗细

细、粗

细、粗

——

前景色

黑、白

黑、白

黑、白

背景色

——

黑、白

——

 

库存报警

分析过程

1、测试对象:

登录后报警(自动弹出报警页面)

查看报警信息

2、分析

一个测试对象,两种展现方式

3、影响报警的条件

条件1:

系统设置页面,是否启用库存报警:

是、否

条件2:

库存数量:

0、100

条件3:

最低报警数量:

0、110、90、100

结果1:

登录后是否弹出报警页面

结果2:

库存查询页面是否红色显示

结果3:

库存报警页面是否报警

4、方法:

判定表

用例设计

1

2

3

4

5

6

7

8

9

条件

最低报警数量

0

110

110

90

90

100

100

100

100

库存数量

——

100

100

100

100

100

100

0

0

是否启用库存报警

——

结果

库存报警页面是否报警

是否红色显示

是否弹出报警页面

用例编写

 

网络

协议

OSI协议

物理设备

TCP/IP协议

核心协议

7、应用层

4、应用层

HTTP协议:

1、浏览器产生HTTP请求

2、服务器产生HTTP响应

响应数据经过TCP被分段(分割)

分段数据经过IP被路由

数据经过物理层被实际传输

6、表示层

5、会话层

4、传输层

3、传输层

TCP协议:

每个数据段前加上“头信息”

1、源端口号:

2B

2、目的端口号:

2B

理论端口数量:

2^16=65536

作用:

唯一识别服务器程序

查看命令:

netstat–help

3、TCP连接(3次握手)

1.B->SSYN=1请求连接

2.S->BACK=1同意(确认)

SYN=1请求连接

3.B->SACK=1同意

3、网络层

路由器:

隔离广播

2、网络层

IP协议:

1、源IP地址:

4B

2、目的IP地址:

4B

3、其他:

IP地址分类:

A、B、C

子网掩码:

划分网络地址

默认网关:

数据向外发送

2、数据链路层

交换机:

不隔离广播

1、网络接口层

MAC地址:

1、源物理地址:

6B

2、目的物理地址:

6B

命令:

ipconfig-all

1、物理层

集线器:

产生冲突

请求的时间构成

参考:

HTTPWatchTimeChar

1、查找缓存时间

2、DNS(域名解析)时间:

将域名()转换为IP(216.239.59.99)地址【一次性】

3、TCP连接时间:

三次握手【一次性】

4、发送HTTP请求时间

5、等待服务器响应时间

6、接收并读取服务器的响应时间

 

修改密码

HTTPWatch截取请求

程序逻辑

43行ifrequest("hid1")=""then//注释:

判断是否通过“提交表单”进入的页面

//注释:

通过“修改密码”第一次进入页面

静态页面(HTML)

99行else

//注释:

通过“提交”按钮第二次进入页面

判断旧密码是否正确

修改新密码

121行endif

 

流程图

用例设计

1、参考流程图,遍历所有“路径”,目的:

保证已有的代码是正确的

2、考虑:

以上流程是否有缺陷(缺少了原密码为空的校验)

3、考虑:

数据库(数据类型、边界、约束。

注意:

设计库设计是加密后密码的长度为:

50,不是对用户输入密码的长度限制

 

系统登录

程序逻辑

16行ifrequest("action")=""then

HTML静态页面

JS:

兼容性检查、非空校验

119行else

select*fromlogin......判断用户名密码是否正确

insertintorizi......如果不正确增加一条错误日志

insertintorizi......如果正确增加一条成功日志

select*fromzu_login......查询登录人员是否有对应的部门名称

152行endif

流程图

用例

前提(最全):

路径覆盖+条件覆盖,共9个用例

1、Q->A

2、Q->B

3、Q->C->G(条件覆盖-3个)

4、Q->C->D(条件覆盖-2个)

4.1Q->C->D->F(2个)

4.2Q->C->D->H(2个)

 

登录

分析测试点(主要内容):

1、功能

1、用户名:

最大输入长度20【可改】、自动去除首尾空格

边界值:

浏览器:

(0,20]

数据库:

(0,40]

2、密码:

最大输入长度20【可改】、自动去除首尾空格

3、提交:

(Get/Post)

4、重置:

清空

5、浏览器端:

JS校验

6、服务器端:

ASP校验【防止JS被禁用】

2、易用

1、非空校验要有提示

2、提示错误后要进行焦点定位

3、其他:

Tab键顺序、对齐方式、字体字号。

3、安全

1、SQL注入

2、XSS跨站脚本攻击【用户名:

3、密码是否加密【传输、DB】

4、禁用JS

5、session(绕过登录页面、会话超时等)

4、兼容

1、IE7以下的浏览器中,用户名和密码的宽度不一致【CSS】

2、考虑多种浏览器(IE、Firefox、Chrome)

Get、Post区别

表单

get:

传输使用HTTP请求“头”,地址栏显示请求内容,安全性低

Post:

传输使用HTTP请求“实体”,地址栏干净,安全性高——登录、注册

资源

Get:

要(向服务器要图片)

Post:

给(用户信息给服务器)

如:

图片、动画、JS脚本等等——Get方式

 

session

session:

会话

1、从IE第一次访问网站,到IE被关闭,叫1次会话

2、1个会话期间,可能会产生很多请求和响应

3、进销存分析

1)、打开IE,第一次访问(请求)登录页面(图一)

第一个响应(头)信息中自动分配SessionID

2)、除了第一次以外的其他所有请求(图一)

请求(头)中自动附加该SessionID【LR的关联】

3)、登录成功,向session中记录“用户名”、“用户ID”信息,用以区分访问的用户(图二)

4)、退出,清空session【通过地址栏可以绕过登录页面访问】

5)、其他:

通过session进行权限控制(判断是否是管理员登录)、Session有效时间

图一:

SessionID的产生

 

图二:

向session中存储数据

 

cache

缓存:

保存在浏览器本地的临时文件

缓存的文件(Get方式):

1、JS文件:

JavaScript代码应该被压缩(去除多余的回车、换行、空格)

2、多媒体文件:

图片、动画、图标。

3、cookie(小甜饼):

记录浏览信息、购物车

4、CSS样式表文件:

应该被压缩

5、HTML页面文件

 

HTTP响应:

响应头:

HTTP/1.1200OK

Server:

Microsoft-IIS/5.1

X-Powered-By:

ASP.NET用户自定义头(在IIS中可以添加)

xingming:

zhangsan用户自定义头(在IIS中可以添加)

Cache-Control:

max-age=2471029

Expires:

Fri,31Jan201416:

00:

00GMT过期时间(在IIS中设置)

Date:

Fri,03Jan201401:

36:

10GMT(接收)响应时间,读取“系统时间”

Content-Type:

image/gif

Accept-Ranges:

bytes

Last-Modified:

Tue,17Jun200808:

34:

00GMT最后修改时间,读取“操作系统”修改时间

ETag:

"04cefe354d0c81:

aac"

Content-Length:

19808

缓存文件夹:

其中:

截止期限,读取自响应头中的“Expires”

上次修改时间,读取自响应头中的“Last-Modified”

试验(通过在地址栏按回车键刷新页面):

试验1:

未过期,图片未修改,刷新

结果:

没有产生请求,直接读取缓存,浏览器判断是否过期

试验2:

未过期,图片已修改,刷新

结果:

没有产生请求,直接读取缓存(旧图,没有读取服务器新图)

试验3:

已过期,图片未修改,刷新

结果:

浏览器发送请求,服务器判断没有修改过,返回304,重置缓存过期时间

试验4:

已过期,图片已修改,刷新

结果:

产生请求,返回最新图(200),没有缓存

总结:

1、浏览器判断是否过期,过期要发送请求,不过期直接读缓存;

2、服务器判断是否修改,如果没有修改过,即便过期也可以读缓存(304)

如果修改过,发送最新的文件(200)

3、服务器判断过期时间是否有效,如果过期时间<当前时间,自动将缓存的过期时间改为当前日期

刷新方式:

1、回车:

浏览器判断是否过期

2、刷新按钮,不判断过期,直接发请求,服务器判断是否修改过(304/200)

3、强制刷新(Ctrl+刷新按钮):

永远发送200最新的

 

测试相关:

1、针对对象:

静态资源

2、缓存文件是否正常(Style.css文件被重复下载)

3、设置的“过期时间”是否合理

动态页面:

代码控制是否缓存(进销存登录页面,不缓存)

静态资源:

时间(长、短)是否合理

4、缓存是文本类型(JS、CSS),应该进行压缩处理(baidu缓存)

5、多个小图标合并成一张图片,CSS进行切割(减少HTTP请求)

6、304比200效率高

 

cookie

session:

存在服务器端

cookie:

存在浏览器端

应用:

1、广告位(163首页淘宝的广告)

2、购物车(当当)

3、记录浏览的历史

4、其他信息

 

过程:

1、第一次请求,服务器响应中带着cookie,传给浏览器进行缓存

2、第二次请求,浏览器将cookie自动附加到请求中,传回服务器

测试:

1、测试写人的值是否正确(如:

当当记录购物车商品总数、商品编号)

2、数量尽量少,内容尽量少

3、敏感数据:

加密

 

HTTP响应代码

2XX:

成功

200:

正常(头+身体)

3XX:

重定向

301:

永久重定向(360buy/->)

302:

临时重定向(G->G.hk)

304:

未修改(服务器资源没有修改过,缓存可用)(头)

4XX:

客户机中出现的错误

404:

找不到(网易:

404寻人启事)

403:

目录的浏览权限

401:

不允许匿名访问

5XX:

服务器中出现的错误

500:

服务器内部错误(500.100ASP语法错误)

 

兼容测试

0、举例:

QC后台登录页面

语言:

JS

1)、获取用户环境

2)、判断环境:

操作系统、浏览器厂商、浏览器版本

3)、不支持:

提示

1、JS问题

测试:

是否被禁用

举例:

QC:

网易:

提示,界面乱掉

搜狐:

界面好,提示没有

2、其他:

是否支持ActiveX技术——QC

CSS/CSS3、HTML/HTML5。

3、浏览器的选择

依据(核心)渲染引擎和市场占有率:

IE、Firefox、Chrome

项目:

兼容性考虑不多(指定环境)

公网:

兼容性需要测试

 

数据库

设计表

设计表规律:

1、如果只记录一个对象:

建一张表

2、如果只记录两个对象,而且是一对多的关系:

建两张表【对象1表、对象2表】

3、如果只记录两个对象,而且是多对多的关系:

建三张表【对象1表、对象2表、关系表】

 

一个人有多个QQ号【一对多】:

表1:

人表

ID(P)姓名年龄性别

1张三88男

2李四98女

表2:

QQ号表

ID(P)人_ID(F)QQ号申请时间

1166662010-10-10

2188882000-10-01

 

选课【多对多】

表1:

学生表【对象1表】

ID(P)姓名年龄性别

1张三88男

2李四98女

表2:

课程表【对象2表】

ID(P)课程名课时数前置课程ID

1数学200

2计算机701

表3:

成绩表【关系表】

ID(P)学生ID(F)课程ID(F)成绩

111100

21290

32260

 

下拉列表

建议进销存数据库列表:

(数据字典)

All_Lists

IDF_IDName

10单位列表

21吨

31公斤

40大类列表

54白酒

64葡萄酒

75酱香型白酒

85清香型白酒

96红葡萄酒

 

关于主外键测试

删除功能:

1、如果有主外键约束:

程序:

先删外键表数据,再删主键表数据

测试:

测试删除“主键表”数据,程序是否报错

2、存在事实的主外键关系,但是没有有主外键约束:

程序:

先删外键表数据,再删主键表数据

好处:

即便没有先删外键表数据也不报错(只会形成垃圾数据)

测试:

测试删除“主键表”数据,程序是否将从表数据清除(虽然不会报错,但是不应该有垃圾数据)

3、设计:

存在主外键约束关系:

1)、使用两个delete语句,先删从表,再删主表

2)、级联删除:

删除主表数据,自动删除从表

3)、替代触发器

不存在主外键约束关系:

1)、使用两个delete语句,先删从表,再删主表

2)、After触发器

 

进销存案例

1、多个表之间存在主外键关系:

会员组表、会员表、销售表

2、表之间存在引用关系:

库表(负责人ID列),员工表

3、同时引用外键ID和名称:

buy表(供应商ID、供应商名称)

建议:

效率考虑,去除“供应商ID”字段

多个表之间依次存在多个“主外键”关系

zu_huiyuan(会员组表)

ID组名称

8开发组

Huiyuan(会员表)

IDZU_ID姓名介绍人ID

28张三0

38李四2

Sell(销售表)

ID会员ID

12

23

删除组:

影响会员

删除会员:

影响介绍人

影响销售表

测试用例

编号

标题

步骤名称

操作描述

预期结果

001

删除会员组

预置条件

1、增加组

2、为该组增加2个会员,其中一个是介绍人

3、销售,会员选择被介绍的人

删除组

删除

系统界面:

1、提示:

“影响组、会员、销售记录”

2、组页面:

不显示该记录

3、会员:

不显示该组中的会员

4、销售:

介绍人显示“非会员”

数据库:

1、Sell表,介绍人字段清0

2、huiyuan表,删除成功

3、zu_huiyuan表,删除成功

 

触发器

如果向stu表增加数据【insert】

自动生成一个临时表,叫inserted,表结构和stu表一致

新增的数据先存放到inserted表

如果向stu表增加数据【delete】

自动生成一个临时表,叫deleted,表结构和stu表一致

被删除的数据先存放到deleted表

如果向stu表增加数据【update】

自动生成一个临时表,叫deleted,表结构和stu表一致

自动生成一个临时表,叫inserted,表结构和stu表一致

新数据放在:

inserted

老数据方法:

deleted

 

After触发器

题目1

--删除学生记录的时候自动删除该学生的所有QQ记录

createtriggerstu_del--触发器名称

onstudents--对哪个表做触发器

afterdelete--触发器代码执行的时间(删除stu表之后)

as--触发器执行的代码

deletefromtelwherestu_id=(selectidfromdeleted)

 

deletefromstudentswhereid=3

After触发器

题目2

createtabletest_stu(

idint,--ID

snamevarchar(40)--学生姓名

createtabletest_grade(

idint,--ID

pnamevarchar(20),--科目名称

snamevarchar(40),--学生姓名

gradeint--成绩

inserttest_stuvalues(1,'张三')

inserttest_stuvalues(2,'李四')

inserttest_gradevalues(1,'数学','张三',100)

inserttest_gradevalues(2,'语文','张三',90)

inserttest_gradevalues(3,'语文','李四',80)

select*fromtest_stu

select*fromtest_grade

updatetest_stusetsname='张六'wheresname=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2