nextdate问题

合集下载

正确理解 JOB 中的 NEXT_DATE 及 INTERVAL 参数

正确理解 JOB 中的 NEXT_DATE 及 INTERVAL 参数

7 END;
8 /
PL/SQL procedure successfully completed.
jobno
---------
1
然后我们手工执行存储过程,执行完毕以后再手工从user_jobs视图中获得JOB的下次执行时间,可以看到在存储过程中修改的JOB的下次执行时间已经生效,变成了当前时间的30分钟以后,而不是默认的1天以后。
首先选择一个测试用户,假设该用户名为test。
由于我们在实验用的存储过程中会用到dbms_lock包,所以需要由sys用户先授予test用户使用dbms_lock包的权限。
sqlplus "/ as sysdba"
SQL> grant execute on dbms_lock to test;
--等待10秒再退出执行
dbms_lock.sleep(seconds => 10);
end sp_test_next_date;
重新进行测试,我们可以发现JOB的next_date是JOB开始执行时间的1天以后,而不是JOB结束时间的1天以后(因为JOB结束需要经过10秒钟)
execute immediate
'begin dbms_job.next_date(' || to_char(p_jobno) || ',sysdate+1/48);commit;end;';
--修改完毕以后检查user_jobs视图,输出job目前的next_date
SQL> select to_char(next_date,'YYYY-MM-DD HH24:MI:SS') next_date from user_jobs

实验软件测试用例

实验软件测试用例

实验一案例实践一NextDate的第一次测试我们可以将软件缺陷的正式定义简单地归纳为以下三点:1.存在完全没有实现的功能,即软件做得不够2.基本实现了用户所需的功能,但运行时会出现一些功能或性能上的问题,即软件没有正确地去做3.实现了用户不需要的功能,即软件做得太多让我们根据上述简单规则,用下面的案例来亲自动手测试。

测试步骤:1.NextDate功能简述(1) 有效日期的正确计算功能名称:有效日期的正确计算功能编号:F01(2)无效日期的合理提示功能名称:无效日期的合理提示功能编号:F02(3) 无条件文本清除功能名称:无条件文本清除功能编号:F03(4) 无条件确定功能名称:无条件确定功能编号:F04(5)无条件取消功能名称:无条件取消功能编号:F052.开始测试根据缺陷定义的三个方面,我们需要考察需求规格说明中指明的所有功能是什么,其中每个功能是否是正确完成的,是否存在某些功能超出了需求规格说明指明的功能范围。

让我们依次来测试每个功能吧。

NextDate的第一次测试的测试用例集合如表1.1所示,表中“N/A”表示不需要输入任何数据表1.1 NextDate的第一次测试的测试用例集合从表1.1中我们可以看到,对于需要简述中的每一项功能,表中都有一个测试用例进行对应的测试,且从表中可以清晰地看出每个用例执行的结果。

结果表明,系统实现了每项功能,但针对无效输入和“确定”按钮测试失败,发现有缺陷存在。

3. 测试分析(1)测试的完整性和有效性对于每项功能,只有一个测试用例来对应,这显然是不彻底的。

以有效输入功能为例,有效的日期应该是从 1800年 1 月 1日到2050 年 12月 31日之间的所有日期,而我们目前只选择了其中的一个日期,我们面临的问题是:我们需要全部测试这些有效日期吗?如果不需要全部测试,我们又该如何从中挑选出最能够揭示系统潜在缺陷的日期?仅用少量日期来测试对软件交付造成的风险有多大?对于无效输入,将包含更多情况:第一,满足所有输入的数据类型要求,但不在有效取值范围内。

软件测试NextDate函数测试用例详解

软件测试NextDate函数测试用例详解
12
15
2007
2007年12月16日
Test Case 15
12
31
2007
2008年1月1日
Test Case 16
2
15
2007
2007年2月16日
Test Case 17
2
28
2000
2000年2月29日
Test Case 18
2
28
2007
2007年3月1日
Test Case 19
2
29
动作:
A1: 不可能



A2: day加1





A3: day复位



A4: month加1


A5: month复位

A6:year加1

决策表法
表5-8 简化的NextDate函数决策表
选项 规则
1, 2, 3
4
5
6, 7, 8, 9
10
11, 12, 13, 14
15
等价类划分法——以输入域划分等价类
等价类划分法——以输入域划分等价类
改进等价类划分测试NextDate函数如表5-5所示。 表5-5 改进等价类划分法测试用例
测试用例
输入
期望输出
month
day
year
Test Case 1
6
30
2007
2007年7月1日
Test Case 2
8
31
2007
2007年9月1日
弱强健等价类测试 弱强健等价类测试中的有效测试用例使用每个有效等价类中的一个值。弱强健等价类测试中的无效测试用例那么只包含一个无效值,其他都是有效值,即含有单缺陷假设。如表5-3所示。

