《软件质量保证与测试》实验报告指导教师—刘卫红实验一用例设计与黑盒测试1、实验目的a)能够熟练应用黑盒测试技术进行测试用例设计b)对测试用例进行优化测试2、实验设备主流PC机一套,安装有主流的编程工具如MyEclipse、C、VisualC++3、实验内容(1)实现一个登陆模块,用户名要求由字母和数字组成且第一个必须是字母,长度为6-10,密码由六位数字组成,请根据黑盒测试的方法设计测试用例。编程工具myeclipse+tomcat+orcal部分代码:h2用户登陆/h2formaction=login.userDOid=loginmethod=postdivclass=contentp用已有账号登陆/pb用户ID/bbr/inputtype=textname=idvalue=/%=request.getAttribute(login_msg)==null?:request.getAttribute(login_msg)%br/br/b密码:/bbr/inputtype=passwordname=passwordvalue=/br/br/br/inputtype='submit'class=buttonvalue='登陆'if(action.equals(login)){intid=Integer.parseInt(request.getParameter(id));if(id.matches(([a-zA-Z]{1,}){6,10})){request.setAttribute(login_msg,登陆失败,账号或密码错误);request.getRequestDispatcher(login.jsp).forward(request,response);return;}Stringpassword=request.getParameter(password);if(password.maches([0-9]{6})){request.setAttribute(login_msg,登陆失败,账号或密码错误);request.getRequestDispatcher(login.jsp).forward(request,response);return;}userDAOdao=newuserDAO();try{useru=dao.findByID(id);if(u==null||!u.getUserpwd().equals(password)){request.setAttribute(login_msg,登陆失败,账号或密码错误);request.getRequestDispatcher(login.jsp).forward(request,response);}else{out.print(登陆成功);}}catch(Exceptione){e.printStackTrace();}测试用例:(2)为QQ的注册账号功能设计测试用例。注册账号功能部分截图如下:Qq注册测试用例详细的界面可打开QQ网站的注册账号链接查看,每个字段的要求点击相应的输入域即可看到。4、实验要求(1)实验内容1需要编写相关程序。(2)撰写实验报告,并给出设计的测试用例对程序进行测试5、实验思考(1)在实际的测试中,你的测试用例达到了发现程序缺陷的目的吗?答:基本达到了(2)在进行程序设计中,你的测试用例是否达到测试的充分性和减少测试用例的冗余性。答:没有,以后会慢慢解决实验二Web测试1.实验目的掌握用例执行及缺陷报告的书写方法。2.实验设备主流PC机一套,网络通畅。3.实验内容测试NBA英文版网站,或目前使用的一些知名网站,如QQ空间,报告四个缺陷。4.实验要求将所发现的四个缺陷进行详细描述,撰写实验报告,描述缺陷可使用中文,附件若必要,也可使用视频,截取图片或抓取视频时,需要有浏览器的标题栏和地址栏。附:缺陷描述样本:BugTitle:Home-LoginlinkdoesnotworkinIE6OS&BS:WindowsXPProfessionalSP3+IE6BugType:FunctionalSeverityDegree:MediumActionSteps:1.VisitNBAHomewithIE6::Noresponse.BTW:FF10andChrome17NOthisissue.BugAttachment:网址:=1024bug.com浏览器:win10edge浏览器问题描述:图片显示不了网址:浏览器:win10edge浏览器问题描述:图片加载不了实验三代码分析与单元测试1.实验目的掌握白盒测试方法,并用白盒测试方法设计测试用例;掌握使用Junit进行单元测试的方法。2.实验设备主流PC机一套,安装有主流的编程工具如MyEclipse、C、VisualC++3.实验内容题目一:折半查找请按要求对下面的Java代码进行测试。代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key的元素。publicintbinSearch(intarray[],intkey){intmid,low,high;low=0;high=array.length-1;while(low=high){mid=(low+high)/2;if(key==array[mid])returnmid;elseif(keyarray[mid])high=mid-1;elselow=mid+1;}return-1;}(1)用基本路径测试给出测试路径;(2)为各测试路径设计测试用例。题目二:设计一个加减乘除的计算器程序,利用Junit实施自动测试4.实验要求对于题目一,根据题目要求编写测试用例。对于题目二,给出程序和测试的源代码,并附上测试执行成功与否的截图。撰写实验报告。5.试验思考题目一中使用基本路径测试设计的测试用例,分支覆盖率、条件覆盖率和语句覆盖率是多少?程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的最少测试用例数。通常环路复杂性可用以下三种方法求得。(1)通过控制流图的边数和节点数计算。设E为控制流图的边数,N为控制流图的节点数,则定义环路复杂性为V(G)=E–N+2;该图中共有16条边,14个节点,因此E=16,N=14,V(G)=E-N+2=16-14+2=4,程序的环路复杂性为4。(2)通过控制流图中判定节点数计算。若设P为控制流图中的判定节点数,则有V(G)=P+1该图中有3个判定节点,因此其环路复杂性为V(G)=P+1=3+1=4,所以该程序的环路复杂性为4。(3)将环路复杂性定义为控制流图中的区域数。该控制流图中有4个区域:R1、R2、R3、R4,因此其环路复杂性为4。通过程序的控制流图导出基本路径集,列出程序的独立路径。实验四性能测试和结果分析1.实验目的(1)掌握性能测试的原理,及使用LoadRunner进行性能测试的方法;(2)掌握分析测试结果的基本方法。2.实验设备主流PC机一套,LoadRunner8.03.实验内容(1)配置一个用户登陆系统;(2)录制脚本(即创建虚拟用户脚本);(3)创建场景(设置用户数=100),并执行场景;(4)分析测试结果。4.实验要求撰写实验报告,填写上机测试步骤和内容,包括:录制的测试脚本,场景的设置和测试结果图。LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要、并发数、平均事务响应时间、每秒点击数、业务成功率、系统资源、网页细分图、Web服务器资源、数据库服务器资源等几个方面分析,如图1-1所示。性能测试结果分析的一个重要的原则是以性能测试的需求指标为导向。我们回顾一下本次性能测试的目的,正如所列的指标,本次测试的要求是验证在30分钟内完成2000次用户登录系统,然后进行考勤业务,最后退出,在业务操作过程中页面的响应时间不超过3秒,并且服务器的CPU使用率、内存使用率分别不超过75%、70%,那么按照所示的流程,我们开始分析,看看本次测试是否达到了预期的性能指标,其中又有哪些性能隐患,该如何解决。图1-1性能测试结果分析流程图结果摘要LoadRunner进行场景测试结果收集后,首先显示的该结果的一个摘要信息,如图1-2所示。概要中列出了场景执行情况、“StatisticsSummary(统计信息摘要)”、“TransactionSummary(事务摘要)”以及“HTTPResponsesSummary(HTTP响应摘要)”等。以简要的信息列出本次测试结果。图1-2性能测试结果摘要图场景执行情况该部分给出了本次测试场景的名称、结果存放路径及场景的持续时间,如图5-3所示。从该图我们知道,本次测试从15:58:40开始,到16:29:42结束,共历时31分2秒。与我们场景执行计划中设计的时间基本吻合。图1-3场景执行情况描述图StatisticsSummary(统计信息摘要)该部分给出了场景执行结束后并发数、总吞吐量、平均每秒吞吐量、总请求数、平均每秒请求数的统计值,如图5-4所示。从该图我们得知,本次测试运行的最大并发数为7,总吞吐量为842,037,409字节,平均每秒的吞吐量为451,979字节,总的请求数为211,974,平均每秒的请求为113.781,对于吞吐量,单位时间内吞吐量越大,说明服务器的处理能越好,而请求数仅表示客户端向服务器发出的请求数,与吞吐量一般是成正比关系。图1-4统计信息摘要图TransactionSummary(事务摘要)该部分给出了场景执行结束后相关Action的平均响应时间、通过率等情况,如图1-5所示。从该图我们得到每个Action的平均响应时间与业务成功率。注意:因为在场景的“Run-timeSettings”的“Miscellaneous”选项中将每一个Action当成了一个事务执行,故这里的事务其实就是脚本中的Action。图1-5事务摘要图HTTPResponsesSummary(HTTP响应摘要)该部分显示在场景执行过程中,每次HTTP请求发出去的状态,是成功还是失败,都在这里体现,如图5-6所示。从图中可以看到,在本次测试过程中LoadRunner共模拟发出了211974次请求(与“统计信息摘要”中的“TotalHits”一致),其中“HTTP200”的是209811次,而“HTTP404”则有2163,说明在本次过程中,经过发出的请求大部分都能正确响应了,但还是有部分失败了,但未影响测试结果,“HTTP200”表示请求被正确响应,而“HTTP404”表示文件或者目录未能找到。有朋友可能会问,这里出现了404的错误,为什么结果还都通过了。出现这样问题的原因是脚本有些页面的请求内容并非关键点,比如可能请求先前的cookie信息,如果没有就重新获取,所以不会影响最终的测试结果。图1-6HTTP响应摘要常用的HTTP状态代码如下:400无法解析此请求。401.1未经授权:访问由于凭据无效被拒绝。401.2未经授权:访问由于服务器配置倾向使用替代身份验证方法而被拒绝。401.3未经授权:访问由于ACL对所请求资源的设置被拒绝。401.4未经授权:Web服务器上安装的筛选器授权失败。401.5未经授权:ISAPI/CGI应用程序授权失败。401.7未经授权:由于Web服务器上的URL授权策略而拒绝访问。403禁止访问:访问被拒绝。403.1禁止访问:执行访问被拒绝。403.2禁止访问:读取访问被拒绝。403.