微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

如何写好单元测试

时间:2024-11-23 19:03:07   

大家好,今天Win10系统之家小编给大家分享「如何写好单元测试」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

生意如何小账本专业版-小商户销售和存货记账系列软件最新版本下载

1.软件工程单元测试应该怎么写??


  单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。
测试用例设计
 下面谈谈测试用例设计。前面已经说了,测试用例的核心是输入数据。预期输出是依据输入数据和程序功能来确定的,也就是说,对于某一程序,输入数据确定了,预期输出也就可以确定了,至于生成/销毁被测试对象和运行测试的语句,是所有测试用例都大同小异的,因此,我们讨论测试用例时,只讨论输入数据。 
 前面说过,输入数据包括四类:参数、成员变量、全局变量、IO媒体,这四类数据中,只要所测试的程序需要执行读操作的,就要设定其初始值,其中,前两类比较常用,后两类较少用。显然,把输入数据的所有可能取值都进行测试,是不可能也是无意义的,我们应该用一定的规则选择有代表性的数据作为输入数据,主要有三种:正常输入,边界输入,非法输入,每种输入还可以分类,也就是平常说的等价类法,每类取一个数据作为输入数据,如果测试通过,可以肯定同类的其他输入也是可以通过的。下面举例说明: 
 正常输入 
 例如字符串的Trim函数,功能是将字符串前后的空格去除,那么正常的输入可以有四类:前面有空格;后面有空格;前后均有空格;前后均无空格。 
 边界输入 
 上例中空字符串可以看作是边界输入。 
 再如一个表示年龄的参数,它的有效范围是0-100,那么边界输入有两个:0和100。 
 非法输入 
 非法输入是正常取值范围以外的数据,或使代码不能完成正常功能的输入,如上例中表示年龄的参数,小于0或大于100都是非法输入,再如一个进行文件操作的函数,非法输入有这么几类:文件不存在;目录不存在;文件正在被其他程序打开;权限错误。 
 如果函数使用了外部数据,则正常输入是肯定会有的,而边界输入和非法输入不是所有函数都有。一般情况下,即使没有设计文档,考虑以上三种输入也可以找出函数的基本功能点。实际上,单元测试与代码编写是“一体两面”的关系,编码时对上述三种输入都是必须考虑的,否则代码的健壮性就会成问题。 
 白盒覆盖 
 上面所说的测试数据都是针对程序的功能来设计的,就是所谓的黑盒测试。单元测试还需要从另一个角度来设计测试数据,即针对程序的逻辑结构来设计测试用例,就是所谓的白盒测试。在老纳看来,如果黑盒测试是足够充分的,那么白盒测试就没有必要,可惜“足够充分”只是一种理想状态,例如:真的是所有功能点都测试了吗?程序的功能点是人为的定义,常常是不全面的;各个输入数据之间,有些组合可能会产生问题,怎样保证这些组合都经过了测试?难于衡量测试的完整性是黑盒测试的主要缺陷,而白盒测试恰恰具有易于衡量测试完整性的优点,两者之间具有极好的互补性,例如:完成功能测试后统计语句覆盖率,如果语句覆盖未完成,很可能是未覆盖的语句所对应的功能点未测试。 
 白盒测试针对程序的逻辑结构设计测试用例,用逻辑覆盖率来衡量测试的完整性。逻辑单位主要有:语句、分支、条件、条件值、条件值组合,路径。语句覆盖就是覆盖所有的语句,其他类推。另外还有一种判定条件覆盖,其实是分支覆盖与条件覆盖的组合,在此不作讨论。跟条件有关的覆盖就有三种,解释一下:条件覆盖是指覆盖所有的条件表达式,即所有的条件表达式都至少计算一次,不考虑计算结果;条件值覆盖是指覆盖条件的所有可能取值,即每个条件的取真值和取假值都要至少计算一次;条件值组合覆盖是指覆盖所有条件取值的所有可能组合。老纳做过一些粗浅的研究,发现与条件直接有关的错误主要是逻辑操作符错误,例如:||写成&&,漏了写!什么的,采用分支覆盖与条件覆盖的组合,基本上可以发现这些错误,另一方面,条件值覆盖与条件值组合覆盖往往需要大量的测试用例,因此,在老纳看来,条件值覆盖和条件值组合覆盖的效费比偏低。老纳认为效费比较高且完整性也足够的测试要求是这样的:完成功能测试,完成语句覆盖、条件覆盖、分支覆盖、路径覆盖。做过单元测试的朋友恐怕会对老纳提出的测试要求给予一个字的评价:晕!或者两个字的评价:狂晕!因为这似乎是不可能的要求,要达到这种测试完整性,其测试成本是不可想象的,不过,出家人不打逛语,老纳之所以提出这种测试要求,是因为利用一些工具,可以在较低的成本下达到这种测试要求,后面将会作进一步介绍。 
 关于白盒测试用例的设计,程序测试领域的书籍一般都有讲述,普通方法是画出程序的逻辑结构图如程序流程图或控制流图,根据逻辑结构图设计测试用例,这些是纯粹的白盒测试,不是老纳想推荐的方式。老纳所推荐的方法是:先完成黑盒测试,然后统计白盒覆盖率,针对未覆盖的逻辑单位设计测试用例覆盖它,例如,先检查是否有语句未覆盖,有的话设计测试用例覆盖它,然后用同样方法完成条件覆盖、分支覆盖和路径覆盖,这样的话,既检验了黑盒测试的完整性,又避免了重复的工作,用较少的时间成本达到非常高的测试完整性。不过,这些工作可不是手工能完成的,必须借助于工具,后面会介绍可以完成这些工作的测试工具。