黑盒测试试题及答案

黑盒测试试题及答案

1:程序规定;输入三个整数作为三边的边长构成三角形。

当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。

用等价类划分方法为该程序进行测试用例设计。

2:现有一个学生标准化考试批阅试卷,产生成绩报告的程序。

其规格说明如下:程序的输入文件由一些有80个字符的记录组成,所有记录分为3组,如图:1、标题:改组只有一个记录,其内容是成绩报告的名字。

2、各题的标准答案:每个记录均在第80个字符处标以数字2。

该组的记录:第一个记录:第1~3个字符为试题数(1~999)。

第10~59个字符是1~50题的标准答案(每个合法字符表示一个答案)。

第二个记录:是第51~100题的标准答案。

…….3、学生的答案:每个记录均在第80个字符处标以数字3。

每个学生的答卷在若干个记录中给出。

学号:1~9个字符1~50题的答案:10~59。

当大于50题时,在第二、三、……个记录中给出。

学生人数不超过200,试题数不超过999。

程序的输出有4个报告:a)按学号排列的成绩单,列出每个学生的成绩、名次。

b)按学生成绩排序的成绩单。

c)平均分数及标准偏差的报告d)试题分析报告。

按试题号排序,列出各题学生答对的百分比。

1. 黑盒测试的具体技术方法有哪些?答案: 黑盒测试的具体技术方法主要有边界值分析法、等价类划分法、因果图法、决策表测试法、场景法等。

2. 分析如何选择恰当的黑盒测试方法。

答案: 通常在决定测试策略时,有以下的参考原则:①在任何情况下都必须采用边界值分析法。

这种方法设计出的测试用例发现程序错误的能力最强。

②必要时采用等价划分类方法补充测试用例。

③采用错误推断法再追加测试用例。

④对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。

如果没有达到要求的覆盖标准,则应当在补充更多的测试用例。

⑤如果程序的功能说明中含有输入条件的组合情况,则应在一开始就选用因果图法。

3. 解释黑盒测试的概念。

答案: 黑盒测试被称为功能测试或数据驱动测试。

软件测试2_黑盒测试 (下)

软件测试2_黑盒测试 (下)
功率大于50马力吗 维修记录不全吗 运行超过10年吗

举例:维修机器问题(续)
(3)填入条件项;
1 2
Y Y N
3
Y N Y
4
Y N N
5
N Y Y
6
N Y N
7
N N Y
8
N N N
功率大于50马吗?
Y Y Y
条 维修记录不全吗? 件
运行超过10年吗?
动 进行优先处理 作 作其他处理

利用集合的笛卡尔积计算条件项的取值
举例:维修机器问题(续)
(4)填入动作项;
1 2 Y Y N 3 Y N Y 4 Y N N 5 N Y Y 6 N Y N 7 N N Y 8 N N N
功率大于50马力吗?
Y Y Y
条 维修记录不全吗? 件 动 进行优先处理 作 作其他处理

运行超过10年吗?








1,2合并,5,7合并,6,8合并
举例:维修机器问题(续)
(5)化简;
(1) 功率大于50马力吗? Y Y — (2) Y N Y (3) Y N N (4) N — Y (5) N — N
条 维修记录不全吗? 件
动 作 作其他处理
进行优先处理
运行超过10年吗?



基于判定表的测试
根据输入输出绘制 判定表;
设计测试用例覆盖 判定表中每条规则;
条件桩(Condition Stub )
列出问题的所有条件
动作桩(Action Stub )
列出可能采取的操作
条件项(Condition Entity)
列出条件桩的取值

黑盒测试——精选推荐

黑盒测试——精选推荐

⿊盒测试⿊盒测试⼀第⼀课1. 实验⽬的理解墨盒测试的基本⽅法,掌握等价类划分法、边界值分析等测试⽤例的设计⽅法。

2.实验内容(1) 等价类划分⽅法1) 三⾓形问题等价类划分设计测试⽤例2) NextDate问题,对它的输⼊进⾏分析,划分等价类,然后根据等价类设计测试⽤例。

(2) 边界值和因果图1)NextDate问题⽤边界值分析法设计测试⽤例分析NextDate问题中的逻辑,⽤边界值分析法的思想设计测试⽤例。

