您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 软件测试课程考查(论文)
第页1.所选题目保险金问题,保险金问题主要是为投保人计算其需要购买的车险,一年内的保险金计算公式为:保险金=基本保险费率*年龄系数-安全驾驶折扣且车险的计算还需要满足如下条件:1.基本保险费率为1000元/年;2.年龄系数和安全驾驭折扣见下表;3.投保人必须是年满16岁,且不足80岁的人;4.投保人驾照上的分数初始为12分,年当违反交通规则时,将以整数为单位扣掉1分或若干分;5.如果投保人驾照上的当前分数高于门限分数,则投保时可给予其安全驾驶折扣;6.如果投保人驾照上的当前分数被扣至低于零分,则该投保人的驾照被吊销,则不能参保。年龄年龄系数门限分数安全驾驶折扣(单位:元)16=年龄252.8115025=年龄351.8910035=年龄451.0715045=年龄600.8520060=年龄801.572502.关键代码1.privatestaticfinalintrate=1000;//保存基本保险费率2.privatestaticint[][]settings={{0,0,0},{28,11,50},{18,9,100},{10,7,150},{8,5,200},{15,7,250}};//计算时将年龄系数放大原来的10倍放入int数组中3.publicstaticint[]calcSetting(intage){4.if(age16||age=80){5.returnsettings[0];6.}elseif(age25){7.returnsettings[1];8.}elseif(age35){9.returnsettings[2];10.}elseif(age45){11.returnsettings[3];12.}elseif(age60){13.returnsettings[4];14.}else{15.returnsettings[5];16.}17.}publicstaticintInsurance(intage,intscore){18.intinsuraneMoney=-1;19.if(score0&&score13){20.int[]setting=calcSetting(age);21.if(setting!=settings[0]){22.intsafeDrivingDiscout=0;23.intageCoefficient=setting[0];24.intscoreThreshold=setting[1];25.if(scorescoreThreshold){26.safeDrivingDiscout=setting[2];27.}__________________学院__________级___________专业姓名____________学号□□□□□□□□□□□□………………………………(密)………………………………(封)………………………………(线)………………………………第页28.insuraneMoney=(int)(rate/10*ageCoefficient)-safeDrivingDiscout;29.}30.}31.returninsuraneMoney;3.黑盒测试技术设计测试用例1.边界值测试边界点年龄的边界点:16,25,35,45,60,80。分数的边界点:0,5,7,9,11,12。测试数据年龄的测试数据:15,16,17,24,25,26,34,35,36,44,45,46,59,60,61,79,80,81。分数的测试数据:-1,0,1,4,5,6,7,8,9,10,11,12,13。测试用例输入预期输出年龄分数年龄系数安全驾驶折扣2532.802562.802582.8025102.8025122.81002092.803091.804091.01505290.82007091.52502.决策表的测试等价类的划分等价类年龄分数有效等价类A1:16=年龄25S1:分数=12A2:25=年龄35S2:分数=10.11A3:35=年龄45S3:分数=8.9A4:45=年龄60S4:分数=6.7A5:60=年龄80S5:1=分数=5无效等价类A6:年龄16S1:分数=0A7:80=年龄S1:分数0S1:分数=13决策表测试用例ID输入预期输出年龄分数年龄系数安全驾驶折扣0120122.850022062.800330111.8100043051.80第页0540101.0150064041.00075290.8200085230.800970101.5250107041.504.白盒测试技术设计测试用例判定测试calcSetting()的判定节点4if(age16||age=80)6elseif(age25)8elseif(age35)10elseif(age45)12elseif(age60)Insurance()的判定节点19if(score0&&score13)21if(setting!=settings[0])25if(scorescoreThreshold)calcSetting()测试用例测试用例ID输入age预期输出0115{0,0,0}0224{28,11,50}0334{18,9,100}0444{10,7,150}0559{8,5,200}0660{15,7,250}0781{0,0,0}Insurance()测试用例测试用例ID输入预期输出agesocreMoney01任意0-102任意13-1034098500430918000515任意-1路径的测试第页程序图:复杂度1.calcSetting()方法复杂度为6;2.Insurance()方法复杂度为4;独立路径测试calcSetting()的路径Path1:3,4,6,8,10,12,14,15,16;Path2:3,4,5;Path3:3,4,6,7;Path4:3,4,6,8,9;Path5:3,4,6,8,10,11;Path6:3,4,6,8,10,12,13;Insuran()的路径Path1:18,19,20,21,22-24,25,26,27,28,29,30,31;Path2:18,19,30,31;Path3:18,19,20,21,29,30,31;Path4:18,19,20,21,22-24,25,27,28,29,30,31;calcSetting()测试用例测试用例ID输入age预期输出对应的路径备注0160{15,7,250}Path160=age800215{0,0,0}Path2age160324{28,11,50}Path316=age250434{18,9,100}Path425=age350544{10,7,150}Path535=age450659{8,5,200}Path645=age60Insuran()测试用例Insurance()方法181920-2122-24252627-28293031calcSettinag()方法34567891011121314-16第页测试用例ID输入预期输出对应路径agesocreMoney01409850Path102任意0-1Path2033091800Path40415任意-1Path35.驱动模块的开发驱动程序代码:importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassDbHelper{Connectionconn=null;intPassNum=0;//成功的数量intFailNum=0;//失败的数量intid;//测试的编码intage;//测试的年龄intsocre;//测试的分数intMoney;//得到的保险金/***连接数据库*@return*/publicConnectiongetConnection(){try{Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);//加载驱动conn=DriverManager.getConnection(jdbc:sqlserver://localhost:1433;DatabaseName=yongli;username=sa;password=123456);//连接到数据库}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnconn;}//获取数据并对数据进行处理publicvoidquery(){Stringsql=select*fromcsyl;ResultSetrs=null;conn=getConnection();System.out.println(---------对函数Insurance的单元测试结果--------------);try{Statementstmt=conn.createStatement();第页rs=stmt.executeQuery(sql);while(rs.next()){id=rs.getInt(id);//读入测试用例的IDage=rs.getInt(age);//读入测试用例的agesocre=rs.getInt(socre);//读入测试用例的socreCalculatorct=newCalculator();Money=ct.Insurance(age,socre);if(Money==rs.getInt(money)){//若测试用例通过,记录通过的用例总数PassNum++;System.out.println(测试用例+id+通过);//将测试用例的执行结果输出}else{FailNum++;System.out.println(测试用例+id+失败);}}}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}//------统计测试结果------intcount=PassNum+FailNum;System.out.println(共执行+count+个测试用例,+PassNum+个通过,+FailNum+个失败.);}}6.测试结果与分析测试执行:测试用例信息第页测试结果测试分析:在本次单元测试实践中实际的存在问题的,体现在如下方面。1、静态测试先行。在对代码测试之前,应先进行静态检查,这样应该检查出语句的缺陷,这比通过动态测试发现缺陷要更加直接和快速。要样成这样的习惯,不要过度依赖动态测试,动态测试从经济的角度来看,其实是很耗资源和时间的。2、测试用例评审。在设计测试用例后,应对其进行评审,判断是否有漏洞,冗余,是否能体现其有效性,这样才能有效的避免虚假的测试用例通过率。………………………………(密)………………………………(封)………………………………(线)………………………………
本文标题:软件测试课程考查(论文)
链接地址:https://www.777doc.com/doc-7247378 .html