2.软件测试中如何做单元测试?


  单元测试工具 现在开始介绍单元测试工具,老纳只介绍三种,都是用于c++语言的。 首先是cppunit,这是c++单元测试工具的鼻祖,免费的开源的单元测试框架。由于已有一众高人写了不少关于cppunit的很好的文章,老纳就不现丑了,想了解cppunit的朋友,建议读一下cpluser 所作的《cppunit测试框架入门》,网址是: http://blog.csdn.net/cpluser/archive/2004/09/21/111522.aspx。该文也提供了cppunit的下载地址。 然后介绍c++test,这是parasoft公司的产品。[c++test是一个功能强大的自动化c/c++单元级测试工具,可以自动测试任何c/c++函数、类,自动生成测试用例、测试驱动函数或桩函数,在自动化的环境下极其容易快速的将单元级的测试覆盖率达到100%]。[]内的文字引自 http://www.superst.com.cn/softwares_testing_c_cpptest.htm,这是华唐公司的网页。老纳想写些介绍c++test的文字,但发现无法超越华唐公司的网页上的介绍,所以也就省点事了,想了解c++test的朋友,建议访问该公司的网站。华唐公司代理c++test,想要购买或索取报价、试用版都可以找他们。老纳帮华唐公司做广告,不知道会不会得点什么好处? 最后介绍visual unit,简称vu,这是国产的单元测试工具,据说申请了多项专利,拥有一批创新的技术,不过老纳只关心是不是有用和好用。[自动生成测试代码 快速建立功能测试用例 程序行为一目了然 极高的测试完整性 高效完成白盒覆盖 快速排错 高效调试 详尽的测试报告]。[]内的文字是vu开发商的网页上摘录的,网址是: http://www.unitware.cn。前面所述测试要求:完成功能测试,完成语句覆盖、条件覆盖、分支覆盖、路径覆盖,用vu可以轻松实现,还有一点值得一提:使用vu还能提高编码的效率,总体来说,在完成单元测试的同时,编码调试的时间还能大幅度缩短。算了,不想再讲了,老纳显摆理论、介绍经验还是有兴趣的,因为可以满足老纳好为人师的虚荣心,但介绍工具就觉得索然无味了,毕竟工具好不好用,合不合用,要试过才知道,还是自己去开发商的网站看吧,可以下载演示版,还有演示课件。

