不变量指导下的测试用例自动化生成技术分析-analysis of automatic test case generation technology under the guidance of invariants.docxVIP

  • 7
  • 0
  • 约4.32万字
  • 约 59页
  • 2018-06-28 发布于上海
  • 举报

不变量指导下的测试用例自动化生成技术分析-analysis of automatic test case generation technology under the guidance of invariants.docx

不变量指导下的测试用例自动化生成技术分析-analysis of automatic test case generation technology under the guidance of invariants

第1章绪论1.1研究意义1.1.1软件测试技术的研究意义随着互联网时代的到来,计算机在人类的生活中扮演着越来越多的角色,软件的使用也越来越普及。除了在大型计算机和普通PC机中出现外,软件还出现在各种各样的电器之中,如手机、电视等等,改善着民众的生活。基础设施、国防建设、医疗设备以及其他尖端科技产品中,软件产品的出现更是屡见不鲜。在将来的物联网时代,软件产品的种类必将更加丰富,使用更加普及。随着软件产品的丰富,使用的频繁,人类对软件质量的要求必然越来越高。软件的质量问题影响人们对软件产品的正常使用,造成人类生活的不便,这种情况必将随着人类对于软件产品的依赖程度的增加益发显著。例如,火箭发射,如果其中的软件产品功能有缺陷,后果非常严重。我们把这种软件开发或者维护过程中出现的问题称为软件故障、软件缺陷、软件错误、BUG等等,统称为软件错误。软件测试是避免软件错误、保障软件质量的重要手段。软件产品的规模日益增大,软件产品的应用领域越来越广,人类生活对软件的依赖正在逐步增强,因此,人们对软件产品的质量需求也越来越高。在这个前提下,软件测试技术的研究也就越发重要。综上可知,软件测试技术有重要的实用价值和广阔的应用前景;软件测试技术的进步会减少测试开销、提高测试效率、缩短软件开发周期、节约开发成本和保障软件质量;会推动软件工程技术的发展,有效地避免因软件质量问题造成的重大经济损失甚至人员伤亡。1.1.2软件测试自动化的研究意义一次完全充分的测试过程是一次对软件所有可能的输入进行遍历的过程。虽然理论上完全充分的测试是可行的,但是由于软件测试本身具有很高的复杂性,实际的测试过程不是“完全充分”的。软件测试的复杂性主要表现在以下几点:1)软件可能的输入空间太大,基本上不可能对这个空间进行完整的遍历。2)软件的实现方式多种多样,没有一个统一的规格去限制软件实现的方式,就无法研究通用的完整测试方法。3)软件的需求规格说明没有统一客观的标准,无法根据规格说明进行统一方法的测试。因此,软件测试实际上是一个“有限充分”的测试过程。“有限充分”指将无穷大的测试空间减小到一个适当有限的范围,使得测试工作量适中,既能达到测试目的,又不会花费不可承受的测试成本。“有限充分”的程度要视具体情况而定,会受到诸如软件本身的复杂程度、软件对于正确性的苛求程度、软件的开发周期长短等等因素的影响。并且,软件测试有回报递减的特性,就是指测试得越多,进一步测试所能得到的充分性增长程度就越少。如图1.1所示:手动测试充分性自动化测试充分性测试费用测试工作量/测试时间图1.1软件测试充分度示意图随着测试时间的增加,无论是手动的,还是自动化的测试方法,测试的充分度都是在逐渐增加的,但是随着测试时间的增加,曲线的斜率是逐渐减小的,也就是说,测试的越多,相等的时长内,测试充分度的增加是逐渐减小的,即回报率递减。软件的开发成本和软件的开发周期紧密相关。在保障开发质量的前提下,开发周期越短,软件成本越低,收益也往往越高,而测试费用是和开发总费用成正比的。上图中用一条曲线表示了测试费用与测试耗时之间的关系,测试耗时越长,测试费用越高,且因为测试回报率是递减的,测试时间越长,单位测试耗时所需的测试费用也越高。因此,如前所述,软件测试是“有限充分”的,它是测试充分度与测试成本相互权衡的结果。上图1.1中用了一条等高的实线表示权衡的值。可以看出,在相同的充分度要求下,自动化测试所需的测试时间(测试工作量)要低于手动测试,所需的测试费用要远小于手动测试。软件自动化技术的研究能够有效地节约软件开发周期和成本,具有很好的应用前景。1.1.3测试用例生成的研究意义软件测试执行一次的过程实际上就是一个测试用例作为输入提供给软件(可能是某个单元、模块或者这个软件)进行一次执行的过程。可见测试用例在软件测试过程中是具有重要地位的。一个最优的测试用例集合能够以最小的规模(集合的势),来揭示软件的各种属性,发现软件的各种缺陷、错误等等。这样的用例集合能够减小软件测试的执行规模(尤其对于需要多次回归测试的模块)、降低测试时间开销、加快测试进度、缩短软件开发周期。因此,测试用例生成是软件测试的核心问题之一,软件测试的好坏很大程度上取决于测试用例集合的质量。此外,软件开发周期是有限且“短促”的,在有限的时间里,设计好的测试用例集合,发掘软件中的错误和缺陷,揭示程序属性,完成有效的测试——这是软件测试技术研究领域中的一个重要目标。1.2测试用例生成技术面临的问题高效的测试用例集合通常是通过人工设计得到的,然而,人工测试用例设计耗时过长,效率低下。随着测试技术的发展,测试用例的自动化生成技术已经成为测试用例生成领域的研究热点。但是目前的自动化测试用例生成方法存在显著的问题:(1)针对具体问题的自动化方法,效率较高,但是只能解决专

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档