设计题和分析题都差不多,考点也类似,无非就是“1复杂度、2测试、6图”:
计算环形复杂度
黑盒测试、白盒测试
数据流图、软件结构图、PAD图、盒图、用例图、类图
流图(也称程序图,程序控制流图),是“退化了的”程序流程图(程序流程图就是高中学的那个)
考试时,如果他给的是PDL(即伪码),我们要先把伪码转换为程序流程图(这个相信大家都会),然后我们需要将程序流程图映射为流图
程序流程图映射为流图的方法如下:
(1)将菱形、矩形换成圈(圈即节点)
(2)单入单出的节点要合并成一个节点
(3)将无菱形、矩形,但是有分支的线转换成一个节点
(4)按程序流程图将各节点连线,注意区分输入输出
3种方法:
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。没学会,点这里:https://jingyan.baidu.com/article/9faa7231621806073c28cbdd.html
黑盒测试包含等价类划分、边界值分析、错误推测
考边界值分析时,你只需要写出:输入、预期的输出即可(输入的数据要分刚好与边界值>、<、=三类);错误推测顶多考小题
方法
(1)写等价类划分表
表中要包含“输入条件”、“有效等价类”、“无效等价类”
输入条件题目会告诉你,有效等价类要根据题目要求划分,无效等价类直接写有效等价类的相反词即可
(2)设计测试用例表
表中包含“测试数据”、“期望结果”、“覆盖范围”
对于有效等价类,一个测试用例可以覆盖多个有效等价类
对于无效等价类,一个测试用例只可以覆盖一个无效等价类,且测试用例不可重复
以下是去年的一道真题,老师上课讲过
白盒测试咱们只讲一下逻辑覆盖,至于控制结构测试盲猜不考
我们针对书上的例子来看
要求:每个语句至少执行一次,意思就是测试路径要走遍所有菱形和矩形
例:A=2,B=0,X=4 执行路径为sacbed
要求:不仅测试路径要走遍所有菱形和矩形,而且要走遍所有菱形的所有分支
例:(1)A=3,B=0,X=3 执行路径为sacbd
(2)A=2,B=1,X=1 执行路径为sabed
要求:不仅测试路径要走遍所有菱形和矩形,而且菱形中的中的每个条件要取到各种可能的结果
即:a菱形中的条件要出现A>1,A<=1,B=0,B!=0
b菱形中的条件要出现A=2,A!=2,X>1,X<=1
例:(1)A=2,B=0,X=4 执行路径为 sacbed
(2)A=1,B=1,X=1 执行路径为 sabd
要求:同时满足判定覆盖、条件覆盖
例:(1)A=2,B=0,X=4 执行路径为 sacbed
(2)A=1,B=1,X=1 执行路径为 sabd
要求:每个菱形中的条件的各种可能组合都出现至少一次
上题共覆盖8种组合条件:
例:(1) 输入:A=2,B=0,X=4 预计输出:略(考试要写)
(2) 输入:A=2,B=1,X=1 预计输出:略(考试要写)
(3) 输入:A=1,B=0,X=2 预计输出:略(考试要写)
(4) 输入:A=1,B=1,X=1 预计输出:略(考试要写)
往年标准答案:
(1)根据算法画出程序流程图(题目没要求也可以不画)
(2)根据自己的习惯选择是否添加“附加的标志变量flag”
(3)根据盒图的基本符号和程序流程图画盒图
根据以下算法绘制盒图(N-S图)
max = a[1];
for ( i = 2 ; i <= n ; i++ )
if ( max < a[i] )
max = a[i]
解:
在for循环里 for(a;b;c)
{循环体}
执行顺序:b为真,执行循环体,再执行c。
(1)PAD图,也很好理解,大家把下面的图背下来,做几道题熟悉一下就可以了
(2)要记住PAD运行的原则:自上而下,自左向右,遍历所有节点
注:图中最左面的竖线是程序的主线,即第一层结构,每增加一个层次,图形向右扩展一条竖线
(1)先简单了解一下他的概念:数据流图是描绘信息流和数据从输入移动到输出的过程中所经受的变换
(2)在数据流图中有四要素:源点终点,数据流,数据存储,处理
数据流图,根据层级分为顶层数据流图、中层数据流图和底层数据流图。除顶层数据流图外,其他数据流图从零开始编号。
(1)从题目中提取信息,找出源点终点,数据流,数据存储,处理,并归类
(2)画顶层数据流图
顶层数据流图只含有一个加工表示整个系统;输出数据流和输入数据流为系统的输入数据和输出数据,表明系统的范围
(3)画第0层数据流图
(4)画第1层数据流图
画数据流图,博主没有好的办法,只能说多做多练,熟能生巧
(1)软件结构图考的就是把数据流图(DFD)转换成软件结构图
(2)DFD可分为事务流和变换流,一般来说,所有的DFD都可以做为变换流,但当有明显的处理中心时,可以做为事务流来做
(3)结构图中,一个方框代表一个模块,框内注明模块的名字或主要功能;方框间的箭头和直线表示模块的调用关系;空心圆尾部箭头表示传递的是数据,实心圆尾部箭头表示传递的是控制信息。
(4)我们在划分DFD图时要用两条虚线将DFD图划分为输入流、变换中心、输出流,其中输入流、输出流的边界划分与设计人员对他们的解释有关,所以不同设计人员设定的输入输出流可能不同
(1)划分DFD图为输入流、变换中心、输出流
(2)完成“第一级分解”(不会没事,下面有例题,一看就会)
(3)完成“第二级分解”
*进阶例题*
用例图的中心思想就是:系统应该为每个用户做什么
画用例图需要包含:
1、系统(方框)
2、行为者(人形符号)
3、用例(椭圆)
(1)包含——包含关系指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。在UML中,包含关系是通过带箭头的虚线段加<>字样来表示,箭头由基础用例(Base)指向被包含用例(Inclusion)。
(2)扩展——在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例(Extension),原有的用例叫做基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。一个基础用例可以拥有一个或者多个扩展用例
(3)泛化——在用例的泛化关系中,子用例继承了父用例所有的结构、行为和关系,子用例是父用例的一种特殊形式,用例的泛化关系通过一个三角箭头从子用例指向父用例来表示。
3种关系的箭头指向都是:内容、功能多的——>内容、功能少的
这个链接我写博客时他还没下架,但是刚刚我看了看下架了,这个就没办法了,当时我也没保存
他给出的例题都没加方框,咱们考试加上
我们直接用一个图来解释类图中类的定义
书上只讲了5种关系:关联、聚集、继承(泛化)、依赖、细化。(考试只考关联、聚集和泛化)
(1)关联:只要两个类能扯上关系,我们就说他有关联关系(用直线表示)
如:作家使用计算机
(2)聚集:只要类与类之间是整体与部分关系,即包含关系,我们就说他有聚集关系
(用菱形箭头表示)
1>共享聚集:如果*在“大的一边”,即箭头顶头,则为共享聚集(用空心菱形箭头表示)
2>组合聚集:如果*在“小的一边”,即箭头末尾,则为组合聚集(用实心菱形箭头表示)
(3)继承(泛化):咱们都学过java,因该懂继承,这就不说了(用三角箭头表示)
1>普通泛化:(用空心三角箭头表示)
2>受限泛化:略
考试的时候咱们大致要画这么一个图: