[软件测试] Assignment8

[软件测试] Assignment8

课程名称软件测试任课老师蔡国扬
年级大三专业(方向)计应
学号16340015姓名陈彬彬
专业(方向)软件工程(计应)Email944131226@qq.com

0.问题描述

构造NextDate问题的弱一般的等价类测试用例。

  • NextDate 问题:NextDate() 是整型变量 month, day 和 year 的函 数,输入 1812-2012 年期间的某一日期的 month, day 和 year 的值,输出这一天的下一天的日期的 month, day 和 year 值。

1. 等价类测试用例的类别

健壮性测试包含两层含义:

  • 容错能力
  • 恢复能力

根据测试用例的完整性可以划分为:

  • 弱等价类测试
  1. 弱一般等价类:遵循单缺陷原则,要求用例覆盖每一个变量的一种取值即可,取值为有效值。
  2. 弱健壮等价类:在弱一般等价类的基础上,增加取值为无效值的情况。
  • 强等价类测试
  1. 强一般等价类:遵循多缺陷原则,要求用例覆盖每个变量的每种取值之间的迪卡尔乘积,即所有变量所有取值的所有组合,取值为有效值。
  2. 强健壮等价类:在强一般等价类的基础上,增加取值为无效值的情况。

2. 问题回答

我们可以将三个输入值划分为以下等价类:

M1 = {month: month has 30 days}

M2 = {month: month has 31 days except December}

M3 = {month: month is December}

M4 = {month: month is February}

D1 = {day: 1 ≤ day ≤ 27}

D2 = {day: day = 28}

D3 = {day: day = 29}

D4 = {day: day = 30}

D5 = {day: day = 31}

Y1 = {year: year is a leap year}

Y2 = {year: year is a common year}

将输出值划分为以下等价类:

A1 = {Impossible}

A2 = {Increment day}

A3 = {Reset day to 1}

A4 = {Increment month}

A5 = {Reset month to 1}

A6 = {Increment year}

构造弱一般等价类测试用例

要求变量取值为有效值,遵循单缺陷原则,用例覆盖每一个变量的一种取值即可

Test CasemonthdayyearExpected Output (month,day,year)
WN14 (M1)1 (D1|D2|D3)1998 (Y1|Y2)4,2,1998 (A2)
WN24 (M1)30 (D4)1998 (Y1|Y2)5,1,1998 (A3&A4)
WN34 (M1)31 (D5)1998 (Y1|Y2)Impossible (A1)
WN45 (M2)30 (D1|D2|D3|D4)1998 (Y1|Y2)5,31,1998 (A2)
WN55 (M2)31 (D5)1998 (Y1|Y2)6,1,1998 (A3&A4)
WN612 (M3)30 (D1|D2|D3|D4)1998 (Y1|Y2)12,31,1998 (A2)
WN712 (M3)31 (D5)1998 (Y1|Y2)1,1,1999 (A3&A5&A6)
WN82 (M4)1 (D1)1998 (Y1|Y2)2,2,1998 (A2)
WN92 (M4)28 (D2)1996 (Y1)2,29,1996 (A2)
WN102 (M4)28 (D2)1998 (Y2)3,1,1996 (A3&A4)
WN112 (M4)29 (D3)1996 (Y1)3,1,1996 (A3&A4)
WN122 (M4)29 (D3)1998 (Y2)Impossible (A1)
WN132 (M4)30 (D4|D5)1998 (Y1|Y2)Impossible (A1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是上一段代码的测试代码 需要输出成功 #include "Assignment-3.h" #include "SVF-LLVM/LLVMUtil.h" #include "SVF-LLVM/SVFIRBuilder.h" #include "WPA/Andersen.h" #include "Util/Options.h" #include "Util/CommandLine.h" void Test1() { SVF::SVFModule *svfModule = SVF::LLVMModuleSet::getLLVMModuleSet()->buildSVFModule({"./Assignment-3/testcase/bc/no_alias.ll"}); /// Build Program Assignment Graph (SVFIR) SVF::SVFIRBuilder builder(svfModule); SVF::SVFIR *pag = builder.build(); pag->dump ("./Assignment-3/testcase/dot/no_alias_init"); AndersenPTA *andersenPTA = new AndersenPTA(pag); andersenPTA->analyze(); andersenPTA->dump_consCG("./Assignment-3/testcase/dot/no_alias_final"); delete andersenPTA; SVF::LLVMModuleSet::releaseLLVMModuleSet(); SVF::SVFIR::releaseSVFIR(); } void Test2() { SVF::SVFModule *svfModule = SVF::LLVMModuleSet::getLLVMModuleSet()->buildSVFModule({"./Assignment-3/testcase/bc/CI-global.ll"}); /// Build Program Assignment Graph (SVFIR) SVF::SVFIRBuilder builder(svfModule); SVF::SVFIR *pag = builder.build(); pag->dump ("./Assignment-3/testcase/dot/CI-global_init"); AndersenPTA *andersenPTA = new AndersenPTA(pag); andersenPTA->analyze(); andersenPTA->dump_consCG("./Assignment-3/testcase/dot/CI-global_final"); delete andersenPTA; SVF::SVFIR::releaseSVFIR(); SVF::LLVMModuleSet::releaseLLVMModuleSet(); } void Test3() { SVF::SVFModule *svfModule = SVF::LLVMModuleSet::getLLVMModuleSet()->buildSVFModule({"./Assignment-3/testcase/bc/CI-local.ll"}); /// Build Program Assignment Graph (SVFIR) SVF::SVFIRBuilder builder(svfModule); SVF::SVFIR *pag = builder.build(); pag->dump ("./Assignment-3/testcase/dot/CI-local_init"); AndersenPTA *andersenPTA = new AndersenPTA(pag); andersenPTA->analyze(); andersenPTA->dump_consCG("./Assignment-3/testcase/dot/CI-local_final"); SVF::LLVMModuleSet::releaseLLVMModuleSet(); SVF::SVFIR::releaseSVFIR(); delete andersenPTA; } void Test() { Test1(); Test2(); Test3(); } int main(int argc, char ** argv) { int arg_num = 0; int extraArgc = 1; char **arg_value = new char [argc + extraArgc]; for (; arg_num < argc; ++arg_num) { arg_value[arg_num] = argv[arg_num]; } // You may comment it to see the details of the analysis arg_value[arg_num++] = (char) "-stat=false"; std::vectorstd::string moduleNameVec; moduleNameVec = OptionBase::parseOptions( arg_num, arg_value, "Teaching-Software-Analysis Assignment 3", "[options]" ); Test(); return 0; }
05-22

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值