软件测试2019:第二次作业
1.单元测试含义:
单元测试(unittesting),是在计算机编程中,针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。通常来说,程序员每修改一次程序就会进行最少一次单元测试,在编写程序的过程中前后很可能要进行多次单元测试,以证实程序达到软件规格书要求的工作目标,没有程序错误。
2.单元测试验证内容:
(1)数据或信息能否真确的流入或流出单元。
(2)在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相 关系不发生错误,也包括全局变量在单元中的处理和影响。
( 3)在数据处理的边界处能否正确工作。
(4)单元的运行能否做到满足特定的逻辑覆盖
(5)单元中发生了错误,其中的出错处理措施是否有效。
(6)指针是否被错误引用、资源是否及时被释放。
(7)有没有安全隐患?是否使用了不恰当的字符串处理函数等。
3.单元测试活动:
(1)建立单元测试活动环境,包括集成开发环境(Integrated Development Environment,IDE)中安装和设置单元测试工具(插件)。
(2)测试脚本(测试代码)的开发和调试:
(3)测试执行及其结果分析。
4.单元测试关注内容;
(2)依据:详细设计描述。
(3)过程:经过设计、脚本开发、执行、调试和分析结果等环节。
(4)执行者:由程序开发人员和测试人员共同完成。
(5)采用哪些测试方法:包括代码控制流和数据流分析方法,并结合参数输入域的测试方法
(6)测试脚本的管理:可以按照产品代码管理的方法进行类似的配置管理(并入代码库),包括代码评审、版本分支、变更控制等。
(7)如何进行评估:通过代码覆盖率分析工具来分析测试的代码覆盖率、分支或条件的覆盖率
5.单元测试的目标和任务
软件系统是由许多单元构成的,这些单元可能是一个对象或是一个类,也可能是一个函数,也可能是一个更大的单元——组件或模块。
要保证软件系统的质量,首先就要保证构成系统的单元的质量,也就是要开展单元测试活动。通过充分的单元测试,发现并修正单元中的问题,为系统的质量打下基础。
6.Junit:简介
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。JUnit有它自己的JUnit扩展生态圈。
多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
7.Junit优点:
1.对于极限编程而言:
要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,这个工作量就会大大增加。因此在极限编程中,基本过程是这样的:构思-> 编写测试代码-> 编写代码-> 测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。
2.对于重构而言:
其好处和极限编程中是类似的,因为重构也是要求改一点测一点,减少回归错误造成的时间消耗。
3.其他情况:
我们在开发的时候使用junit写一些适当的测试也是有必要的,因为一般我们也是需要编写测试的代码的,可能原来不是使用的junit,如果使用junit,而且针对接口(方法)编写测试代码会减少以后的维护工作,例如以后对方法内部的修改(这个就是相当于重构的工作了)。另外就是因为junit有断言功能,如果测试结果不通过会告诉我们哪个测试不通过,为什么,而如果是像以前的一般做法是写一些测试代码看其输出结果,然后再由自己来判断结果使用正确,使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。
8.JUnit4
(1)不同于JUnit使用命名约定和反射机制来定位测试,在JUnit4中,测试是由@Test注释来识别的。
(2)在JUnit4中,运行每个测试前不再需要使用setUp(),而是用@Before注释来指示。
(3)JUnit3.x测试之后调用tearDown()方法,在JUnit4中使用@After注释来指示。
(4)Junit4中不再需要在超类中显示调用初始化和清除方法,只要它们不被覆盖即可,测试运行程序将根据需要自动调用这些方法。
(5)JUnit4引入了新的特性:类范围的setUp()和tearDown()方法。用@BeforeClass注释的方法都将在该类中的测试方法运行前刚好运行一次,而用@AfterClass注释的方法都将在该类中的所有测试运行后刚好运行一次。