深圳大学 软件测试作业 #2

发布于:2024-06-26 ⋅ 阅读:(44) ⋅ 点赞:(0)

声明:本人上课摆烂选手,稍微听了下,答案仅供参考。

————————

1. 考虑下面这个代码,并回答以下的问题。

(a) 请画出上面代码的控制流程图。(20分)

(b) 请画出上面代码的数据流程图。(10分)

(c) 找出每个变量的定义使用对。(10分)

(d) 根据全定义使用覆盖准则,为变量sq_dist_value找出所有覆盖路径。(10分)

GPT给出答案:

一、
(a)控制流程图
+---------------------+
| Initialize variables|
+---------------------+
          |
          v
+-------------------------+
| Loop i from 0 to n-1    |
+-------------------------+
          |
          v
+----------------------------------------+
| Compute sq_dist_value and dist_value   |
+----------------------------------------+
          |
          v
+----------------------+
| dist_value < bandwidth|
+----------------------+
         / \
       /     \
    Yes      No
     |        |
     v        v
+---------------------------+
| Select kernel type and    |
| update density_value      |
+---------------------------+
          |
          v
+------------------+
| Return density_value |
+------------------+

(b) 数据流程图
+--------+
| Input  |
| data   |
| n      |
| bandwidth|
| kernel_type|
+--------+
     |
     v
+----------------+
| Initialize     |
| variables      |
+----------------+
     |
     v
+--------------+
| For loop     |
| (i=0 to n-1) |
+--------------+
     |
     v
+--------------------+
| Compute            |
| sq_dist_value      |
| dist_value         |
+--------------------+
     |
     v
+---------------------+
| Check bandwidth     |
| and update          |
| density_value       |
+---------------------+
     |
     v
+--------+
| Output |
| density_value|
+--------+

(c)变量定义使用对

density_value

定义:double density_value = 0
使用:返回值return density_value; 以及在计算过程中 density_value += ...

sq_dist_value

定义:double sq_dist_value;
使用:sq_dist_value = ... 以及在各个核函数计算过程中

dist_value

定义:double dist_value;
使用:dist_value = Math.sqrt(sq_dist_value); 以及在三角形核函数和指数核函数计算中

temp_value

定义:double temp_value;
使用:temp_value = ... 以及在四次核函数计算中

(d) 全定义使用覆盖路径
变量 sq_dist_value 的定义使用覆盖路径:
1.定义:sq_dist_value = (data[i][0] - g[0]) * (data[i][0] - g[0]) + (data[i][1] - g[1]) * (data[i][1] - g[1])
2.使用:
dist_value = Math.sqrt(sq_dist_value)
density_value += ... (根据不同的 kernel_type,有不同的使用形式)

因此,sq_dist_value 的覆盖路径包括:
1.计算 sq_dist_value
2.使用 sq_dist_value 计算 dist_value
3.在每种 kernel_type 的条件下使用 sq_dist_value 更新 density_value

2. 考虑以下的逻辑谓词,判断a、b和c那个是主子句,并给出解释。

(a) p1 = ~a ∧ ~b ∧ c (10分)

(b) p2 = b ∧ (a ^ c) ∧ (a ↔ c) (10分) (备注:在这个问题中,没有解释的答案是 0 分。) 

二、

主子句定义:

  1. 写出逻辑谓词真值表:(1为true,即T;0为false即F)

框柱部分,a和b取值不变,改变c的取值,逻辑谓词随之改变。并且c为真时逻辑谓词为真,c为假时逻辑谓词为假(c决定了逻辑谓词取值),所以c是主子句。

不存在其他主子句。

(2)双条件(↔)运算符:a ↔c 表示 a 和 c必须同时为真或同时为假。

这是个合取范式,需要同时为真,逻辑谓词才会为真。可是第二项a,c异或需要ac相异才能为真,而第三项却要求ac相同。所以整个式子永远为假。所以不存在主子句能决定逻辑谓词取值。

3. 给定了逻辑谓词p = ((a ^ c) ∨ b) ^ d及其主子句a,给出:

(a) 广义有效子句覆盖的测试需求。(10分)

(b) 限制性有效子句覆盖的测试需求。(10分) (

c) 相关性有效子句覆盖的测试需求。 (10分) (备注:在这个问题中,没有步骤(如:没有列出条件和条件对)的答案是0分。)

三:

  1. 广义有效子句覆盖,只需要先找出主子句,然后根据逻辑谓词不同来任意组合即可:

(5 , 13)和(8 , 16)中a是有效字句。

所以广义有效子句覆盖的测试需求为:

(5,13),(5,16),(8,13),(8,16)

(b)其实上面中(5 , 13)和(8 , 16)就是限制性有效子句覆盖的测试需求。

限制性有效子句覆盖的定义:

(c)相关性有效子句覆盖定义:

根据定义,接着寻找符合的测试需求对。

除了上面的(5,13),(5,16),(8,13),(8,16)

还有(6,14),(7,15),这两项再任意组合:

(6,14),(6,15),(6,15),(7,15)

所以相关性有效子句覆盖的测试需求为:(5,13),(5,16),(8,13),(8,16),

(6,14),(6,15),(6,15),(7,15)


网站公告

今日签到

点亮在社区的每一天
去签到