软件单元测试技巧_第1页
软件单元测试技巧_第2页
软件单元测试技巧_第3页
软件单元测试技巧_第4页
软件单元测试技巧_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、单元测试,简要议程,为什么程序员要做一些单元测试的基本概念,基本实践和常用工具,测试不是我的工作,你是这样的程序员吗?测试是测试部门的责任。我的职责应该是注意编写代码。测试不是技术性的工作。一点都不好玩。请不要打扰我。我是一个伟大的EJB程序员。我们有测试人员和集成/系统/验证测试。他们迟早会发现我的错误。请不要浪费我的时间。别侮辱我,我写的程序不会错的。测试完全没有必要。离我远点,我是个程序员,你做过测试吗?大多数处于软件开发和管理早期阶段的中小型公司和团队没有专门的测试工作和测试流程。测试只是组织一些人在最终产品提交给用户之前对其进行基本的功能确认测试。更常见的是,测试的实际工作是由用户完

2、成的。因此,软件的质量完全取决于程序员的个人技能和责任感,这是非常随机的。后期维护成本高。一个月的开发,几天的测试,然后一两年的时间来修正错误。这个项目我已经坚持了三年。根本原因是软件本身结构复杂,而且昆虫和天上的星星一样多。软件的结构。方法、类、函数、模块、系统、用户需求、系统结构、集成、单元和错误可以随机分布在任何地方。测试模型和软件本身的复杂性决定了即使是最好的程序员也不能犯任何错误。由于软件本身的复杂性,仅通过测试1或2种最终产品是不可能消除系统中的大多数错误的,最终产品必须被并行地集成到软件开发生命周期的所有阶段,以覆盖软件结构和开发生命周期的不同关注点。主要模型有传统的瀑布模型、V

3、模型、改进的X模型和V模型。测试活动被集成到整个软件开发生命周期中。不同阶段的测试强调从不同的角度关注不同的方面,尽早排除错误,不积累错误。每种类型测试的效果将严格取决于早期阶段其他类型测试的正确和完整执行。测试中有分工,合适的人在合适的时间进行合适的测试。改进了X模型、时间和成本。缺陷发现得越晚,修复成本就越高,每个缺陷在部署阶段的修复成本都会非常高(每个重大以上的缺陷修复都要进行一次完整的系统测试和确认测试)。严格实施供应链管理的组织尤其昂贵。什么是单元测试?单元测试测试软件的最小可执行单元,即类或方法的正确性。单元测试通常是一个可执行代码,可以验证执行结构是否等于预期。每个单元测试应该至

