实验二+030+路凯旋

Posted 凯旋路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验二+030+路凯旋相关的知识,希望对你有一定的参考价值。

一、实验目的

掌握基于覆盖理论与基本路径的基本白盒测试方法和实践

二、实验要求

运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结。

三、实验内容

根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本。

所有的覆盖的技术:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,基本路径测试方法。

包括的内容有:

1) 被测原代码:

public class CodeModification {
     
    private static Scanner scanner;
      
    /*
     * 耳机80元,手机壳10元,手机贴膜8元
     */
    public static float commission(int headphoneNum,int mpShellNum,int csProtectorNum){
        int total = headphoneNum*80+mpShellNum*10+csProtectorNum*8;
        float commission = 0;
        if(total<1000){
            commission = (float) (total*0.1);
        }else if(total>=1000 && total<=1800){
            commission = (float) (1000*0.1+(total-1000)*0.15);
        }else if(total>1800){
            commission = (float) (1000*0.1+800*0.15+(total-1800)*0.2);
        }
        return commission;
    }
     
    public static int inputHandle(Scanner sc, int index){
        int data = 0;
        String[] prompt = {"请输入耳机销量:","请输入手机壳销量:","请输入手机贴膜销量:"};
        while(true){
            System.out.println(prompt[index]);
            String dataString = sc.nextLine();
            try{
                data = Integer.parseInt(dataString);
                if (data<0) {
                    System.out.println("输入数量不满足要求");
                    continue;
                }
                return data;
            }catch(Exception e){
                System.out.println("输入数量不满足要求");
            }
        }
    }
  
    public static void main(String[] args) {
        while(true){
            System.out.println("请分别输入三种手机配件的销售情况:");
            scanner = new Scanner(System.in);
             
            int headphoneNum = inputHandle(scanner, 0);
            int mpShell = inputHandle(scanner, 1);
            int csProtectorNum = inputHandle(scanner, 2);
             
            float tax = commission(headphoneNum,mpShell,csProtectorNum);
            System.out.println("佣金额为:"+tax+"");
        }
    }
}

2)依据覆盖技术,测试用例列表:

DD路径图:

 

程序图:

 

1

A

2

B

3

C

4

D

5

E

6

F

7

G

8

H

9

I

10

J

11

K

12

P

 

所有的条件:

A/1、开始

B/2、输入耳机销量

C/3、字符串里面是不是纯数字

D/4、判断数字是否大于0

E/5、输入手机销量

F/6、输入手机贴膜销量

G/7、计算销售额

H/8、销售额<1000

I/9、销售额 > 1000

J/10、销售额 < 1800

K/11、销售额 > 1800

P/12、结束

测试用例:

语句覆盖、路径覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖:

测试编号

耳机数量

手机数量

手机膜数量

预计结果

实际结果

执行路径

是否通过

1

100

100

100

1820.0元

1820.0元

A-B-C-D-E-C-D-F-C-D-F-G-H-I-J-K-P

2

-12

3

3

输入不满足要求

输入不满足要求

A-B-C-D-B

3

12

-12

32

输入不满足要求

输入不满足要求

A-B-C-D-E-C-D-E

4

12

12

-32

输入不满足要求

输入不满足要求

A-B-C-D-E-C-D-F-C-D-F

5

10

10

10

182.0元

182.0元

A-B-C-D-E-C-D-F-C-D-J-H-P

6

100

10

10

1496.0元

1496.0元

A-B-C-D-E-C-D-F-C-D-J-H-I-J-P

 

条件覆盖、判定/条件覆盖、组合覆盖:

测试编号

耳机数量

手机数量

手机膜数量

预计结果

实际结果

执行路径

是否通过

10

133

134

233

2628.8元

2628.8元

A-B-C-D-E-C-D-F-C-D-F-G-H-I-J-K-P

11

a

c

d

输入不满足要求

输入不满足要求

A-B-C-D-E-C-D-F-C-D-J-H-P

12

200

a

100

输入不满足要求

输入不满足要求

A-B-C-D-E-C-D-F-C-D-J-H-I-J-P

 测试代码:

import static org.junit.Assert.*;
 
import java.util.Scanner;
 
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
 
public class CodeModificationTest {
 
    @Before
    public void setUp() throws Exception {
    }
 
    @After
    public void tearDown() throws Exception {
    }
 
    @SuppressWarnings("deprecation")
    @Test
    public void testCommission() {
        String data1 = CodeModification.commission(10, 10, 10)+"";
        assertEquals("98.0",data1);
         
         
    }
    @SuppressWarnings("deprecation")
    @Test
    public void testCommission1() {
         
        String data2 = CodeModification.commission(10, 20, 30)+"";
        assertEquals("136.0",data2);
         
         
    }
    @SuppressWarnings("deprecation")
    @Test
    public void testCommission2() {
     
        String data3 = CodeModification.commission(20, 20, 20)+"";
        assertEquals("252.0",data3);
         
    }
 
     
 
}

 

 测试结果:

 

 测试小结:

  •      测试找到的缺陷清单
  •      对源代码的修改建议
  •      测试总结与心得体会

测试用例都成功通过。

总结与心得:在我们平常的项目开发中,测试是显得越来越重要。我们很多的时候,必须得测试与开发同步,测试代码和工作代码应同步编译和更新。而junit可以大大减少代码量和文件量,为测试提供了很大的灵活性。所以不要认为压力大,就不写测试代码。相反编写测试代码会使压力逐渐减轻,因为通过编写测试代码地编写出有效率的工作代码。在编写测试用例时要充分覆盖各个路径,以确保每个判断条件都能被执行。

 

以上是关于实验二+030+路凯旋的主要内容,如果未能解决你的问题,请参考以下文章

实验三+030+路凯旋

第五次作业+030+路凯旋

GlobalMapper精品教程030:栅格重采样案例教程(航测DSM)

网上图书商城项目学习笔记-030删除二级分类

[NTUSTISC pwn LAB 7]Return to libc实验(puts泄露libc中gadget片段定位)

201555332盛照宗—网络对抗实验1—逆向与bof基础