软件工程——习题课【笔记对应】

黑盒测试------决策表/决策树

例题1

例题2

例题3

黑盒测试------等价类划分todo

白盒测试------逻辑覆盖法

参考链接:https://blog.csdn.net/zwj_jyzl/article/details/82962673?fromshare=blogdetail&sharetype=blogdetail&sharerId=82962673&sharerefer=PC&sharesource=weixin_47417033&sharefrom=from_link

六种,由弱到强:

语句覆盖(语句执行一次,矩形方框中的)

判定覆盖(判定的分支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

!用例图------单一用户/多用户

基本的技巧、方法

https://blog.csdn.net/m0_52226803/article/details/120528319?fromshare=blogdetail&sharetype=blogdetail&sharerId=120528319&sharerefer=PC&sharesource=weixin_47417033&sharefrom=from_link

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 隐式外部系统

  1. 银行系统(隐式:在线支付需要外部系统)

  2. 因为促销不是每次结账都发生,只在满足特定条件时触发。

  3. 在线支付需要与银行系统交互,银行在系统边界外,属于外部参与者

  4. 更新商品信息和增加新商品、更新现有商品是泛化关系(特例!)

  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

用户要下机,要先说出身份证号,操作人员核实,核实通过后,操作员多退少补,然后更新工作记录、更新卡的状态

答案

相关推荐
YounGp_oo14 小时前
使用 AI 编程工具的一点实践体会:为什么要减少对话轮次、一次把需求说清楚
软件工程·需求分析·开发经验·工程实践·ai 编程
行业探路者1 天前
如何利用二维码提升富媒体展示的效果?
大数据·人工智能·学习·产品运营·软件工程
光明源智能科技1 天前
服务区智慧公厕的定义与演进:从“卫生设施”到“空间智能体”的跨越
软件工程
雾江流1 天前
Olib 2.4.4|免梯下载Zlibrary电子书 开源免费 需要自己的Zlib账号
软件工程
余生H1 天前
2026 年时间记录软件对比研究:时间线与「时光流」设计的产品分化
前端·软件工程·时间管理·时间记录
宇钶宇夕1 天前
CoDeSys入门实战一起学习(九):CoDeSys库文件实操指南——安装、调用与版本管理
运维·自动化·软件工程
阿勉要睡觉2 天前
软件工程期末汇总
软件工程
搞科研的小刘选手3 天前
【高届数会议推荐】第九届先进电子技术、计算机与软件工程国际学术会议(AETCSE 2026)
计算机·软件工程·软件开发·学术会议·计算机工程·先进电子技术·电子技术
Coder_Boy_3 天前
基于SpringAI的在线考试系统-数据库 表结构 & 完整外键依赖关系梳理
java·数据库·人工智能·软件工程