4、少有两个测试用例(:负/正单元测试可以是黑盒或白盒,取决于执行方法。要盖房子,至少要确保每块砖都是好的。什么是单元测试?单元测试是其他类型测试的基础。如果你不小心,一个完整的单元测试会导致其他类型的测试结果不佳。程序员最了解自己的程序单元,最适合单元测试。在传统的重量级方法中,测试用例是由设计者在系统设计阶段开发的,用于验证程序员的工作质量。建一所房子,至少保证每块砖都是好的。单元测试是成本最低的测试活动。找到一个缺陷需要91年。这是程序员的责任。程序员的价值在于与他人合作开发高质量的代码,而不是一堆由新技术术语堆积起来的错误。程序员必须对自己的代码质量负责,单元测试是对自己代码质量的基本承诺

5、。程序=UT CODE不进行单元测试,这将影响团队其他成员的工作。测试人员有权对没有执行测试的代码说不。那些不愿意做UT的人不属于任何团队。,程序=输出代码。实践证明,代码质量最好的程序员是由UT制造的最好的程序员。开发速度最快的程序员是德州仪器制造的最好的程序员。超过80%的非需求错误集中在不可执行且不方便执行的代码块上。德州仪器的质量直接影响到UAT的信息技术/科技/质量。测试非常重要,但是我已经调试并运行了代码,应该是正确的。为什么要浪费额外的时间?程序已经可以运行了。同时,我实际上已经手动完成了测试,但是我只是没有记录和编写代码。我没有时间做测试,工期已经很紧了。完成代码是很好的,尽管

6、我知道我会在将来重做它。我不知道如何测试。调试不等于输出。调试只关注程序的某个方面,通常是最好的途径。UT至少应该关注积极/消极的方面,并且还需要确保一定的调试覆盖率。尤其是J2EE应用程序的调试需要花费大量时间。没有超声波探伤的高效率(这将在后面详细描述),调试就不能重现。代码更改后,软件质量无法保证。超声波探伤必须自动化。只有用代码编写的超声波探伤才能重现,并在将来真正节省人工测试的时间。只有用代码编写的UTs可以实现自动化,并且可以在软件开发的任何时候快速、简单地大量执行,确保能够准确定位错误,并且不会因为修改而引入新的错误。尤其是在系统开发的后期。自动测试可以保证回归测试的有效实施。U

7、T节省的是您未来的时间,而编写UT代码的时间节省了将来修改/维护低质量代码的时间,因此您可以在将来更加关注您的代码。如果你使用测试驱动的思想,它将成为设计的一部分,你不会觉得这是浪费时间。编写UT的过程就是设计的过程,UT可以快速定位错误并节省您的调试时间。需求、设计、评审、编码、返工、UT、如何执行oUT UT传统的做法是先执行OUt UT再执行,严格的瀑布模型,UT作为生命周期的一个阶段,而UT的测试用例通常是设计的一部分。ut的执行通常需要花费大量的时间来编写和执行代码评审后的测试用例,尤其是当配置管理被严格执行的时候。作为最终的质量检验方法,超声波探伤本身只能在将来节省时间。一个完整和

8、全面的超声波探伤需要大量的时间和精力,它需要与公共关系相结合。程序员通常感觉不到UT带来的直接好处,不能获得任何乐趣,并且抵制实现。如何实现UT -传统实践*场景、程序员首先开始设计数据表。然后开始依次编写数据访问对象、信任动作和JSP页面。他检查了代码,确保一切看起来都很好,所以他开始将一切整合在一起。当然,它通常不会运行。经过几个小时的艰苦调试,代码不断被修改,应用服务器重新启动。最后,在数据访问对象中发现一个错误。过了一段时间,在代码被检查之后,程序员开始做无聊的单元测试。在这个时候,他最想做的其实是睡觉。由于时间和成本的压力,pm/程序员倾向于简化或不执行ut的过程,例如需求、设计、运

9、行UT、定位错误、编码、返工、编写测试用例、如何改进UT -写一点、测试一点,每次程序员写完一个程序单元时,他首先通过运行UT代码来编写UT代码以定位程序错误。如果程序可以被分成尽可能小的单元,通过执行ut代码,可以快速定位错误,并且调试可以避免有效地确保先前编写的代码的正确性,并且不必等到增量结束。可以尽早发现错误,而无需等待代码审查来修复它们,并且成本非常低。如何改进ut-,写一点,测试一点,程序员开始设计数据库表,然后开始写数据访问对象,然后他为数据访问对象编写ut测试用例,运行TC,发现一些错误,并迅速纠正他。在所有的TCs都通过之后,他开始写动作,并且他也对动作做了一些测试。最后,他

10、编写了JSP,并将一切都集成在一起。当然,由于JSP的可测试性差,他花了一些时间来纠正JSP页面中的几个标签错误。过了一段时间,在做这件事之前,他问了质量保证部门的人。你看,我所有的代码都写了UT TC。这些测试用例可以直接用作测试报告吗?确信回来后,他很高兴回去做别的事情。作为帮助提高开发效率的有效手段,UT被集成到开发过程中,程序员不需要在UT之后做无聊的事情。如何提高超声波探伤,写一点,测试一点。练习,经过一段时间,我发现如果我不写UT,我的开发速度会开始大大降低。一个月后,我的一个同事非常高兴地向我展示了UT的好处。每次他做任何改变时,他都可以通过执行所有的UT SUITE来确保不会引

11、入新的错误,节省了很多时间,并且看到屏幕上出现一排绿灯时心情非常好。“全队只有我能按时下班。最后,首席技术官问我为什么。我告诉他我一直在做超声波,所以我很少花时间调试。”80%的编程时间花在调试上,这节省了调试时间并提高了开发速度。每次看到绿灯,我都感觉很好。如何使UT -提高,写一点点,测试一些缺点,通常,当你写完一个方法时,你可能会过于自信而不能为他写一个测试用例。过了一段时间,你会发现这给未来留下了隐患,如何进行测试驱动实践,设计,先写单元测试,重构,运行单元测试,编程,发现错误,如何进行测试驱动实践,先写测试用例,我们可以保证每个公共/受保护的方法都有一个测试用例。编写测试用例的过程是

12、一个设计过程。您需要考虑实现代码的可测试行。您需要考虑代码和测试代码之间的关系,仔细考虑实现代码的边界和逻辑,以及测试代码应该如何确保实现代码的正确性。当测试代码完成后,您将对实现代码有一个清晰的理解,并且您可以仔细考虑该做什么和不该做什么,这样您就可以避免此时过度设计ut,这实际上是一个白盒测试,并且可以获得更好的结果。你可以关注一些重要的地方。例,通过测试代码思考设计,/空必须抛出一个异常。失败(“不抛出异常”);接住(xxx) /添加/男孩。添加(新男孩();字符串id=男孩。添加(新男孩();/如果需要检查添加是否成功,那么添加时应该返回id值,并修改上述代码Assert Equal

13、(ID,boy。查找(标识)。getid(),如果(值=null)抛出新的illegalargumentexception(XXX);字符串id=DAOSupport.addObject(男孩);返回id;测试驱动设计是一种开发风格,它要求程序员要做的是:在编写产品代码之前,先编写它的单元测试。没有单元测试的类不允许用作产品代码。单元测试示例决定了如何编写产品代码和成功运行所有单元测试示例,并不断改进单元测试示例。测试驱动设计是一个量化需求分析、设计和质量控制的过程!这也是一个软件不断改进的过程。如何进行ut测试驱动实践和测试代码/实现代码的交替编写,可以使大脑始终保持放松/紧张,工作效率会更

14、高。编写测试代码也是一个设计过程,因此降低了总的时间成本,并且还避免了由于修改不可测试代码而导致的时间成本。文物,一个接一个的放松,通用单元测试框架,JUnit Struts测试用例,JUnit扩展,Action httpUnit测试Http页面,用于测试JFC Struts单元。仙人掌是专门用来测试服务器类JsUnit测试的javascript,JUnit,一个开源的单元测试框架,它也是其他java单元测试框架的基础,JUnit测试用例,公共类TestPeer扩展TestCase /*一个单元测试来验证名字的格式是否正确。*/public void testGetFullName()Pers

15、on p=new Person(Aidan,Burke);(Aidan Burke,p . GetFullName();/*验证是否正确处理空值的单元测试。*/public void testNullsInName()Person p=new Person(null,Burke);资产质量(?Burke,p . GetFullName();/此代码仅在先前的资产质量p=新人员(坦纳,空)时执行;阿瑟夸尔斯(坦纳?p . GetFullName();测试用例是从测试用例扩展而来的,每种方法都负责测试特定的情况。测试结果为真/假,JUnit assertXXX()。使用一系列的assertXXX方法来判断执行结果是否与预期一致。否则,执行将失败。案例的其余部分(当前方法),Junit测试案例,将不会继续。执行结果将显示通过/失败一次的TC数量,通常非常快。多个TCs可以组装成一个测试套件。使用ANT这样的工具,可以自动生成测试报告。JU

温馨提示

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

最新文档

评论

0/150

提交评论