"软件工程期末试题"
在软件工程中,数据字典是系统设计过程中的重要组成部分,用于详细记录系统中的数据元素、数据结构、数据流、数据存储以及处理过程等信息。题目中的电话服务场景提供了创建数据字典条目的实例。
电话号码的数据流条目定义如下:
1. 电话号码:电话号码可以是分机号或外线号码,表示为 `电话号码=[分机号|外线号码]`。
2. 分机号:分机号的范围是7201到7299,定义为 `分机号=72017299`。
3. 外线号码:外线号码需要先拨打9,然后是市话号码或长话号码,表示为 `外线号码=9+[市话号码|长话号码]`。
4. 长话号码:长话号码由区号加上市话号码构成,定义为 `长话号码=区号+市话号码`。
5. 区号:区号取值在100到300之间,表示为任意数字串,定义为 `区号=100300`。
6. 市话号码:市话号码由局号加上分局号组成,定义为 `市话号码=局号+分局号`。
7. 局号:局号可以是455、466、888或552,定义为 `局号=[455|466|888|552]`。
8. 分局号:分局号是任意长度为4的数字串,定义为 `分局号=4{数字}4`,其中 `数字=[0|1|2|3|4|5|6|7|8|9]`。
接下来,针对程序流程图的测试用例设计:
对于给定的程序流程图,有两个判断条件:`(x>1) AND (y=0)` 和 `(x=2) OR (z>1)`。语句覆盖测试目标是确保每个语句至少被执行一次。
1. 语句覆盖测试用例:给出 x=2,y=0,z=4 的测试数据,这会使得程序沿着abcde路径执行。
判定覆盖则要求覆盖所有可能的条件组合:
2. 判定覆盖测试用例:
- 第一组:x=3,y=0,z=1,覆盖了 `(x>1) AND (y=0)` 为真和 `(x=2) OR (z>1)` 为假的情况,路径为abce。
- 第二组:x=2,y=1,z=2,覆盖了 `(x>1) AND (y=0)` 为假和 `(x=2) OR (z>1)` 为真的情况,路径为acde。
判定表是用于表示逻辑决策的一种工具,例如在天气决定行装的例子中:
| 天气情况 | 下雨 | 不下雨 | 变冷 | 不变冷 |
|----------|------|--------|------|--------|
| 带雨伞 | Yes | No | Yes | No |
| 穿大衣 | Yes | No | Yes | No |
在这个判定表中,每一行代表一种天气情况的组合,列中的Yes/No表示是否需要采取相应行动。例如,当天气下雨且变冷时,需要带雨伞并且穿上大衣。
最后,针对子程序调试:
1. 程序流程图:这个子程序包含两个嵌套的条件语句,可以画出如下的流程图:
- 开始 -> 判断(y>1) AND (z=0) -> 如果为真,则执行x:=x/y -> 判断(y=2) OR (x>l) -> 如果为真,则执行x:=x+1 -> 结束
- 开始 -> 判断(y>1) AND (z=0) -> 如果为假,则跳过x:=x/y -> 判断(y=2) OR (x>l) -> 如果为真,则执行x:=x+1 -> 结束
- 开始 -> 判断(y>1) AND (z=0) -> 如果为假,则跳过x:=x/y -> 判断(y=2) OR (x>l) -> 如果为假,则跳过x:=x+1 -> 结束
2. 条件组合覆盖测试用例:需要设计测试用例覆盖四种可能的条件组合。
- 测试用例1:x=1.5, y=1, z=0,覆盖了`(y>1) AND (z=0)` 为假和`(y=2) OR (x>1)` 为假的情况。
- 测试用例2:x=1.5, y=2, z=0,覆盖了`(y>1) AND (z=0)` 为假和`(y=2) OR (x>1)` 为真的情况。
- 测试用例3:x=1.5, y=1, z=2,覆盖了`(y>1) AND (z=0)` 为真和`(y=2) OR (x>1)` 为假的情况。
- 测试用例4:x=2.5, y=1, z=2,覆盖了`(y>1) AND (z=0)` 为真和`(y=2) OR (x>1)` 为真的情况。
这些测试用例能够全面地检验子程序中的所有逻辑分支,确保其正确性。