2) 有⼀个处理单价为5⾓钱的饮料的⾃动售货机软件测试⽤例的设计。

其规格说明如下:若投⼊5⾓钱或1元钱的硬币,押下[橙汁]或[啤酒]的按钮,则相应的饮料酒送出来。

若售货机没有零钱找,则⼀个显⽰[零钱找完]的红灯亮,这时再投⼊1元硬币并押下按钮后,饮料不送出来⽽且1元硬币也退出来;若有零钱找,则显⽰[零钱找完]的红灯灭,在送出饮料的同时退还5⾓硬币。

⽤因果图法对⾃动售货机设计测试⽤例。

要求:(1) 1)必做(1) 2)与(2)1)2)选做其⼀3.实验准备(1)主流PC机⼀套,要求安装windows操作系统、Virtul Studio6.0、C++Test、java等⼯具;(1)理解等价类划分法、边界值分析法的思想,划分依据;(2)熟悉上述⽅法测试⽤例设计的理论4.实验步骤(1)三⾓形问题1) if (!(a+b<=c||a+c<=b||b+c<=a)&&(a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100)) {if (a==b && a==c)MessageBox("等边三⾓形");else if (a==b || a==c || b==c)MessageBox("等腰三⾓形");elseM essageBox("⼀般三⾓形");}else {if(a<1||a>100)MessageBox("a不在范围内,不满⾜条件1,不能构成三⾓形");else if(b<1||b>100)MessageBox("b不在范围内,不满⾜条件2,不能构成三⾓形"); else if(c<1||c>100)MessageBox("c不在范围内,不满⾜条件3,不能构成三⾓形"); else if(a>=b+c)MessageBox("不满⾜aelse if(b>=a+c)MessageBox("不满⾜belse if(c>=b+a)MessageBox("不满⾜c}M essageBox("判断结束!");}2) 实验的输⼊和输出样式3) 测试⽤例设计⽤等价类分析法设计测试⽤例,按照下列步骤进⾏:⑴分析题⽬中给出的条件和隐含的输⼊要求,输⼊条件如下:①正整数②三个数③构成⼀般三⾓形④构成等腰三⾓形⑤构成等边三⾓形⑥不能构成三⾓形⑵根据输⼊条件的要求划分等价类,列出等价类表并编号,如下表:⑶设计测试⽤例,覆盖上表中的等价类,如下表:注:提⽰1(输⼊不符合要求)提⽰2(请输⼊数据)(2)(2) (2) NextDate问题⽤边界值分析法设计测试⽤例1)对于NextDate问题,分析它的输⼊限制;NextDate是⼀个有三个变量(⽉份、⽇期和年)的函数。

软件测试实验报告3

软件测试实验报告3

一、三角形问题逻辑覆盖法1Scanner input=new Scanner(System.in);2double a=input.nextDouble();3double b=input.nextDouble();4double c=input.nextDouble();5boolean isTriangle=true;6if(a<1||a>200||b<1||b>200||c<1||c>200){7System.out.println("输入数据非法\n");}8else if((a+b)<=c||(a+c)<=b||(c+b)<=a){9System.out.println("非三角形\n");}10else if(a==b&&b==c&==c){11System.out.println("等边三角形\n");}12else if(a==b||b==c||a==c){13if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b){ 14System.out.println("等腰直角三角形\n");15}else{System.out.println("等腰三角形\n");}}16else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b){ 17System.out.println("直角三角形\n");}18else System.out.println("一般三角形\n");程序结构图语句:1、2、3、4、5、7、9、11、14、15、17、18路径:共七条路径(1)1-2-3-4-5-6-7(2)1-2-3-4-5-6-8-9(3)1-2-3-4-5-6-8-10-11(4)1-2-3-4-5-6-8-10-12-13-14(5)1-2-3-4-5-6-8-10-12-13-15(6)1-2-3-4-5-6-8-10-12-16-17(7)1-2-3-4-5-6-8-10-12-16-18判定:(1)a<1||a>200||b<1||b>200||c<1||c>200 (节点6)(2)(a+b)<=c||(a+c)<=b||(c+b)<=a (节点8)(3)a==b&&b==c (节点10)(4)a==b||b==c||a==c (节点12)(5)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (节点13)(6)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (节点16)条件:(1)a<1||a>200||b<1||b>200||c<1||c>200 (1.1-1.6)(2)(a+b)<=c||(a+c)<=b||(c+b)<=a (2.1-2.3)(3)a==b&&b==c (3.1,3.2)(4)a==b||b==c||a==c (4.1,4.2,4.3)(5)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (5.1,5.2,5.3) (6)a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b (6.1,6.2,6.3)1、语句覆盖/路径覆盖2、判定覆盖3、条件覆盖/判定条件覆盖二、NextDate问题基路径方法1.Scanner input=new Scanner(System.in);2.int year=input.nextInt(),input.nextInt(),day=input.nextInt();3.int tomorrowday=day,tomorrowmonth=month,tomorrowyear=year;4.if(year<1900||year>2100||month<1||month>12||day<1||day>31) {5.System.out.printf("输入日期非法");System.exit(-1);}6.else if((month==4||month==6||month==9||month==11)&&(day==31)){7.System.out.printf("输入日期不存在\n");System.exit(-1);}8.else if((year%400==0||(year%100!=0&&year%4==0))&&month==2&&day>29){9.System.out.printf("输入日期不存在\n");System.exit(-1);}10.elseif((!(year%400==0||(year%100!=0&&year%4==0))&&month==2&&day>28)){11.System.out.printf("输入日期不存在\n");System.exit(-1);}12.else if((month==4||month==6||month==9||month==11)&&day==30)13.{ tomorrowmonth++;14.tomorrowday=1; }15.elseif((month==1||month==3||month==5||month==7||month==8||month==10)&&day==31)16.{ tomorrowmonth++;17.tomorrowday=1;}18.else if(month==12&&day==31)19.{ tomorrowyear++;20.tomorrowmonth=1;21.tomorrowday=1;}22.else if(month==2&&(year%400==0||(year%100!=0&&year%4==0))&&day==29)23.{ tomorrowmonth++;24.tomorrowday=1;}25.elseif(month==2&&(!(year%400==0||(year%100!=0&&year%4==0)))&&day==28)26.{ tomorrowmonth++;27.tomorrowday=1;}28.else{ tomorrowday++;}29.System.out.println("nextdayis\n"+tomorrowyear+"/"+tomorrowmonth+"/"+tomorrowday);程序结构图基路径数量:分支节点:4、6、8、10、12、15、18、22、25基路径数量9+1=10基路径:(1)最长的路径:Start-1-2-3-4-6-8-10-12-15-18-22-25-26-27-29-End (2)节点4翻转:Start-1-2-3-4-5-29-End(3)节点6翻转:Start-1-2-3-4-6-7-29-End(4)节点8翻转:Start-1-2-3-4-6-8-9-29-End(5)节点10翻转:Start-1-2-3-4-6-8-10-11-29-End(6)节点12翻转:Start-1-2-3-4-6-8-10-12-13-14-29-End(7)节点15翻转:Start-1-2-3-4-6-8-10-12-15-16-17-29-End(8)节点18翻转:Start-1-2-3-4-6-8-10-12-15-18-19-20-21-29-End (9)节点22翻转:Start-1-2-3-4-6-8-10-12-15-18-22-23-24-29-End (10)节点25翻转:Start-1-2-3-4-6-8-10-12-15-18-22-25-28-29-End三、佣金问题数据流测试方法1.double lockprice=45,stockprice=30,barrelprice=25;2.double totallocks=0,totalstocks=0,totalbarrels=0;3.double commission;4.Scanner input=new Scanner(System.in);5.System.out.print("Input the locks,stocks and barrels:\n");6.int locks=input.nextInt(),stocks=input.nextInt(),barrels=input.nextInt();7.if(1>locks||locks>70||1>=stocks||locks>=80||1>=barrels||barrels>=90){8.System.out.println("输入错误");System.exit(-1);}9.totallocks=totallocks+locks;10.totalstocks=totalstocks+stocks;11.totalbarrels=totalbarrels+barrels;12. doublelocksales=lockprice*totallocks,stocksales=stockprice*totalstocks,barrelsales=barrelprice*totalbarrels,sales=locksales+stocksales+barrelsales;13.if(sales>1800){mission=0.10*1000;mission=commission+0.15*800;mission=commission+0.20*(sales-1800);}17.else if(sales>1000){mission=0.10*1000;mission=commission+0.15*(sales-1000);}20.else commission=0.10*sales;21.System.out.print("commission is$:"+commission);程序流程图定义—使用路径:locks:(1)6-7 是定义—清除路径(2)2-3-4-5-6-7-9 是定义—清除路径stocks:(1)6-7 是定义—清除路径(2)6-7-9-10 是定义—清除路径barrels:(1)6-7 是定义—清除路径(2)6-7-9-10-11 是定义—清除路径sales:(1)12-13 是定义—清除路径(2)12-13-14-15-16 是定义—清除路径(3)12-13-17 是定义—清除路径(4)12-13-17-18-19 是定义—清除路径(5)12-13-17-20 是定义—清除路径commission:(1)14-15-16-21 不是定义—清除路径(2)15-16-21 不是定义—清除路径(3)16-21 是定义—清除路径(4)18-19-21 不是定义—清除路径(5)19-21 是定义—清除路径(6)20-21 是定义—清除路径分析:locks、stocks、barrels与sales没有非定义清除路径,commission却有3条非定义—清除路径,所以该变量在使用之前可能被定义两次或多次,可将14-15-16三条语句合并成一条一句,18-19两条语句合并成一条语句,减少缺陷。

第02章_判定表法

第02章_判定表法

判定表的类型
判定表
有限条目判定表
特点:所有条件都 是二值条件(真/假)
扩展条目判定表 特点: 条件可以有多个值
举例—有限条目判定表
规则 选项 问 题 你觉得疲倦吗? 你对内容感兴趣吗? Y Y Y Y N Y N Y Y N N N Y Y √ √ √ √ N Y N N N Y N N N 1 2 3 4 5 6 7 8
10 1 1 T F F T F T
1 2 T F T
1 1 3 4 T T T T F F
1 5 T T T
1 6 T T T
C4:b=c?
A1:非三角形 A2:一般三角形 A3:等腰三角形 A4:等边三角形
F

T

F

T

F

T

F

T

F
T
F
T
F T
F
T
√ √ √ √ √
A5:不可能



三角形问题的判定表

2 F F F T

3 F F T F

4 F F T T

5 F T F F

6 F T F T

7 F T T F

8 F T T T

9 T F F F
10 1 1 T F F T T F T F
1 2 T F T T
1 1 3 4 T T T T F F F T
1 5 T T T F
1 6 T T T T
书中内容使你胡涂吗? Y 建 议 请回到本章开头重读 继续读下去 跳到下一章去读
停止阅读,请休息
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include <iostream>
using namespace std;
int a,b,c,y,m,d;
//判断是否为闰年
bool Feb(int y){
if((2060-y)%4==0)
return 1;
else
return 0;}
//年份的累加
int NextYear(int y){
a=y+1;
if(a>2060)
{cout<<"Next date is out of the record."<<"/n"; return 1;}
else
return a;}
//月份的累加
int NextMonth(int m){
b=m+1;
if(b==13){
b=1;
NextYear(y);}
return b;}
//天数的累加
int NextDay(int d){
c=d+1;
//大月满32天月份加1
if(c==32){
if(m==1|m==3|m==5|m==7|m==8|m==10|m==12) {c=1;
NextMonth(m);}}
//小月满31天月份加1
if(c==31){
if(m==4|m==6|m==9|m==11)
{c=1;
NextMonth(m);}}
//若为闰年,2月满30天,月份加1
if(c==30){
if(Feb(y)&&m==2){
c=1;
b=3;}}
//若不是闰年,2月满29天,月份加1
if(c==29){
if(!Feb(y)&&m==2){
c=1;
b=3;}}
return c;}
//NextDate函数
int NextDate ( int y, int m, int d){
if (y<1900|y>2060|m<1|m>12|d<1|d>31){
cout<<" This date is out of the record , please input the right date."<<"\n"; return 1;}
if(m==4|m==6|m==9|m==11&&d==31) {
cout<<" This date is out of the record , please input the right date."<<"\n"; return 1;}
if(Feb(y)&&m==2&&d>29) {
cout<<" This date is out of the record , please input the right date."<<"\n"; return 1;}
if(!Feb(y)&&m==2&&d>28)
{cout<<" This date is out of the record , please input the right date."<<"\n"; return 1;}
else{
NextDay(d);
cout<<"Next date is"<<a<<"."<<b<<"."<<c<<"\n"<<"\n";
return 0;}}
//main函数
int main()
{while(1){
cout << "Please input the current date."<<"\n";
cout << "The domain is from 1900 to 2060"<<"\n";
cout<<"YEAR"<<"\n";
cin >>y;
cout<<"MONTH"<<"\n";
cin>>m;
cout<<"DAY"<<"\n";
cin>>d;
a=y;
b=m;
c=d;
NextDate ( y, m, d);}
return 0;}。

相关文档
最新文档