软件测试-白盒测试:程序结构分析

程序结构分析

参考文献:
软件测试第4章白盒测试一

  • 控制流分析:
    控制流图:由节点和线组成
    控制流图和矩阵:
    控制流图
    控制流图矩阵
    需要注意的是:在控制流图中,节点包括菱形表示的出口的多条流线相交的汇合点。
    程序结构的基本要求:
    a. 转向并不存在的标号;
    b. 没有用的语句标号;
    c. 从程序入口进入后无法达到的语句;
    d. 不能达到停机语句的语句。
    检查可达性:
    检查可达性
  • 数据流分析
    如果程序中某一语句执行时能改变某程序变量V的值,则称V是被该语句定义的。如果一语句的执行引用了内存中变量V的值,则说该语句引用变量V。
    可达性定义:
    a. 语句i对变量V的定义,表示为 V i V_i Vi
    b. 如果在控制流图中一条路径并未对变量V定义,那么该路径就是变量V的明确定义
    c. 如果从节点i到节点j的入口(或出口),变量V有一条明确定义路径,定义 V i V_i Vi便说是达到了结点j的入口(或出口)。
    相关定义:
    s i s_i si: 表示达到i的入口的变量定义的集合。(达到其前趋出口的定义的集合,也就是前趋节点的出口的并集)
    t i t_i ti: 表示达到i的出口的变量定义的集合。(去掉未定义的,加入新定义的)
    p i p_i pi: 是节点i保存的所有定义的集合
    c i c_i ci: 是节点i中生成的定义的集合
    t i = ( s i ∩ p i ) ∪ c i t_i=(s_i∩p_i)∪c_i ti=(sipi)ci
    s i = ⋃ j ∈ x i t j s_i=\bigcup\limits_{j∈x_i}t_j si=jxitj
    s i = ⋃ j ∈ x i ( s j ∩ p j ) ∪ d i s_i=\bigcup\limits_{j∈x_i}(s_j∩p_j)∪d_i si=jxi(sjpj)di
    d i = ⋃ j ∈ x i c j d_i=\bigcup\limits_{j∈x_i}c_j di=jxicj
    检查可达性
    引用未定义变量:对每一结点i,我们依次考虑语句i引用的每一变量,如果对任何这样的变量V,并没有V的定义达到i,那么程序含有一个错误。
    未曾使用的定义:对于每一变量定义 V i V_i Vi,我们依次考虑由 V i V_i Vi达到的每个程序结点j,如果没有引用变量V的相应语句,则程序中含有一个异常。
  • 信息流分析
    求M、N的商,Q为商,R为余数
    信息流分析
    信息流分析
    图a给出每一语句执行时所用到其输入值的变量。其中,为什么语句4执行时用到了M和N,我的想法是,因为循环的判断语句(3)用到了M和N。
    图b给出了其执行可能直接或间接影响输出变量终值的一些语句。其中,因为对Q的定义,并未影响到R的变化,所以R不受语句1、2的影响,但是Q的值受到R值影响。
    图c表明了哪个输入值可能直接或间接影响输出变量。(有赋值语句存在都算吧)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,关于软件测试用例白盒测试和练习题,我可以给你一些参考: 白盒测试是一种测试方法,它通过了解被测试软件的内部结构和代码逻辑来设计测试用例,并对其进行测试。在白盒测试中,测试人员可以访问程序代码和内部数据结构,从而可以设计测试场景以覆盖所有可能出现的情况。下面是一些白盒测试用例的例子: 1. 确保所有代码路径都被测试覆盖,包括所有条件语句和循环结构。 2. 检查是否有未初始化的变量或指针,这可能导致程序崩溃或产生意外的行为。 3. 检查程序是否能够正确地处理错误情况,如无效的输入或错误的参数。 4. 检查程序是否能够正确地处理边界条件,如处理最小和最大值。 5. 检查程序是否能够正确地处理并发或多线程访问。 6. 检查程序是否能够正确地处理内存分配和释放,以避免内存泄漏或错误的内存访问。 下面是一些白盒测试练习题: 1. 设计测试用例以测试一个函数,该函数接受两个整数并返回它们的和。 2. 设计测试用例以测试一个函数,该函数接受一个字符串并返回该字符串中的第一个单词。 3. 设计测试用例以测试一个函数,该函数接受一个整数数组并返回数组中的最大值。 4. 设计测试用例以测试一个函数,该函数接受一个字符串并返回该字符串中的所有元音字母的数量。 5. 设计测试用例以测试一个函数,该函数接受一个日期和一个整数,并返回该日期加上给定天数后的日期。 希望这些练习题和用例可以帮助你更好地理解白盒测试。如果你还有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值