2017-04-05 23:34:24 qq_32507527 阅读数 2639
  • 2D动作手游-Spine骨骼动画

    本课程是基于Spine骨骼动画实现的动作类手游,手游功能包括文本文件加密,技能系统,战斗系统,buff系统等,是一个功能齐全的游戏。

    31630 人正在学习 去看看 姜雪伟

1.地位:
决策表法被称为“最严格、最具有逻辑性”的黑盒测试方法,能够复杂逻辑关系和多条件组合情况表达的较为明确。适用于:输入输出较多且相互制约条件较多的问题。

2.决策表:
由条件桩、动作桩、条件项、动作项四个部分组成
条件桩是指问题中的限制条件;
动作桩是指要执行的操作;
条件项其中条件桩中各个条件组合;
动作项是一个条件组合的特定取值后相应要执行的动作;
规则: 任何一个条件组合的特定取值及相应要执行的操作称为一条规则;

3.规则合并(判定表的简化)
有两条或多条规则具有相同动作且他们的条件项之间存在可化简关系就可以将规则合并。
那么,什么是可化简关系?
即条件桩中仅有一个条件的值不一样,而执行的动作却是一致的。

4.总结
决策表的适用范围:程序中,输入输出较多,而且相互制约条件较多;如,if_then_else逻辑很突出——输入变量间存在逻辑关系——设计输入变量子集的计算——输入和输出之间存在因果关系。
优点:决策表可以把复杂的问题按各种可能的情况一一列举出来,简单明了,避免遗漏。
缺点:不可以表达重复执行的动作,如循环结构。

5.实例分析——preDate
题目:前一日函数 PreDate 是 NextDate 的逆函数,即给定一个月份、日期、年,会返回前一天的日期。
年的取值在 1812 年到 2017 年。日的取值在 1 日到 31 日之间。月的取值在 1 到 12 月之间。

条件:
M1:{月份:上一月份有30天}
M2:{月份:上一月份有31天,1月份除外}
M3:{月份:上一月是2月}
M4:{月份:本月是1月}
Y1:{年:年是闰年}
Y2:{年:年是平年}
D1:{日:当天是该月的第一天}
D2:{日:当天不是该月的第一天}

源程序:

package main;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/*
 * code by diudiu,2017-03-21
 *
 * */

public class PreDate {
    private int year;
    private int month;
    private int day;
    Calendar date=java.util.Calendar.getInstance();

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }
//用户输入
public void Input(){        
        String s1="2017-03-21 09:25:10";

        Calendar st=java.util.Calendar.getInstance();

        int year,month,day;
        while(true){
        @SuppressWarnings("resource")
        Scanner s11=new Scanner(System.in);
        s1=s11.nextLine();  
        DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd");
          String[] s1Arr=s1.split("-");
          year=Integer.parseInt(s1Arr[0]);
          month=Integer.parseInt(s1Arr[1]);
          day=Integer.parseInt(s1Arr[2]);

          if(year<1812||year>2017){
            System.out.println("输入年份错误,范围为1812<=year<=2017,请重输入年份");     
            }
             else if(month<1||month>12){
            System.out.println("输入月份错误,范围为1<=month<=12,请重输入月份");
            }
            else if(day<1||day>31){
            System.out.println("输入日错误,范围为1<=day<=31,请重输入日"); 
            }
            else if(M2(month)&&day>30){
                System.out.println("输入日错误,当月的天数范围为1<=day<=30,请重输入日"); 
            }
            else if(Y1(year)&&M3(month)&&day>29){
            System.out.println("当年是闰年,二月的天数范围为1<=day<=29,请重输入日");
            }
            else if(Y2(year)&&M3(month)&&day>28){
            System.out.println("当年是平年,二月的天数范围为1<=day<=28,请重输入日");
            }
            else {
                 try
                 {
                    st.setTime(df.parse(s1));
                 }catch(java.text.ParseException e){
                System.err.println("日期格式输入不正确,程序终止!");
                System.exit(0);
                }
            break;
            }
        }//输入时间合法
        //System.out.print(s1);
        System.out.println(year+"-"+month+"-"+day);
        date=st;
        setYear(year);
        setMonth(month);
        setDay(day);
    }

//条件判断
boolean M1(int month){//输入月份的上一月份有30天
    if(month==4||month==6||month==9||month==11)return true;
    return false;
}
boolean M2(int month){//输入月份的上一月份有31天,除了1月
    if(month==12||month==3||month==5||month==7||month==10)return true;
    return false;
}
boolean M3(int month){//输入月份的上一月份是2月
    if(month==2)return true;
    return false;
}
boolean M4(int month){//输入月份的上一月份是1月
    if(month==0)return true;
    return false;
}

boolean D1(int day){
if(day==1)return true;
return false;
}
boolean D2(int day){
if(day!=1)return true;
return false;
}


boolean Y1(int year){//闰年,2月份是29天
    if((((year%4==0&&year%100!=0)||year%400==0)))return true;
    return false;
}
boolean Y2(int year){//平年,2月份是28天
    if(!((year%4==0&&year%100!=0)||year%400==0))return true;
    return false;
}

