实验二+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可以大大减少代码量和文件量,为测试提供了很大的灵活性。所以不要认为压力大,就不写测试代码。相反编写测试代码会使压力逐渐减轻,因为通过编写测试代码地编写出有效率的工作代码。在编写测试用例时要充分覆盖各个路径,以确保每个判断条件都能被执行。

时间: 2024-08-29 13:48:06

实验二+030+路凯旋的相关文章

实验四+030+路凯旋

一.实验目的 1) 学习QTP工具的使用 2)了解黑盒自动化测试 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)对QTP的飞机订票系统的任一界面或控件实现自动化测试.(测试的具体自选) (3)写出该程序的缺陷. 三.实验内容 1.对QTP的样例小程序飞机订票系统,实现自动化测试.(学号被3整除,测3a;余1,测3b:余2,测4a) 2.要求: 1)写出飞机订票系统的被测需求. 自行选择需要测试的部分,根据自己的能力,可大,可小. 描述,被测程序,与被测部分的功能. 2)设计测试用例.

实验三+030+路凯旋

一.实验目的 掌握黑盒测试用例设计方法 二.实验要求 (1)对被测程序进行黑盒测试用例设计 (2)运用等价类.边界值.决策表.状态图法等进行测试用例设计. (3)对手机上任意一款音乐软件进行黑盒测试实践. 三.实验内容 1.对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结. 要求写出测试用例表.执行情况和测试小结. 2.对手机上任意一款音乐软件进行黑盒测试. 要求:1)使用思维导图 2)根据场景法.状态图法 设计测试用例. 3)附加题:如有可能尝试用正交实验法.组合测试对测

第五次作业+030+路凯旋

测试链接:http://www.cnblogs.com/hsy123/p/6803297.html 1.被测项目界面 2.测试用例设计表: (1)等价类 输入条件 有效等价类 编号 无效等价类 编号 Month Month=1,3,5,7,8,10 1 Month<1 13 Month=4,6,8,9,11 2 Month>12 14 Month=2 3 Month为非整数 15 Month=12 4 Date 1<=Day<=27 5 Day<1 16 Day=28 6 D

实验二 作业调度模拟程序

实验二 作业调度模拟程序 一.        实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.        实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素.      作业调度算法: 1)      采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间

实验二 实验报告

实验二 作业调度模拟程序 13物联网  陈梓帆  201306104108 一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 作业调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统

1111实验二 作业调度模拟实验

实验二.作业调度模拟实验 物联网工程 张怡 201306104149 一.实验目的  (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.实验内容和要求 1.至少用三种调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2) 短作业优先 (SJF) 调度算法,优先调度要求运行时间最短的作业. 3) 响应比高者优先(HRRN)调度算法,为每个作业设置一个优先权(响应比),调度之前先计算各作业的优先权,优先数高

实验二作业调度

实验二作业调度模拟程序 一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 作业调度算法: 1)       采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2)      

操作系统 实验二 作业调度模拟程序

实验二.作业调度模拟程序 专业:商软一班   姓名:赖新耀 学号:201406114129 一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素.      作业调度算法: 1)        采用先来先服务(FCFS)调度算法,即按作业到

0421实验二 作业调度模拟程序

实验二作业调度模拟程序 一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素.      作业调度算法: 1)        采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2)