山东大学软件测试实验报告_第1页
山东大学软件测试实验报告_第2页
山东大学软件测试实验报告_第3页
山东大学软件测试实验报告_第4页
山东大学软件测试实验报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一。黑盒测试一、等价类划分电话号码问题某城市电话号码由三部分组成。它们的名称和内容分别是:(1)地区码:空白或三位数字;(2)前缀:非'0'或'1'的三位数字;(3)后缀:4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。根据题目,分别将地区码、前缀、后缀进行分类,分析结果如下:输入有效等价类编号无效等价类编号地区码空白1包含其他字符3三位数字2少于三位4多于三位5前缀非0或非1的三位数6包含其他字符8包含0的三位数9包含1的三位数10少于三位数11多于三位数12后缀四位数字7包含其他字符13少于四位数14多于四位数15根据上图的分析,可的测试用例测试数据预期结果覆盖类地区码前缀后缀空白5554344接受(有效)1、6、72325454343接受(有效)2、6、7A233224343拒绝(无效)3213224343拒绝(无效)423233224343拒绝(无效)523232A4343拒绝(无效)82322084343拒绝(无效)92321114343拒绝(无效)10232324343拒绝(无效)11232322224343拒绝(无效)122323224AS2拒绝(无效绝(无效)14232322434311拒绝(无效)15三角形问题根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明不是三角形、三角形是三边不等的、是等腰的、还是等边的。分析题目中给出和隐含的对输入条件的要求:(1)整数(2)三个数(3)非零数(4)正数(5)两边之和大于第三边(6)等腰(7)等边如果a、b、c满足条件(1)~(4),则输出下列四种情况之一:1)如果不满足条件(5),则程序输出为"非三角形"。2)如果三条边相等即满足条件(7),则程序输出为"等边三角形"。3)如果只有两条边相等、即满足条件(6),则程序输出为"等腰三角形"。4)如果三条边都不相等,则程序输出为"一般三角形"。列出等价类表并编号

