软件单元测试及测试用例设计方法研究
2020-08-23李艳艳刘琴
李艳艳 刘琴
摘要:随着信息技术的飞速发展,现代软件的规模越来越大,复杂程度也越来越高,软件产品的质量成为人们共同关注的焦点。软件测试是保证质量的重要手段,单元测试是软件测试过程中最基本的测试,主要发现编码和详细设计中产生的错误。结合当前软件单元测试技术的研究现状,本文首先对软件测试的内涵进行了分析,其次对单元测试的详细过程进行了分析,最后对单元测试用例的5种方法进行了说明。
关键词:软件测试;单元测试;测试用例;用例设计方法
中图分类号:TP311.53 文献标识码:A 文章编号:1672-9129(2020)04-0029-01
Abstract:With the rapid development of information technology, the scale of modern software is becoming larger and larger, the complexity is also becoming higher and higher, the quality of software products has become the focus of common concern. Software testing is an important means to ensure the quality, and unit testing is the most basic test in the process of software testing, mainly discovering errors in coding and detailed design. Combined with the current research status of software unit test technology, this paper first analyzes the connotation of software testing, then analyzes the detailed process of unit test, and finally explains the five methods of unit test cases.
Key words:software test;Unit testing;Test cases;Use case design approach
單元测试是整个软件测试过程中最基本的测试,软件单元是指详细设计说明中的最小成员,因此软件单元的质量是整个软件质量的基础。单元测试是测试过程中直接与源程序相关的测试,它对其它软件测试活动的进行有着重要的影响。软件单元测试一般在软件的开发阶段开展,目的是检验每个软件单元能否正确的实现设计说明中详细设计部分的功能、性能和其他设计约束等要求,发现单元内可能存在的各种错误。
1 软件测试
软件测试主要指的是通过对相关测试工具的使用,按照一定的测试程序和过程对软件系统的功能和性能等进行测试、分析、评估可能出现的问题,发现开发错误并进行跟踪,最主要就是对用户的需求进行全面的满足。具体地说,软件测试是依据软件研发各个阶段的规格说明和源代码的内部结构而专门设计一批测试用例,然后去执行这些测试用例,用以发现软件缺陷的过程,软件测试是提高软件质量的重要手段。软件测试的阶段一般包括:单元测试、部件测试、配置项测试和系统测试,本文着重对单元测试进行探讨。
2 单元测试
所谓单元测试又被称之为模块测试,是以软件设计说明的最小单元作为测试对象-程序模块来验证其正确性的测试。单元测试主要验证函数单元是否正确的实现了软件详细设计说明中的功能、性能、以及其它设计约束等要求,发现程序设计与实现过程中可能存在的缺陷。单元测试根据要求一般需开展:静态分析、文档审查、代码审查以及动态测试。
文档审查是对照文档审查单,审查文档的完整性、一致性和准确性。静态分析是指使用测试工具通过分析被测源代码的数据流和控制流等方面,检查源代码是否符合代码编码规范或者是否存在软件缺陷。代码审查指依据代码审查单,对被测软件进行人工审查,重点关注不能通过测试工具自动发现的各种典型问题,如算法设计的问题、代码实现过程与设计文档不符的问题等。动态测试需要设计测试用例并执行这些用例,目的是发现程序运行过程中的一些问题。动态测试一般需要开展功能测试、逻辑测试和性能测试。
功能测试主要验证软件是否实现了软件设计说明中的功能要求,功能测试不仅需要测试正常的功能,更要考虑功能的异常。特别注意不能忽略功能之间交叉影响,应考虑从功能设计实现角度,考虑功能的组合的测试。
逻辑测试,又称覆盖测试,是指测试软件内部逻辑结构的合理性、实现的正确性,是一种白盒测试技术。逻辑测试应该首先在测试大纲或计划中明确覆盖率的目标,对于未覆盖的模块,应该分析原因,必要时,可以采用代码审查辅助提高覆盖率。逻辑测试一般包括:语句覆盖、判定覆盖、条件覆盖、MC/DC覆盖及路径覆盖。
性能测试是针对软件设计说明或者需求规格说明中的性能需求逐项进行的测试。性能测试一般需进行:测试程序完成功能的时间、程序运行占用的空间和计算精度。
3 单元测试用例设计方法
测试用例是为指为了某个目标而设计的一系列测试输入、运行条件及预期结果,以便验证某个程序的路径能否满足某个特定的要求。常见的软件测试用例设计方法有:等价类划分、判定表、边界值分析、错误推测法和正交实验法等。
3.1等价类划分。这种方法是指对软件详细设计说明中的函数模块开展分析,把函数的输入域划分为若干个子集,再从每个子集中选择具有代表性的数据形成单元测试用例。等价类可以分为有效等价类和无效等价类。有效等价类是由有意义的数据组成的集合,无效等价类是指由不合理的数据所组成的集合。
3.2判定表。又称为策略表,基于判定表的测试,是软件功能测试中最严格的一种测试方法。该方法适用于判断逻辑复杂的情况,通过穷举所有条件而获得结果,对测试结果再优化合并,就会生成一个判断清楚的判定表。
3.3边界值分析。长期的软件测试工作经验启示我们,大部分得软件缺陷发生在输出或输入数据的边界上,因此有必要对各种边界设计软件测试用例,发现更多的软件缺陷。使用小于、等于或者大于边界数值得数据√代码金星软件测试的方法,就是所谓的边界值分析方法。
3.4错误推测法。所谓错误推测法,指在开展测试前,测试人员根据以往的工作经验,推测程序中可能存在的一些问题,然后有针对性的去设计并执行测试用例,发现这些错误的过程。这种方法没有比较固定的形式,根据的是个人的直觉和经验。
3.5正交实验法。这种方法指的是从大量的测试点中挑选出比较具有代表性的点,然后依据正交表,开展实验的一种用例设计方法。
使用正交实验法设计软件测试用例的时候,第一步根据被测代码的设计说明找出可能影响功能实现的对象,把它们作为因素,而把这些因素的取值作为状态,生成一个二元因素分析表。第二步进行正交表的状态组合,生成测试用例的输入集合,最终得到因果图。
结语:单元测试及其测试用例设计方法有多种,它们的最终目标是通过对程序进行分析和检查,设计出有效的测试用例,测试出程序中存在的各种错误,提高软件的质量。单元测试所做的工作比较繁琐,程序的质量和单元之间依赖关系都会影响软件测试人员对源代码的理解,从而影响软件单元测试的测试效率,单元测试改包括对源代码设计一系列测试用例进而满足一定的覆盖率标准,这项任务工作量非常大,自动化的检测会提升单元测试的效率。
参考文献:
[1]刘伟,叶祥明.软件单元测试用例设计探讨[J].机械管理开发,2019(02):106-109.
[2]任俊.软件单元测试及测试用例设计[J].科技与企业,2019(04):293-295.
[3]刘斌.软件验证与确认[J].国防工业出版社,2011(04):31-33.