//已知date,year,month,day,计算上一天
public Calendar rPreDate(){
    Calendar pd=java.util.Calendar.getInstance();
    //判断前一天的计算方式
    //pd.setWeekDate(year-1, month-1, day-1);
    int yearp = year,monthp = month-1,dayp=0;
    if(D1(day)){
        if(M1(month-1)){monthp=month-1;dayp=30;}
        if(M2(month-1)){monthp=month-1;dayp=31;}
        if(M3(month-1)){
            if(Y2(year)){
            monthp=month-1;dayp=29;
            }else{
                monthp=month-1;
                dayp=28;
            }
        }

        if(M4(month-1)){//1月1号
            yearp=year-1;
            monthp=12;
            dayp=31;
        }
}else{
        yearp=year;
        monthp=month;
        dayp=day-1;
    }
    System.out.println();
    System.out.println(yearp+"-"+monthp+"-"+dayp);
    pd.set(yearp, monthp, dayp);    
    return pd;  
}

//主方法
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PreDate pdate=new PreDate();
        pdate.Input();
        Calendar predate=pdate.rPreDate();
        System.out.print(pdate.date.getTime());
        System.out.println();
        System.out.print(predate.getTime());
    }
}
2019-11-20 17:09:44 SisterMia 阅读数 20
  • 2D动作手游-Spine骨骼动画

    本课程是基于Spine骨骼动画实现的动作类手游,手游功能包括文本文件加密,技能系统,战斗系统,buff系统等,是一个功能齐全的游戏。

    31630 人正在学习 去看看 姜雪伟

判定表法

因果图只是一种辅助工具,通过分析最终得到判定表,再通过分析最终得到盘判定表,再通过判定表编写测试用例。

有因果关系做出来的判定表:
在这里插入图片描述
判断表的组成

1.条件桩:问题的所有条件
2.动作桩:问题的所有输出
3.条件项:针对条件桩的取值
4.动作项:条件项的各种取值情况下的输出结果

判定表法流程

1.列出所有的条件桩和动作桩
2.填入条件项
3.填入动作项,得到初始判定表
4.简化判定表(合并相似规则(相同规则))

2018-12-16 21:05:05 Ritannn 阅读数 501
  • 2D动作手游-Spine骨骼动画

    本课程是基于Spine骨骼动画实现的动作类手游,手游功能包括文本文件加密,技能系统,战斗系统,buff系统等,是一个功能齐全的游戏。

    31630 人正在学习 去看看 姜雪伟

一、决策表

1.在所有的黑盒测试方法中,基于决策表的测试是最严格的,最具有逻辑性的测试方法。

2.决策表能设计出完整的测试用例集合。

3.决策表通常由条件桩、条件项、动作桩和动作项组成;

决策表的组成

4.合并相似规则,简化决策表;

5.做决策表时一定要仔细分析动作桩;(参考书本例题NextDate)

 

2019-11-15 21:03:24 XU_MAN_ 阅读数 16
  • 2D动作手游-Spine骨骼动画

    本课程是基于Spine骨骼动画实现的动作类手游,手游功能包括文本文件加密,技能系统,战斗系统,buff系统等,是一个功能齐全的游戏。

    31630 人正在学习 去看看 姜雪伟

一,决策表法(因果图法)

1,什么是决策表法

决策表是把作为条件的所有输入的各种组合值和它对应的输入值都罗列出来而形成的表格。

2,适用场所

如果输入输出比较多,输入之间和输出之间相互制约的条件比较多,在这种情况下应用决策表很合适。

3,怎么做决策表

由条件桩、条件项、动作桩、动作项4个部分组成

条件桩:列出问题的所有条件(输入)

动作桩:列出问题规定可能采取的操作(输出)

条件项:列出它在列条件的取值(输入)

动作桩:列出在条件项的各种取值情况下应该采取的动作(输出)

4,使用各种方法的综合策略

(1)如果输入条件相互独立,首先进行等价类划分,将无限测试变成有限测试,减少工作量和提高检测效率

(2)如果输入含有输入条件的组合情况,直接选择因果图法,同时配合等价类/边界值法

(3)在任何情况下都必须使用边界值分析法

(4)用错误推测法在追加一些测试用例

(5)还可以利用场景法贯穿整个测试案列过程

例如:

2019-02-28 22:15:09 danny_0109 阅读数 777
  • 2D动作手游-Spine骨骼动画

    本课程是基于Spine骨骼动画实现的动作类手游,手游功能包括文本文件加密,技能系统,战斗系统,buff系统等,是一个功能齐全的游戏。

    31630 人正在学习 去看看 姜雪伟
  • 等价类划分法和边界值法通常考虑的都是某一个输入条件,而不考虑输入条件的各种组合制约关系。如果要在测试中考虑各种条件的组合,那么测试用例将是无穷无尽的,因此需要用因果图+判定表法来描述多个有关联的条件组合后产生的测试结果。
  • 判定表通常有四个部分:1、条件桩(列出了问题的所有条件,通常认为列出的条件与次序无关紧要);2、动作桩(结果分类);3、条件项(条件的取值);4、动作项(条件组合后所做的操作);
  • 例子:两位数加法。输入框1(条件1:1<=x<=99;条件2:-99<=x<0;等等),输入框2(条件1,条件2…),输出(正确计算,错误提示)。
  • 简单来讲,就是要通过表格的方式,测试各种情况组合下的结果输出,同时进行有效的条件和结果分类。

常见软件测试笔试题

阅读数 31686

测试基础-判定表

阅读数 48

没有更多推荐了,返回首页