黑盒测试------决策表/决策树
例题1



例题2


例题3


黑盒测试------等价类划分todo
白盒测试------逻辑覆盖法
六种,由弱到强:
语句覆盖(语句执行一次,矩形方框中的)
判定覆盖(判定的分支TF执行一次)包含语句覆盖
条件覆盖(判断中的每个条件TF执行一次)不一定包含判定
判断条件覆盖(每个判定分支中的每个条件都要执行一次)包含判定和条件
条件组合覆盖 包含条件,不一定包含判定
路径覆盖 包含语句和判定
1 判定可以满足语句覆盖,都不能发现逻辑错误
2 条件覆盖不能满足判定覆盖,只考虑每个条件取一次TF,不考虑条件框中的结果
3 条件-判定覆盖,满足100%判定覆盖和100%条件覆盖
4 条件组合覆盖!!
条件框内有3个条件,则最少2^3=8个测试用例;条件框内有2个条件,则最少2^2=4个测试用例;
不同条件框内不需要组合!
单条件框的只需要满足TF都取到即可!
5 路径覆盖可以满足判定覆盖,语句覆盖,其他满足不了
以例题说明这六种覆盖方式
例题1!
cpp
//以下代码用于测试六种逻辑覆盖测试法
IntlogicExample(int x, int y){
int magic=0;
if(x>0&&y>0)
magic=x + y + 10; //语句1
else
magic = x + y - 10; //语句2
if(magic<)
magic=0; //语句3
return magic; //语句4
}

二作答:

参考答案:画的很清晰

例题2
cpp
//被测程序
1 int doWork(int x,int y,int z)
{
2 int k=0,j=0;
3 if((x>3)&&(z<10))
{
4 k=x*y-1;
5 j=sqrt(k);
}
6 if((x==4)||(y>5))
{
7 j=x*y+10;
8 j=j%3;
}
9 return j; }

例题3

二作答:

一、语句覆盖:覆盖BD
x=2,a=2,b=0时,SABCDE
判定覆盖:每个判定的分支都要执行一次(共两个判定条件,每个判定是T/F,因此TT TF FF FT四种情况)
①TT:x=2,a=2,b=0时,SABCDE
②FF:x=0,a=3,b=2时,SACE
③TF:x=0,a=3,b=0时,SABCE
④FT:x=3,a=2,b=1时,SACDE
二、判定覆盖:每个判定的分支至少执行一次(共两个判定条件,每个判定都有TF,都要取到,因此TT+FF或者TF+FT)。(若三个判定框,每个判定都有TF,则TTT+FFF即可,最少两条测试用例即可 )
判定覆盖至少需要两条语句。
①x=2,a=2,b=0时,SABCDE
②x=0,a=3,b=1时,SACE
三、条件覆盖:每个判定条件中至少执行一次(即每个条件至少有一次为真,有一次为假,一共有5个条件,最少TTTTT+FFFFF两条测试用例即可 )
第一个判定中有两个条件,若要都覆盖,则TF+FT或TT+FF即可
第二个判定中有两个条件,若要都覆盖,则TF+FT或TT+FF即可
①x=2,a=2,b=0时,条件依次为TTTT ,SABCDE
②x=0,a=-1,b=1时,条件依次为FFFF ,SACE
或者
①x=0,a=2,b=1时,条件依次为TFTF ,分支为FT,语句SACDE
②x=2,a=-1,b=0时,条件依次为FTFT,分支为FT,语句SACDE
【①x=2,a=3,b=1时,条件依次为TFFT,SACDE
②但FTTF无法同时取到!,a=2时,必定a>1
因此TXTX】
四、判定条件覆盖:每个判定分支和每个条件都要至少执行一次
两个判定框中共有四个条件 ,每个条件都可以取到TF,因此TTTT+FFFF即可或者TFFT+FTTF,总之上下相加TF都能取到
两个判定框 ,每个框可以取到TF,因此TT+FF或者TF+FT,总之上下相加TF都能取到
①x=2,a=2,b=0时,条件依次为TTTT ,分支为TT,SABCDE
②x=0,a=-1,b=1时,条件依次为FFFF,分支为FF,SACE
五、条件组合
设计足够多的用例,使每个判断的所有可能条件都执行一次
第一个判定为T时,对应的两个条件为TT(&)
第一个判定为F时,对应的两个条件可以为TF FT FF(&)
第二个判定为T时,对应的两个条件可以为TT TF FT(||)
第二个判定为F时,对应的两个条件可以为FF(||)
注意:第二个判定条件为TX时,第一个判定条件一定为TX;第一个判定条件是TX时,第二个为TX
因此每个判定分别有四种情况,取四个测试用例就可以覆盖每一个判定的条件组合了。
测试用例
覆盖条件(第一个判定,第二个判定)
判定结果
覆盖路径
|--------------|-------------------|------|--------|
| 测试用例 | 覆盖条件(第一个判定,第二个判定) | 判定结果 | 覆盖路径 |
| x=2,a=2,b=0 | TTTT | TT | SABCDE |
| x=0,a=2,b=1 | TFTF | FT | SACDE |
| x=1,a=-1,b=0 | FTFF | FF | SACE |
| x=2,a=-1,b=1 | FFFT | FT | SACDE |
六、路径覆盖
每条路径都覆盖,路径不等于独立路径!
独立路径的要求比较高(P+1,E-D+2,区域+1)
在条件组合基础上,增加一条路径:SABCE
!用例图------单一用户/多用户
基本的技巧、方法
include两种用法:
一:执行某个大的功能 可能要执行以下的步骤(其中之一),如管理功能包含增删改。(注意区分继承泛化,继承泛化是一种特例!参考例题4)
-
"增加学生信息"不是"管理学生信息"的一种特例
-
而是管理过程中的一个步骤
-
就像"切菜"不是"做菜"的一种类型,而是做菜的一个步骤
对于删除 修改,都需要先查询(查询要修改的是哪个信息)
二:某个功能要想完成,必须先 做A功能,如评论功能必须要先登录
关键字:只有xxx才能;如果需要xx,先要xxx;
tips:
你不会为了登录而登录,一定是因为里面的功能,但是使用功能前,必须要先登录。这个是一个包含关系。但是对于有些情况下,登录可以作为一个单独的功能。
继承泛化:
对于一个功能来说,可以有两种策略完成,那就是父与子

