private void gameOver (int score)//游戏结束{//Display game overstring s="您的得分为:";string al =".char[]A={};int i=1;_blockSurface.FontStyle= new Font(FontFace,BigFont);//设置基本格式_blockSurface.FontFormat.Alignment = StringAlignment.Near;_blockSurface.DisplavText ="GAME OVER!!string sc = Convert.ToString( score);//得到当前玩家的分数//write into file;string path="D: test2.txt";//文件路径try{FileStream fs = newFileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite);StreamReader strmreader = new StreamReader(fs);//建立读文件流String[] str = new String[5];String[] split = new String[5];while(strmreader.Peek()!= -1)for(i=0;i<5;i++)strli] = strmreader.ReadLine();//以行为单位进行读取,赋予数组//str[i]split [i]split[i]= str[i].split(':')[1];//按照":"将文字分开,赋予数组person1 = Convert.ToInt32(split[0]); //splt[0]的值赋予第一名person2 = Convert.ToInt32(split[1]); //splt[1]的值赋予第一名person3 = Convert.ToInt32(split[2]); //splt[2]的值赋予第一名person4 = Convert.ToInt32(split[3]); //splt[3]的值赋予第一名person5 = Convert.ToInt32(split[4]); //splt[4]的值赋予第一名strmreader.Close(); //关闭流fs.Close();FileStream ffs = newFileStream(path, FileMode.OpenOrCreate,FileAccess.ReadWrite));StreamWriter sw = new StreamWriter(ffs)//建立写文件流if(_score > person1)//如果当前分数大于第一名,排序{person5=person4; person4 = person3; person3 = person2; person2 = person1;person1=score;}else if(_score> person2)//如果当前分数大于第二名,排序{person5 = person4; person4 = person3; person3 = person2; person2=_score;}else if(_score> person3)//如果当前分数大于第三名,排序{person5 = person4; person4 = person3; person3 =_score;else if(_score> person4)//如果当前分数大于第四名,排序{person5 = person4; person4 =_score;}else if(_score > person5)//如果当前分数大于第五名,排序{person5 = _score;//在文件中的文件内容string ppl ="第一名:“+ Convert.ToString(person1);string pp2 ="第二名:"+ Convert.ToString(person2);string pp3 ="第三名:”+ Convert.ToString(person3);string pp4 ="第四名:"+ Convert.ToString(person4);string pp5 ="第五名"+ Convert.ToString(person5);stringppR= pp1+"r\n"+ pp2 +"r\n" + pp3 +"r\n"+ pp4+"r\n"+ pp5 +"r\n";byte[] info = new UTF8Encoding(true).GetBytes(ppR);sw.Write(ppR); //将内容写入文件sw.Close();ffs.Close();}Catch(Exception ex){Console.WriteLine(ex.ToString());}S=s+""+ sC;//Draw surface to display text;MessageBox.Show(s); //在界面中显示排行榜内容}
02、测试设计下面将利用相关静态和动态(白盒测试、黑盒测试)方法对案例进行相应的测试,得到测试报告与错误列表,在实际项目中可进一步反馈给开发方进行Bug的确认与修复1. 代码走查利用代码走查的方法检查该模块的代码,对代码质量进行初步评估具体实现如表1所示■ 表1 代码走查情况记录从表1的分析中可以看出,本模块的代码基本情况如下(1) 代码直观(2) 代码和设计文档对应(3) 无用的代码已经被删除(4) 注释过于简单2. 基本路径测试法基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出可执行的路径集合,从而设计测试用例的方法首先需要简化程序模块,绘制程序模块如图2所示接着按照模块图的设计路径来覆盖策略主要可分为以下4步执行■ 图2 程序模块图1) 绘制程序的控制流图基本路径测试法的第一步是绘制控制流图,根据程序模块图的逻辑关系,获得该程序块的控制流图,如图3所示■ 图3 程序模块的控制流图2) 计算环路复杂度其次是根据控制流图计算环路复杂度,环路复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,该度量将用于计算程序基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界V(G)=P+1=5+1=6根据以上公式确定至少要覆盖6条路径3) 导出独立路径根据控制流图可以方便地得到以下6条路径path1:1—2—11path2:1—3—4—11path3:1—3—5—6—11path4:1—3—5—7—8—11path5:1—3—5—7—9—10—11path6:1—3—5—7—9—114) 设计测试用例最后设定一组初始参数,以此来设计测试用例令:person1=23person2=20person3=10person4=6person5=4作为测试输入,可设计测试用例如表2所示■ 表2 基本路径法测试用例3. 边界值分析边界值分析法利用输入变量的最小值、略大于最小值、输入范围内任意值、略小于最大值、最大值等来设计测试用例由于输入的只会是数据,且数据均大于0,因此可令:person1 = 23person2 = 20person3 = 10person4 = 6person5 = 4采用边界值法设计测试用例如表3所示■ 表3 边界值法测试用例03、测试执行将设计的测试用例整理合并为测试用例集合,必要时需要开发相应的驱动模块和桩模块本次测试需要开发一个驱动模块,用于初始化相应的参数,并调用待测模块以达到测试效果驱动模块代码如下import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main(){public static void main(String[]args)throws IOException{int person1 = 23,person2 = 20, person3 = 10,person4 = 6,person5 = 4;int score;String s;BufferedReader bf = new BufferedReader(newInputStreamReader(System.in));s = bf.readLine():score = Integer.valueOf(s);_gameOver(score);}}
04、测试总结测试结果可利用Bug记录平台进行记录,在实际项目中则可反馈给开发人员,由开发人员确认并修复测试结束后,形成测试报告(图片来源网络,侵删)
0 评论