还剩6页未读,继续阅读
文本内容:
软件质量保证与测试实验报告姓名朱怀良班级软件1101班学号1105290137时间2014年4月25姓名朱怀良曲要财经老就信息学院实验室408实验日期学号1105290137实验名称Parasoft C++Test班级软件01班《软件质量保证与测试》一实验报告年级软件11级指导
一、实验教师冯居易目的及要求
1.掌握单元测试的目的和任务
2.掌握使用Parasoft C++Test进行单元测试的方法
二、实验环境Windows XP,Parasoft C++Test
9.2
三、实验内容使用Parasoft C++Test进行静态测试、动态测试、覆盖率分析等,以及形成测试报告
四、实验步骤
一、静态测试1)主要学习和熟悉Parasoft静态代码检测规范2)根据选定的规则进行静态代码检测3)审查测试结果与发现问题的修正
二、动态测试1)主要了解和熟悉自动化单元测试配置2)自动化生成并执行测试用例3)查看测试报告与审查测试结果
三、覆盖率分析1)启动c++test,通过新建立c++test项目,导入VC6测试例程Exp
5.l\Calculate\Calculate.dspo2)要查看测试覆盖率,需要生成并运行测试用例3)配置规范4)接下来执行测试用例5)对测试覆盖率进行分析
五、调试过程及实验结果静态测试:
1.在“C++test”-“Test Configurat在ns…”,在执行静态测试之前,查看并选定测试配置,弹出如下对话框,可以看到“User-d下ined、“Bui配in、“Team”等三大列表其中User-def ined”下列出的是用户设定的测试配置和规则,大列Itin”里是Parasoft工具自带的测试规则和配置;“Team”下是开发/测试团队公用的测试规则和配置.海试配置创建,管理和运行测试配置话选择查看一辞Example Configuration・t内建向Appkabon Monitoring;
②Code Review方Embedded Systems・b StadeAnalysis回BugDetective LicenseReqi问BugDetective AggressiveISCRJesEffective C++Effective STLEllerhtelGJB5369HIS SourceCode MetricsISO26262Recommended回Joint5trh FighterMISRACMISRA C2004MISRA C++2008圜OWASP Top10Security ViHw2,复制并建立了一个叫做uParasoft RecommendedRules-test”的规范系列根据选定的规则进行静态代码检测并自定义测试规则,秒用尸自定义名麻ParasoffsRecommendedRufesVIExampleConfiguration立ParasoftsRecommendedRUes,内建,范国
③静态/Ij执行15代码程I展awI中目怎6ApplicationMonAoring■启用群公分析ACodeReview■限制每条规则报告的任务最大数量是1000QEmbeddedSystems®StkAnalysts■不应用抑制*UnTesting■分析解析错识的文件^UHkies目DemoCor/iguration双加炳BugDetective0瞅m I那嗨1,601合计;33启用;0隐藏■异富【EXCEPT]-(3/18启用)■a代码格式[FORMAT]-(0/38启用)■a中华人民共和国国家军用标惟[GJB5369]-(0/126启用)■»初始化[[NIT]-(2/14启用)a如果引用所指向的对象地址能够改变,不要初始化该引用[IMT-05-1]4在构造函数中初始化所有成员变量(INIT-O6-1]3初始化类的群态成员变量[INIT-O9-1]4初始化所有胤十变量〔川1-04・2]4使用=冷作符来煦值所有数据成员[INIT-11-2]0头文件中不能包含任何初始化[INI-01-3]4不A既有衿号常量初始化无苻号整形变量[IMT-02-3]4初蛤化所有变量[INIT-03-3]4通过用户自定义的内造函数显式初船化类成员UNI「07-3]动用户自定义的数必须初始化动态分配的类对象(INIT-O8-3]根据配置好的规则对代码进行测试这里用上面的配置好的的规则对全部代码进行测试(用户可以选择要测试的代码)点击菜单“C++test”-“Test UsingUserdef ined”-“ParasoftRecommended Rules-test”,Parasoft C++test将会自动化进行代码静态测试测试结束
3.在工具菜单中选择“C++te具”-“Show View”-“C++te具”视图,可以查看到更具体的测试结果依次展开列表框,如下图,根据选定的测试规则,执行测试后发现,代码中有1个地方违背了规范“所有的成员变量必需在构造函数中初始化[INIT-06T]”双击下图中的蓝色条处,可以自动定位到代码中的违规处,并改正素®项目⑻Parasoft运行®窗口(西阳助⑻ET3Pacl ATM.cxxMinclude ATM.hxx”Minclude^BaseDisplay.hxxr,ATM::^TMBank*bank,BaseDisplay*displaymyBank=bank;wyDisplay-display;void ATM::viewAccountint accountNumber,string passwordif•royCurrentAccount■royBank-getAccountaccountNumber,passvordmyDisplay-showInfoToUser•tInvalid account,r;void ATM::fill.UserRefuest UserRequestrequest,double amountifmyCurrentAccount switchrequestcase REQUEST_BALANCE:showBalance;break;动态测试
1.点击菜单“C++test”-“Test Configurations…”,在执行自动化单元测试之前,首先查看并选定测试配置,弹出如下对话框,可以看到“User-def ined”、“Builtin、“Team”等三大列表其中User-def ined下列出的是用户设定的测试配置和规则,“Builtin”里是Parasoft工具自带的测试规则和配置;“Team”下是开发测试团队公用的测试规则和配置并自动化生成并执行测试用例留ATM.cxxit include,rATM.hxx,r#include,rBaseDisplay.hxxr,ATM::ATMBank*bank,BaseDisplay*displaymyBank=bank;myDisplay=display;}void ATM::viewAccountint accountNumber,string passwordif!myCurrentAccount=myBariK-七Acc口unt acc□untNumbBK,passwordmyDisplay-showInfoToUser r,Invalid account,r;}public:if myCurrentAccountsrritchrequestenum UserRequest{REQUEST_INVALID=0,case REQUESTREQUEST_BALANCE=1,showBalancREQUEST_DEPOSITZnbCTTbUE rREQUEST_WITHDRAW};软质量任务测试结果吟EilACoverage=!Supp ctiveAggressive LicenseTest CaseEx|故午2”以法取焦点代码审查j0void AHI::fiULUserReguestUserRequest request,double amount上「J11ATM.cxx
2.查看测试报告与审查测试结果,在工具菜单中选择“C++test”-“ShowView”-“C++test(质量任务)”视图,可以查看到更具体的测试结果,下面将测试用例的执行结果都给予报告,方便开发/J屋才iATM aUX71500/122s123]ATM»,Indudes@■oooo/on1ATMB5ATM OOOO/OfiO1CPKA**•Caxjrwtq—ndud»电evc6£/Accttneoa»,€q[0000,0a1]ftricTeitCMeATMXMX•
9.B*.CX».演BMCtSDUrcn•迪■dtestGetAccoLnt•1071500/12200122testsTeitOtxectFactcrron...ATM.dsp.ATM.dSwL.*c6aidb.vceopdbAkt^StS—eautoganerxed8ATM百一rckude•.cTest$ute-Aocount-hc«.cppT«1t9iMe_M0eaUy_hn.CK]p.谪YHSute/ccxxX.oa-cpp,..76tsMte.ATMJCMM.CPP♦iC,T•$tSUt«_pA;.CXKJCPP,Lc;T—Ue_«eC
3.Te$tSuM_AccourJw;Ye»,■同BascOscXarr_CKcpp,■ISWJllMl*]p—.h6『CPPTTSTiCCfTTTXT-/ATM/XTH/include/BoeOisplay.KXK**;CPPTrST~TrST_3UITre_XNCLUX»r£_TO/ATJL/ATII/BM«»»play.cxxlFc*u・・T«9CSuc«_Ba9«t»api*7_hxx_er25rrrt publicCppTest_T*»^sviit.«AS1TE5T_SUITTTescSuicc_BaseD19pl«y_hxx_ff25fffto:TTSTce9t_B4L9e[19playvl2TESTcesc_x7eBa^eDuiplayM13TTST_SOITZ-END测试人员分析以及后续的回归测试voidsetup;voidtr4rOnwn;vol4lte»t_K4*eDl*pl4iy1;Qc/CxPro|KU庭0口电蠲试网内31口***9MEE$$$3IE Account.cxx区、丐S尊Parasofts RecommendedRules-test...区F,Account.hxx,rft includeamoiA结束double Account::depositdouble{myBalance+=amount;1/1BD已检查文件没有报告出任务囱get.Balance;returnainountdouble Account::debit double{myBalance-=amount;getBalance;return文件已检查(编码标准)1/1文件已跳过(编码标准)0文件已检查(BugDetective):1/1文件已跳过(BugD巳Wutiv巳)0运行失败0查找到的违规0被抑制的违规0违反规则的条数00:00:06覆盖率分析
1.启动c++test,通过新建立c++test项目,导入VC6测试例程Exp
5.l\Calculate\Calculate.dspo凶TestSuite_Account_cx眼Run UnitTests汉、圉团口日林include,rcpptest.hA结束Unresolved inclusion:cpptest.hLccount・cxx20/20测试成功80个报告出的任务国I CL匚2匚】TO“/ATM/AlJFJL JLTtm2UJLJLUJLNJXJUl/0:00:22[B]class TestSuite_Account_cxx_cdl54a26:{public:CPPTEST_TEST_SUITETestSuite_Ac,范围涉CPPTEST_TESTtest_debit_l;▼执行电CPPTEST_TESTtest_debit_10;CPPTEST_TESTtest_debit_2;已执行的测试用例20CPPTEST_TESTtest_deb it_3;通过的20失败的0跳过的0CPPTEST_TESTtest_deb it_4;CPPTEST_TESTtest_debit_5;运行时异常0CPPTEST_TESTtest_debit_6;执行问题0CPPTEST_TESTtest_debit_7;断言失败0CPPTEST_TESTtest_deb it_8;运行时错误检测的违规0CPPTEST_TESTtest_deb it_9;未验证的结果80«nr►测试问题0要查看测试覆盖率,需要生成并运行测试用例配置规范接下来执行测试用例对测试覆盖率进行分析质量任务区划覆盖率盾任务后控制台°Q噌Run UnitTests…区0白上测试结果,二«码审查Q圆0分,-S予▽囹ffl□上[80]>TestSuite_Account_cxx.cpp▲白豆[80]>审查单元测试结臬心结束由••心》[行81]结果double_return=
0.000000e+000田
④>[行82]结果int_cpptes t_T estObjec t.my AccountNumber=020/20测仃80个报告出的任务甚由自>[行83]结果double_cpp test_T estObject.my Balance=
0.000000e+0000:00:22田•心>[行84]结果5td:5tring_cpptest_TestObject.myPassword=~S®♦•色>[行102]结果double_return=-
2.225074e-308]®->[行103]结果int_cpptest_TestObject.myAccountNumber=0®
④>[行104]结果double_cpp test_T estObject.my Balance=-
2.225074e-308,范围由•・
①>[行105]::std::string_cpptest_TestObject.myPassword=▼执行国••
④>[行123]结果double_return=-
1.797693e+3080L>[行124]结果int_cpptest_TestObject.myAccountNumber=0已执行的测试用例20田心》[行125]结果double_cpptest_TestObject.myBalance=-
1.797693e+308通过的20失败的0跳亍13上>[行126]::std::string_cpptest_TestObject.myPassword=运行时异常0由…
①>[行142]结果double_return=-
1.797693e+308执行问题0田
④>[行143]结果int_cpptest_TestObject.myAccountNumber=0断言失败0由自>[行144]结果double_cpptest_TestObject.myBalance=-1,797693e+308运行时错误检测的违规0田•心》[行145]::std::string_cpptest_TestObject.myPassword=S,>[行163]结果double_return=
1.000000e+000未验证的结果80由•••,*>[行164]结果int_cpptest_TestObject.myAccountNumber=0测试问题0®
④>[行165]结果double_cpptest_TestObject.myBalance=
1.000000e+000覆盖率由••山》[行166]::std::string_cpptest_TestObject.myPassword=行19%[9/48可执行代码行田•心>[行184]结果double..return=
1.797693e+308语句:-由••色>[行185]结果int_cpptest_TestObject.myAccountNumber=0▼基本块-|x|TestSuite ATMcxx.cp[^1TestSuite_Account_cx区>35=O路径--判定-include,rcpptest.h,r|」|覆盖率次_______________________________________________________________________________简单条件-亍覆盖率19%[9/48可执行代码行]MC/DC:-石k贝〒而二通南“回济司武疗祖居荀]白落.而二…回布司双行商包行]$•-include-45%[5/11可执行代码行]白…国ATM.cxx-0%[0/18可执行代码行]j j••…ATM::ATM Bank*,BaseDisplay*-0%[0/2可执行代码行]j j••…ATM::fillUserRequestATM::UserRequest double-0%[0/5可执行代码行]3\j••…ATM::makeDeposit double-0%[0/3可执行代码行]j[••…ATM::showBalance-0%[0/3可执行代码行]j j••…ATM::view Accountint,std::string-0%[0/2可执行代码行]\•••…ATM::withdrawdouble-0%[0/3可执行代码行]曲⑭Bank.cxx-0%[0/12可执行代码行]由…国BaseDisplay,cxx-0%[0/3可执行代码行]由…国Account,cxx-100%[4/4可执行代码行]vc
60.pdb III。
个人认证
优秀文档
获得点赞 0