软件测试:Soot生成控制流图

本文介绍如何使用Soot工具生成Java程序的控制流图(CFG),包括环境搭建、dot文件生成及可视化步骤,并提供测试用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Soot生成控制流图

 

 

1.下载jdk1.7并配置环境变量(下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html),

   下载eclipse kepler(下载地址:http://www.eclipse.org/downloads/packages/eclipse-standard-43/keplerr),

   下载soot-2.5.0.jar(下载地址:http://pan.baidu.com/s/1kUzd8Tx)。

  【安装遇到的问题】

    1)jdk1.7安装,配置环境变量后报Error:could not open ‘C:\Program Files\Java\jre1.7.0_80\lib\amd64\jvm.cfg'.

          解决方法:把环境变量Path里面的%JAVA_HOME%/bin放在最前面,若没有%JAVA_HOME%/bin,则创建。

 

2.把soot-2.5.0.jar导入项目,并复制粘贴到项目的bin目录,然后命令行进入项目bin目录,使用下面的命令生成dot文件。【sootTest为包(package)名,Triangle为类名】

java -cp soot-2.5.0.jar soot.tools.CFGViewer --soot-classpath .;"%JAVA_HOME%"\jre\lib\rt.jar sootTest.Triangle

 

   

  

执行后在项目bin目录下会生成sootOutput文件夹,里面有生成的dot文件,把生成的dot文件重命名。

  

 

3.下载graphviz(不限版本),然后配置环境变量并安装(参考地址:https://blog.csdn.net/lanchunhui/article/details/49472949),使用dot -version查看安装是否成功。

  

 

4.命令行进入sootOutput目录下,使用dot -Tpng Triangle.dot -o Triangle.png命令,来可视化dot文件。

   

    

 

   生成Triangle类的控制流图:

   

 

 

   生成Test类的控制流图:

      

 

5.测试用例

   

Triangle.java

package sootTest;

public class Triangle {
    public String check(int a, int b, int c){        
        String result = "";
        if(a == b && b == c){
            result = "该三角形为等边三角形";
        }else if(a == b || a == c || b ==c){
            result = "该三角形为等腰三角形";
        }else if(a + b > c && a + c > b && b + c > a){
            result = "该三角形为不等边三角形";
        }else{
            result = "这不是一个三角形";
        }

        return result;     
    }

}

 

Test.java

package sootTest;

public class Test {
    
    private double num = 5.0;
    
    public double cal(int num, String type){
        double temp=0;
        if(type == "sum")
        {
            for(int i = 0; i <= num; i++){
                temp =temp + i;
            }
        }
        else if(type == "average")
        {
            for(int i = 0; i <= num; i++){
                temp = temp + i;
            }
            temp = temp / (num -1);
        }else{
            System.out.println("Please enter the right type(sum or average)");
        }
        return temp;
    }
}

   

转载于:https://www.cnblogs.com/meiqin970126/p/8977573.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值