extend的两种用法:
一:拓展功能和基础功能相互独立,拓展功能在基础功能之上,增加了一些别的功能(拓宽了),至于这个增加的功能到底执不执行,取决于用户(可选功能),如查询结果后,可以打印结果
二:在基础用例的特殊情况下,可以用拓展功能作为一个别的办法,如登录时忘记密码了,可以找回密码
关键字:如果 ...可以 xxx;在xxx基础上还可以xxx;
例题
1

2



3 用户的继承泛化
系统的借阅者为学生和教师,系统为借阅者提供查询图书、借阅图书、归还图书的服务。学生最多可借阅5本,教师最多可借阅20本。在借阅和归还图书 时,要先"验证借阅者的身份"。归还图书时,如果超期,要进行罚款。如果教师想借阅的书已被借空,教师还可以通过预约图书的服务预约该书, 预约后可优先借阅该书

4 用例的继承与泛化
区分用例include和继承泛化
用例的include:若要A则必须要先B 。B是要完成A这个大功能的一个步骤 。
管理学生信息包含 增加、修改、查询;means:一个大的功能包含很多个小的功能。必须包含的(类比函数参数必须包含,不能为空);
用例的继承泛化:B和C是A的一种特例方式 。特例 特例 特例!!
登录包含学生登录和教师登录;
查询列车时刻包括按车站查询和按车次查询;
means:一个功能可以有多种实现方式 。如可以有按车站查询和按车次查询两种方式;有学生登录和教师登录两种方式。
若写成include,则每次查询列车时刻都必须包含按车站查询(其实不然,用户可以选择按车次查询)。