3.怎样写第一单元测试给我的感悟


  第一单元测验给我的感悟
 
 第一单元测验如期在我们班进行,测验的结果也在第二天出来了。可是,结果不如理想,而且边改边发现学生对做题的方法和技巧不熟练,此外,摸、读、写基本功不够扎实。
 对于这个结果,我反复地思考,想了好久,问题究竟出在哪里呢?学生对做题的方法和技巧不熟练,自然想到书本上的练习量很少,光靠书上的练习是不够的了。测验中有很多题型是学生没有接触过的,就更不必说做题的方法和技巧了,所以,对学生增加一些同步的练习,加大练习量,让学生熟悉题型,明了这题究竟问你什么,该怎么回答是很必要的。
此外,尽管加强学生摸、读、写的能力,一直是我追求的一个重要目标。可是,为什么在测验中表现出来的却不如我愿呢?
我想,首先,课堂上的练习比较少,老师对学生书写的指导也自然少。在教学中,教学对象是一年级学生,他们的盲文摸读写是没有任何基础的,低年级与高年级是不同的教学对象,要求他们掌握的侧重点不同,在备课时自己必须摆正心态。
其次,对已学内容的复习和巩固不够。由于课时比较紧张,上完一课时就急忙进入到下一课时的新内容去,往往缺乏了对以往知识的巩固与加深,特别是书写的练习不够。其实听写词语对于大部分学生来说是非常容易的,他们都能较快速地完成,只是写完后检查这一好习惯要是一旦没有养成,学生尽管速度快,可准确率就是不高。至于句子,学生较难掌握的是分词连写、标点符号,还有写完后的检查并修改。如果没有这一次测验,自己还一相情愿地认为学生会写词语或句子了,应该就不用经常花时间听写了。幸好有了这次惨痛的经历,让我及时地明白到:其实听写或默写对于学生来说,不但是对已学知识的巩固与加深,另外,写完后检查与修改这种好习惯对于学生来说也是至关重要的。
再次,虽然学生的摸、读已经有了很大的进步和提高,但是我认为班内学生摸、读能力的差异性还是比较大,其中有三名学生明显落后,单靠自己摸、读做题是很难的,如何提高中下生的摸读水平呢?这又是值得我好好思索的。

4.小学数学单元测试教案如何写


  “找规律”是冀教版小学数学一年级下册的内容,主要对学生进行数学思维方法的教学。本节课是“找规律”这一单元的第一节课,为了使学生感受生活应用的广泛性,同时使学生受到美的熏陶。本节课采取了独立思考、合作探究、小组交流的学习方式进行教学。其最大特点,我认为就是让学生经历了数学学习的“再创造”过程,具体表现在:一、提供合理材料,让学生在“学”中展开“再创造” 《标准》指出:“学生数学学习的内容应当是现实的、有意义的、富有挑战性的,这些内容要有利于学生主动地进行观察、实验、猜测、验证、推理与交流等数学活动。”组织学生从猜一猜,这是本节课学生参与数学学习活动“找规律”的开始。然后,教师在对学生充分了解和信任的基础上,进行了独具匠心的设计,使“圆片、三角形”等又成了学生“再创造”的素材。二、鼓励自主探索,让学生在“做”中“再创造” “儿童的智慧在手指尖上”。教学中,教师十分关注学生的直接经验,极力将数学教学设计成看得见,摸得着的物质化实践活动,让学生如同“在游泳池中学会游泳一样,在做数学中学习数学”。课堂中,教师给10个(4个三角形和6个圆)让学生在不增减个数的条件下重新排列出那么多的方法,多么富有个性化的创造!使学生们惊喜地发现,自己也是一个“研究者、发现者、探索者”!三、提倡实践应用,让学生在“用”中实现“再创造” 把数学经验生活化,运用数学知识解决生活问题是数学学习的出发点和归宿。教学中,在学生探索出各种规律后,接着举例生活中有规律的事物,欣赏有规律的图片,都是从学生的生活经验出发,遵循从生活中来又回到生活中去的规律,使学生在研究现实现象的过程中学习数学、理解数学和发展数学,领悟到了数学的无穷魅力。本节课,我和同学们融为一体,顺利地完成了教学任务。但是,也存在一些不足,由于内容安排较多,所以有些环节仓促而过,并且减少了学生的回答次数。 总之,在整个教学活动中,愉快时刻荡漾在课堂上,创新、自主探究、师生互动、生生互动成为课堂的主旋律。今后,我要继续学习新课程、新理念提高教学水平。

