• 1
  • 1
分享

基本路径测试案例分析

Q:请使用基本路径测试对该程序进行测试:

二分查找

public int binSearch(int arr[], int objectValue) {
    int left = 0;
    int right = arr.length - 1;
    int mid;
    while (left < right) {
        mid = (right - left) / 2 + left;
        if (arr[mid] == objectValue) {
            return mid;
        } else if (objectValue < arr[mid]) {
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }
    return -1;
}

基本路径测试法的定义

基本路径测试是一种白盒测试方法,它在程序控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。

1. 画出程序的流程图:

1.png

2. 将程序流程图转换为控制流图

2.png

3、确定环形复杂性度量V(G):

1)V(G)= 4 (个区域)

2)V(G)=E–N+2=11–9+2=4

其中E为流图中的边数,N为结点数;

3)V(G)=P+1=3+1=4

其中P为谓词结点(分支结点)的个数。在流图中,结点2、4、5是谓词结点。

步骤3:确定基本路径集合(即独立路径集合)。于是可确定4条独立的路径:

路径1:1-2-9

路径2:1-2-3-4-9

路径3:1-2-3-4-5-6-8-2…

路径4:1-2-3-4-5-7-8-2…

4、为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。

1、路径1(1-2-9)的测试用:

输入:arr={1} objectValue=1

期望结果:传入数组和目标值,不能使用该方法查到该目标值,返回:-1

Junit单元测试:

3.png

2、路径2(1-2-3-4-9)的测试用例:

输入:arr={1,3,5} objectValue=3

期望的结果:传入数组和目标值,能使用该方法在数组中查到该目标值,返回位置:1

Junit单元测试:

4.png

3、路径3(1-2-3-4-5-6-8-2…)的测试用例:

输入:arr={1,3,5} objectValue=4

期望结果:传入数组和目标值,不能在数组中查到该目标值,返回:-1

Junit单元测试:

5.png

4、路径4(1-2-3-4-5-7-8-2…)的测试用例:

输入:arr={1,3,5} objectValue=2

期望结果:传入数组和目标值,不能在数组中查到该目标值,返回:-1

Junit单元测试:

6.png

5、总结

基本路径测试法是在 程序控制流图 的基础上,通过分析控制构造的环路复杂性,导出 基本可执行路径 集合,从而 设计测试用例 的方法,设计出的测试用例要保证在测试中程序的语句覆盖100%,条件覆盖100%。路径覆盖可以对程序进行彻底的测试,比语句覆盖、判定覆盖、条件覆盖、判定条件覆盖以及条件组合覆盖的覆盖面都要广。


作者:Reset:

原文链接:https://blog.csdn.net/qq_46083525/article/details/124480769

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1. 新增接口并发测试后,会导致接口中的编号重复       我们在功能测试期间往往很难发现此类缺陷,即并发测试过程中,出现编号重复的情况,有些编号如果是唯一性的,代码层面没有做好控制的话,并发测试期间就会导致编号重复,在生产环境中出现该问题将造成严重的后果。例如沐沐在性能测试过程中就遇到了并发期间订单号重复的情况。所以尽量要在功能测试期间,识别出此类业务场景,通过并发测试的方式,验证是否会出现编号重复的情况。2. 新增接口并发测试后,各项性能指标正常,但是列表无法加载出数据      在对新增场景并发测...
            2 0 3607
            分享
          • 最近参加了公司内部的一个24小时编程比赛,组了个四人的小团队,设计了一个拍卖的功能,功能需求如下:1. 登陆2. 支付保证金3. 商品信息展示阶段4. 拍卖阶段叫价(最后一秒有人出价会延时5分钟)5. 尾款支付针对功能需求我们计划创建三个项目,一个后台拍卖活动数据维护,一个小程序做C端,一个api项目对前面两个项目做接口层的支持,业务流程走向如下:接口层部分做了如下8个接口,当然还有8个数据维护的接口这里就不列举了,就是针对表数据的一个增删改查,后面看DB设计即可知晓,流程没有画的特别详细但是主要流程都写了下面看下DB设计一共5张表下面看下我们后端维护数据的页面设计:这边设计的后台数据维护功能...
            11 11 1425
            分享
          • 一、功能测试1、链接测试  (1)测试所有链接是否按指示的那样确实链接到了该链接的页面;(2)测试所链接的页面是否存在;(3)保证Web应用系统上没有孤立的页面(所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问)。2、表单测试(1)注册、登陆、信息提交等,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性;(2)用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等;(3)检验默认值的正确性;(4)如表单只能接受指定的某些值,测试时跳过这些字符,看系统是否会报错。3、Cookies测试(session测试同)(1)Cookies是否起作用;(2)Coo...
            0 0 1086
            分享
          • 1.Android四大组件Android四大基本组件:Activity、BroadcastReceiver广播接收器、ContentProvider内容提供者、Service服务。Activity:应用程序中,一个Activity就相当于手机屏幕,它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含许多活动,比如事件的点击,一般都会触发一个新的Activity。BroadcastReceiver广播接收器:应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activ...
            9 10 1818
            分享
          •   前言  从当初偶然的机会进入测试领域,到现在已经多年了,在这些年做过测试执行、测试技术研究、测试工具等测试相关的工作。最近在工作上有些迷茫,不知道后面的职业道路怎么走,感觉很多测试技能,经验都没得到很好的总结和思考。之前接触过思维导图,但是一直没有发现其价值所在,最近又重新关注,发现思维导图真是个好东东,对测试工作有很大的帮助,所以特总结一下,分享给大家。  正文  一、测试是否需要建模  通常一谈到建模,大家普遍都认为开发才需要,对测试来说,最多可能是在测试设计阶段才需要建模。对于测试模型,一般都谈的比较少,因为很多人都认为测试要求不高,不需要什么模型,也没有什么模型。那么我们分析一下测...
            1 1 2109
            分享
      • 51testing软件测试圈微信