5 隐式外部系统
-
银行系统(隐式:在线支付需要外部系统)
-
因为促销不是每次结账都发生,只在满足特定条件时触发。
-
在线支付需要与银行系统交互,银行在系统边界外,属于外部参与者
-
更新商品信息和增加新商品、更新现有商品是泛化关系(特例!)
-
管理员、录入员都要登录,是员工就要登录!
系统拥有注册功能,顾客注册后进行登录,才能在系统中购买商品;
顾客可以通过系统浏览商品,查看商品的详细信息,购买自己喜欢的商品;
顾客付费方式要多样化,既可以通过银行的在线支付功能付款,也可通过汇款方式付款;
系统拥有商品的促销功能,对于某些系统指定的商品或用户购买的商品金额超过一定数量时,在顾客结账时给予优惠;
用例图顾客登录后,可以使用留言功能对商品或服务留言评价;
系统的管理员可以使用留言功能对顾客提出的疑问做出解答,还可以管理注册的用户;
录入员能够更新商品信息,包括增加新商品和对现有商品信息的更新;
系统允许多人同时在线,进行商品的浏览和购买操作。

6
关键字:如果xxx,就xxx。extend。在特殊情况下的一种处理方式!
在棋牌馆管理系统中,客户通过网络进行预订座位操作,其中需要检查座位信息。如果没有空闲或满意的座位,则选择处理等候队列。
当客户到棋牌馆后,总台服务员安排座位,其中需要检查座位信息。
客户要离开棋牌馆时,总台服务员需处理结账,支持处理现金结账和通过银联POS系统处理银行卡结账两种方式。

7
需要考虑多个主体之间的联系



答案

用例图小结:
include:如果xxx,需要xxx;先xxx才能xxx;管理包括增删改;删改之前要先查询;
extend:xxx时,要xxx;如果xxx,则xxx;(某种情况下的一种特殊处理方式);或者 在xxx后,还可以/可以xxx; 在基础用例上拓展出来的一个新的小功能(如查询成绩和打印成绩单)
继承泛化:有xx和xx两种方式;xxx包含xxx和xxx;(特例!)用户泛化、用例泛化
隐式:银行系统结账;
结账:顾客、收银员、银行系统;通过取款机、通过银行,要分析是否是系统外其他参与者参与;
注册和登录:如果题目给出了注册和登录的先后顺序,那么可以注册作为一个用例,登录作为其他用例的包含用例
系统没描绘的关系到底加不加,分析来看,加了总比不加强,加在数量上加,不要在逻辑修改,要保证逻辑关系,然后增加线条数量也是可以的,比如管理员多管一些,管理员也要登录这些。
数据字典todo
类图
注意聚合 组合关系:整体指向部分

状态图VS活动图
参考:https://cloud.tencent.com/developer/article/2087808
都是圆角矩形框,只有流程图中的行为是直角矩形(就你高贵------
活动图:活动图 描述的是业务流程或操作的执行序列。 活动图通过分叉与汇合 ,可以直观地描述并行执行的多个活动流。箭头上不需要写东西(不需要外部push下一步,整个工程水到渠成)
状态图:状态图 描述的是一个特定对象(如一个订单、一台电梯)在其生命周期内所经历的状态序列 。它关注的是对象的"状态 ",以及引起状态转移的事件(如"支付成功"事件将订单状态从"待支付"变为"待发货")。箭头上需要写触发下一个状态的动作是什么。push出来的。

活动图
不是带xx态就是状态图
操作人员登录后,给新用户进行注册的过程;初态;查找,确定此人没有注册过(判断:注册过则返回提示已经注册,没有注册过则进行注册);注册;并发分叉(信息录入、充值);充值这里有一个判断,是否低于最小上机额度(低于返回继续充值,如果高于则继续执行);并发回合;注册完成;终态


活动图例1
【描述例子】客户在汽车租赁系统中取车的时序图:这里有5个对象Customer(客户)、CommonWorker(工作人员)、RequestOrder(预定请求)WorkRecord(工作记录)Car(车)客户先提出取车请求并出示清单、工作人员检查客户的,确定后让客户付款、工作人员填写工作记录,同时登记车的状态、最后客户取走车。
【客户和工作人员直接交互的】
【工作人员再去check一些东西】
【顾客付款也是给工作人员的】

答案

活动图例2
机房收费系统例子】
如上相似:临时用户需要下机退款,有如上5个对象:临时用户、下机请求、操作人员、工作记录、ID
用户要下机,要先说出身份证号,操作人员核实,核实通过后,操作员多退少补,然后更新工作记录、更新卡的状态

答案
