JAVA_课程16_单元测试.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单元测试的概念: 单元测试是针对软件设计的最小单位─程序模块(例如一个函数或者一个方法),进行正确性检验的测试工作。 目的在于发现各模块内部可能存在的各种差错。 单元测试需要从程序的内部结构出发设计测试用例。 多个模块可以平行地独立进行单元测试。 单元测试的概念: 单元测试是在软件开发过程中要进行的最低级别的测试活动, 在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 单元测试主要是白盒测试,测试工作主要由开发人员来完成,所以测试人员一般对功能完成的代码过程比较熟悉。 对单元测试的一些想法 做单元测试是否有必要?是不是在浪费时间? 目前,对于单元测试有些人有以下想法: 它太浪费时间了,现在要赶进度,时间上根本不允许,或者随便做做应付领导。 我是一个很棒的程序员,我写的代码肯定是没有问题的。 做单元测试太烦了,反正到后面集成了还会做测试,到时有问题在集成测试时肯定能发现的,实在不行在系统测试也该会发现的。 这些想法估计很多人都会有。 单元测试的作用 1、节省时间 根据实用软件度量中的(以一个功能点为基准) 计算方法(包括从准备测试,执行测试,和修改缺陷所花费的时间)的数据显示单元测试的成本效率大约是集成测试的两倍 ,系统测试的三倍。 举个例子: 单元测试就相当于盖房子时的原材料。单元测试的过程就相当于检查确保原材料有没有问题。如果原材料有问题,在开始没有检查出来,在房子盖好之后才发现。不但查找问题困难,而且返工日期要求比较久。所以说单元测试不是在浪费时间。 单元测试的作用: 2、对程序是否正确的验证,也是对设计的一种补充。 编写单元测试使我们从另一种角度来观察、思考设计,特别是先写测试,会迫使我们把程序设计成易于调用和可测试的。 另外还可以使编码人员在编码时产生预测试,将程序的缺陷降低到最小。 还有一个简单的例子可以说明单元测试的作用: 假设我们要清洗一台已经完全装配好的食物加工机器!无论你喷了多少水和清洁剂,一些食物的小碎片还是会粘在机器的死角位置,只有任其腐烂并等待以后再想办法。但我们换个角度想想,如果这台机器是拆开的, 那么清洗起来就会省事多了。 测试经验表明: 目前单元测试存在的问题 目前单元测试存在的问题: 1、覆盖率不高 所谓的代码覆盖率不高,就是比如有2个方法,只测试到了一个,或者一个方法中有多个分支,测试只涉及到了其中的部分分支。例如有些语句是有几个分支的,测试时只做了一个分支,其他分支却被忽略了。比如下面的分支语句: Script var now = new Date(); var day = now.getDay(); var dayName; if (day == 0) dayName = “星期日”; else if (day == 1) dayName = “星期一”; else if (day == 2) dayName = “星期二”; else if (day == 3) dayName = “星期三”; else if (day == 4) dayName = “星期四”; else if (day == 5) dayName = “星期五”; else dayName = “星期六”; document.write (“今天是快乐的”, dayName); /Script 我们习惯上测试就是任意选择一个分支,只要一个分支成功了,就认为这个功能成功了。那么其实我们上面的这个代码的测试只覆盖了1/7个分支。 目前单元测试存在的问题 按照上面的说法,如果要每个都测试,是不是就是要穷举测试呢?我们说的代码覆盖率,不是指穷举。比如 if (grade = 85) (grade = 100) ?? ??System.out.println(You got an A. Great job!); else if (grade = 60) (grade 85) ??? ?System.out.println(You got a B ); else ???? System.out.println(You got an C. ); 上面这段代码是不是就是要测试从1-100的数字才叫全部覆盖呢?不是这样的,只要在上面if中的3个数字段中分别选择一个数字测试就已经覆盖了那段代码。不过,这里有边界值也是要特别注意测试一下。比如85,60等。 目前单元测试存在的问题 2、非正常测试不够 比如一个字段‘车身号’,详细设计中规定只能是5位数字组成,很多只是测试5位数字提交成功就算是做完测试。 看下面的例子--特别是蓝色底的测试容易忽略。 还有的非正常测试就是指突然断网或者数据库连接不到,当然

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档