枭徉箍,千・:整数有效等价类型口F阿无效等价■类号码:整数-1・一边为非整案「也为非整数用b为非整数〔匚为非整数12131415两边为非整毒以匕/为非整数一c4推越鲂1617二边0b,c均为非整数13三个蚣,,2京密工边《只给两边{-1只给a给C"只给sb只给.■■口i■自-»13如21222324给出三个以上25.•非零数:3L边为手一■—.."...-二边为零Y-a为口b为口「为口262723Y力为口为0皆.-.七in233。31口7'-1二边qhc均为D32正数也.厂a<0一边<0、btUjc司:「a<fl且b<0—^边<il、a,<ll且c<llLb<0且c<fl三边均划:也⑷且M0且。通333435羽373333除油条.洋•:构成一般三角形4匕兀tH~C33abc>b5-6:7—♦「才bea+b=a-b+cdak+rzZ'j40414243a+c<b4445构质等腰;■:三角形二:a=b?b-ca=c」上洞边•尸之和大于第三边9iH构成等腰.三角形epb=c11.覆盖有效等价类的测试用例:abc覆盖等价类号码(1)--(7)555(1)--(7),(8)455(1)--(7),(9)545(1)--(7),(10)444(1)--(7),(11)覆盖无效等价类的测试用例:abc稹盖等价类号码abc覆盖等价类号华4玄;挛—三三二12石['&-:34.5513300,颉]:软七二三二;;二苏二三:4二三近-二1;-二3.54.55000—尬―34.55.516:345;3.545.518三工:二二卷二笆.■二19-4:-5<36■;;;;■;■■■:三《20w.二.虬二:注】'三三:乔・,三;.1-5.二.213-4-5।--,,।r."।■二;.■:.:38华;二二:4=二二;22工3,;二二小:—立:—三三包。:三二;:,.■:::::23:;3……1.524.•;;〉;.:常三三;2541:-三金二25-3不二工1.42:,:0不;26玄一二i;三:三;」施—1.:.言―-51三27二二一•-4生二二:二.3402834145日期问题用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1WmonthW12和1WdayW31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004年11月29日,则该程序的输出为2004年12月1日。(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。(2)分析程序的规格说明,并结合以上等价类划分的情况,给出问题规定的可能采取的操作(即列出所有的动作桩)。(3)根据(1)和(2),画出简化后的决策表。1)划分等价类并编号,下表等价类划分的结果

输入等价类有效等价类无效等价类日期的类型及长度①6位数字字符②有非数字字符③少于6位数字字符④多于6位数字字符年份范围⑤在1990~2049之间⑥小于1990⑦大于2049月份范围⑧在01~12之间⑨等于00⑩大于122)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:测试数据期望结果覆盖的有效等价类200211输入有效①、⑤、⑧3)为每一个无效等价类设计一个测试用例,设计结果如下:测试数据期望结果覆盖的无效等价类95June无效输入②20036无效输入③2001006无效输入④198912无效输入⑥200401无效输入⑦200100无效输入⑨200113无效输入⑩3.NextDate函数包含三个变量:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day和year均为整数值,并且满足下列条件:①1wmonthw12②1wdayw31③1920Wyea”20501)有效等价类为:M1={月份:1W月份W12}D1=旧期:14日期431}Y1={年:1812W年W2012}2)若条件①~③中任何一个条件失效,则NextDate函数都会产生一个输出,指明相应的变量超出取值范围,比如"month的值不在1-12范围当中"。显然还存在着大量的year、month、day的无效组合,NextDate函数将这些组合作统一的输出:"无效输入日期"。其无效等价类为:M2={月份:月份<1}M3={月份:月份>12}D2=旧期:日期<1}D3=旧期:日期>31}Y2={年:年<1812}Y3={年:年>2012}弱一般等价类测试用例月份日期年预期输出61519121912年6月16日强一般等价类测试用例同弱一般等价类测试用例SR7SR7-1-11811三个无效注:弱--有单缺陷假设;健壮--考虑了无效值(一)弱健壮等价类测试用例ID月份日期预期输出WR11519121912年6月16日WR2-1151912月份不在1~12中WR313151912月份不在1~12中WR4-11912日期不在1~31中用例ID月份日期预期输出WR11519121912年6月16日WR2-1151912月份不在1~12中WR313151912月份不在1~12中WR4-11912日期不在1~31中WR5321912日期不在1~31中WR6151811年份不在1812~2012中WR7152013年份不在1812~2012中((二)强健壮等价类测试用例ID月份日期年预期输出SR1-1151912月份不在1~12中SR26-11912日期不在1~31中SR36151811年份不在1812〜2012中SR4-1-11912两个无效个有效SR56-11811两个无效个有效SR6-1151811两个无效个有效实验二。白盒测试利用白盒测试之赋税管理系统练习基本路径测试方法。准备:Junit-4.10Eclipse(安装完Juniteclipse新建工程,本次先以获取数组中的中位数为例进行介绍/UtilJ西s-rc」由whiteBox»[T|Data£tructure.java[}]TestDatsStructure.java,国」RESystemLibrary[JavaSE-1.?然后在项目中引入」口门让《对于冒泡排序进行一次测试:Finishedafter0.012secondsRuns:1/10Errors013Failures:03*imports+sticFinishedafter0.012secondsRuns:1/10Errors013Failures:067public弋Is至:sTestDataStmcture(R:9J^Test[10publicMQidte&tSort(){ill//f1("Notyetimplejt>entedT,);12intscDne[]=£67,69,75,B7a89,90,99,1g2};;13[JataStnurturetest=rcwDataStnucture{);115白■广亡白test*halfSort(score))j当预期结果与执行结果相同时,测试显示正确如果有错误预判,显示结果错误。实验步骤二:设计程序,进行测试:收入Income和供养人数nDependance来计算赋税金额的程序。程序输入是Income和nDependance,程序输出是:总税金TaxTotal应缴所得税计算公式:TaxSubtotal收入(income)税率计算公式<100000.02*income10000<income<50000200+0.03*(income-10000)>500001400+0.04*(income-50000)免税部分:exemption=人数*50;实缴所得税:TaxTotal=TaxSubtotal-exemption程序Java代码:packageP.test;importjava.util.Scanner;publicclassTexTotal{privatedoubletotals;privatedoubleincome;privateintper;publicdoublegettotals(){returntotals;}publicvoidsetShuru(doubleincome,intper){this.income=income;this.per=per;}publicbooleangetShuru(){try{Scannerin=newScanner(System.in);System.out.println("请输入你的工资和家庭人数(以空格隔开):");this.income=in.nextInt();this.per=in.nextInt();}catch(Exceptione){System.out.println("请输入正确的工资数目!");System.out.println("错误类型:"+e);returnfalse;}returntrue;}publicvoidIncome(){if(this.income<=0||this.per<=0){System.out.println("请输入正确的家庭人数和收入!");}elseif(this.income<10000){this.totals=this.income*0.02-this.per*50;}elseif(this.income>=10000&&this.income<50000){this.totals=200+(this.income-10000)*0.03-this.per*50;}else{this.totals=1400+(this.income-50000)*0.04-this.per*50;}if(this.totals<0){this.totals=0;}}publicvoidPrints(){System.out.println("需要缴纳的税为:"+this.totals);}publicstaticvoidmain(Stringargs[]){TexTotald=newTexTotal();if(d.getShuru()){d.Income();d.Prints();}}}}if(this.totals<0){this.totals=0;}}publicvoidPrints(){System.out.println("需要缴纳的税为:"+this.totals);}publicstaticvoidmain(Stringargs[]){TexTotald=newTexTotal();if(d.getShuru()){d.Income();d.Prints();}}}测试代码:packageP.test;importstaticorg.junit.Assert.*;importjunit.framework.Assert;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;publicclassTexTotalTest{TexTotals=newTexTotal();@BeforepublicvoidsetUp()throwsException{}@AfterpublicvoidtearDown()throwsException{}@TestpublicvoidtestGetShuru1(){s.setShuru(9994,5);s.Income();Assert.assertEquals(0.0,s.gettotals());}@TestpublicvoidtestGetShuru2(){s.setShuru(10023,3);s.Income();Assert.assertEquals(50.69,s.gettotals());}@TestpublicvoidtestGetShuru3(){s.setShuru(59232,4);s.Income();Assert.assertEquals(1569.28,s.gettotals());}@TestpublicvoidtestGetShuru4(){s.setShuru(500,0);s.Income();Assert.assertEquals(0.0,s.gettotals());}@TestpublicvoidtestGetShuru5(){s.setShuru(-50000,4);s.Income();Assert.assertEquals(0.0,s.gettotals());}}

医控申毓图3测试数据

3,物试用例设计编号输入数据预期输出1供养人数5收入9羽4息税金0.024养人数三收入10023总税金50.693供养人数4收入592M2总税金1569.284供养人数0收入5Q0总税金0.0请输入正确的家庭人数和收入!5供养人数4收入-50000总税金0.0请输入正确的家庭人数和收入!测试均顺利通过。路径覆盖率为100%。实验三、1、运行Winrunner,新建一个测试项目。点击【开始】按钮,选择【程序】-【WinRunner】-【WinRunner】,点击【NewTest】。2、开始录制。录制前查看如下设置是否正确。主菜单“Tools”一“GeneralOptions”一“General”选项卡设置如下,选择GUIMap模式为“TheGUIMapFileperTest”图图3-1-2(GeneralOptionsGererdStartup-(GeneralOptionsGererdStartup-IFolders・RecordSbIbcIbcIApplicationsScriptFormatTbmIRecognition►RurSettingsSpnchronizationRecoveryNotificationsE-mailRecipient缪AppearanceGeneral|7Backuptestscriptdutcimdtic己⑪everypoaminutesGUIFilesGUImapfilemode;「GlobalGUIMapfileWGUIMapfilepertest|7Loadlempordr^GUImdpfile[specifyfileintheFolderscategory)LanguageKeyboardfile:|CAProgramFilesVMercurpInteractive\WinRunner\dat^…|图3-1-1点击工具栏上”录制〃按钮

,WinRunner进入录制状态。3、启动需录制界面窗口。使用WinRunner自带的演示程序,运行Flight4B程序,进入工四汨”窗口如图3-1-2。具体运行方法为:点击【开始】按钮,选择【程序】-【WinRunner】-【SampleApplications】,点击【Flight4A】。4、操作图形用户界面。点击“AgentName”输入框,输入“tester";点击"Password”输入框,输入“mercury”;点击“OK”按钮。

5、在图3-1-3中选择File—OpenOrder。图3-1-3在随后的窗口中,选中OrderNo(在checkBox中打上勾),输入数字3,按“OK”按钮。如图3-1-4。图3-1-4在图3-1-3中,选择File—FaxOrder。在图3-1-4窗口中输入传真号码(数字)如:0109812320。并将签名选项打上勾。图3-1-5在AgentSignature窗口中写下你的名字。用鼠标在白板上签名(画名)。仔细查看WinRunner如何在ContextSensitive录制模式下进行签名。清除刚才所做的签名轨迹。按下“ClearSignature”按钮。将FaxOrder窗口移动到屏幕上不同的位置。(在更换AnoLog录制模式时,重新设置窗口位置)按F2转换到AnoLog录制模式下。并在AgentSignature窗口中写下你的名字(画下你的名字)。仔细观察WinRunner如何在Anolog录制模式下进行签名录制。再次按下F2转换回ContextSensitive录制模式,按下Send按钮,发送传真。窗口将提示发送成功。6、停止录制。按左Ctrl+F3键停止录制。查看WinRunner中记录的脚本。7、保存脚本。点击工具栏中“保存”按钮把脚本保存到指定目录。8、回放脚本。关闭“Flight4人”程序。选择工具栏上“FromTop”按钮。观察脚本的运行。插入同步点操作前请先确保如下设置:主菜单“Tools”一“GeneralOptions”一“Settings”选项卡设置如下,选择TimeoutforcheckpointsandCSstatements为1000msec。图3-1-61、运行WinRunner,并创建一个新的测试。2、打开“飞机预定票系统"(Flight4A)。(PASSWORD:mercury)3、录制一个脚本。在“飞机预定票系统”中创建一个新的定单。选择"File>NewOrder”。填写飞机与乘客信息。如图3-1-7:FlightRefErv-atinnInix|FileFlightRefErv-atinnInix|FileEditAnalysisHelp图3-1-7插入定单存到数据库。单击"InsertOrder”按钮,当插入完成,"InsertDone”信息将出现在状态栏(在界面上方)。再单击“DeleteOrder”按钮,并确认删除此订单。停止录制。保存脚本。(例如脚本名为Lesson)4、关闭“Flight4人”程序。回放刚才录制的脚本。观察发生的情况,删除订单时出现错误提示。原因是回放脚本速度太快,插入还没有成功就要删除脚本。插入同步点步骤1、确认窗口处在Lesson测试脚本下。(由于间隔时间不够导致失败)2、移动鼠标到所要插入同步点的脚本位置。将鼠标移动到“button_press("InsertOrder")「末尾,并回车新增行,如图3-1-8:

其Plight百^二巴士丁值于1口Jiset_wlndij1.1/CFlightRe=servation"buttliTl_set(,YFirst«「OI'T);edit_se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论