5.单元测试到底是什么?应该怎么做?


  单元测试一般是有开发人员或测试人员来做。谁来做并没有一个绝对的标准,要根据公司的实际情况来决定。
  单元测试的实现方式包括:人工静态检查、动态执行跟踪。
  人工静态检查:就是通常所说的“代码走读”,主要是保证代码逻辑的正确性。
  动态执行跟踪:就是把程序代码运行起来,检查实际的运行结果和预期结果是否一致。
  开发人员做单元测试:
  优点:开发人员对代码最熟悉,而且开发人员编程技能相对比较强,所以开发人员自己写单元测试效率上和覆盖率上都比较高。
  缺点:开发人员平时写业务代码就要花费很多时间,有时候确实没有时间写单元测试;而且大部分开发人员没有太好的测试思想,单元测试可能只是写个最简单的用例就完了;自己写的代码自己测,往往都是不靠谱。
  测试人员做单元测试:
  优点:测试人员有比较系统的测试思想,可以更好地保证用例的覆盖。而且通过写单测测试能更好地了解具体代码结构、流程,对于后续的业务测试也非常有利。
  缺点:测试人员的编程技能相对比较弱,如果不同编程是无法开展单元测试的。并且测试人员对代码没有开发人员熟悉,效率会比较低。

6.java程序员如何编写更好的单元测试


  一般来说,Java程序员要编写更好的单元测试,可以从以下7个方面改善:
1、首先需要全面了解软件开发测试的类型。单元测试用于测试各个代码组件,并确保代码按照预期的方式工作。
2、使用框架来用于单元测试。Java提供了若干用于单元测试的框架。TestNG和JUnit是最流行的测试框架
3、谨慎使用测试驱动开发。测试驱动开发(TDD)是一个软件开发过程,在这过程中,在开始任何编码之前,我们基于需求来编写测试。由于还没有编码,测试最初会失败。然后写入最小量的代码以通过测试。然后重构代码,直到被优化。
4、测量代码覆盖率。代码覆盖率衡量(以百分比表示)了在运行单元测试时执行的代码量。通常,高覆盖率的代码包含未检测到的错误的几率要低,因为其更多的源代码在测试过程中被执行。
5、尽可能将测试数据外部化。在JUnit4之前,测试用例要运行的数据必须硬编码到测试用例中。这导致了限制,为了使用不同的数据运行测试,测试用例代码必须修改。
6、善用JUnit。与TestNG类似,测试数据也可以外部化用于JUnit。
7、使用断言而不是Print语句。许多新手开发人员习惯于在每行代码之后编写System.out.println语句来验证代码是否正确执行。这种做法常常扩展到单元测试,从而导致测试代码变得杂乱。除了混乱,这需要开发人员手动干预去验证控制台上打印的输出,以检查测试是否成功运行。更好的方法是使用自动指示测试结果的断言。

以上就是关于「如何写好单元测试」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

文♀章来②自Win10系统之家,未经允许不得转载!

相关文章

  • 如何写好单元测试

    如何写好单元测试

    1.软件工程单元测试应该怎么写??单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试不仅仅是作为无错编码一种辅助手段在...
  • 如何写好英文字母

    如何写好英文字母

    1.二十六个英文字母正确写法占格写法A:字母大写时占上、中两格,倾斜10度左右,小写字母a在中格。B:字母大写时占上、中两格,小写字母b占上、中两格。C:字母大写时占上、中两格,且倾斜10度左右,小写字母c在中格。D:字母大写时...
  • 如何写好毕业论文

    如何写好毕业论文

    1.怎样才能快速的写好毕业论文?毕业论文的写作格式、流程与写作技巧广义来说,凡属论述科学技术内容的作品,都称作科学著述,如原始论著(论文)、简报、综合报告、进展报告、文献综述、述评、专著、汇编、教科书和科普读物等。但...
  • 教师如何写好教案

    教师如何写好教案

    1.教案应该怎么写才好有什么窍门不少青年教师考编或者参加职称评聘,总是对教学设计该写些什么才能获取高分产生疑惑,因此,选择本文,以供参考。一、教学设计的基本要素“模式”是对理论的一种简洁的再现。不论哪一种教学设...