软件测试技术论文
软件测试技术论文 软件测试技术论文篇一 软件测试技术综述 【关键词】软件测试技术 软件工程 软件质量 众所周知,由于通用计算机或芯片在各种系统中的广泛使用,在工程 中系统实现各种功能都离不开软件来实现应用功能,因而软件重要性越来越显突 出,随着软件工程的发展,目前软件的规模也逐渐越来越大,软件的质量已成为 决定各种工程或武器系统的质量乃至成败的最重要因素之一。因此有必要更加重 视软件的质量问题。而软件测试作为软件工程的一项重要组成部分也越来越受到 重视。1 对软件测试的定义 在这里我们只讨论狭义上的软件测试。软件测试是在软件投入运行前, 对软件需求分析、设计规格说明和编码实现的最终审查。通常对软件测试的定义 有两种描述:
定义1:软件测试是为了发现错误而执行程序的过程。
定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结 构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过 程,即执行测试步骤。
2 软件测试流程和策略 2.1 软件测试流程 软件测试的流程可以细分为四个阶段:单元测试,集成测试,确认测 试(有效性测A试)和系统测试。单元测试针对软件设计的最小单元A程序模块,进 行正确性检验的测试工作。它的目的在于发现各模块内部可能存在的各种差错。
集成测试在单元测试的基础上,将所有模块按照设计要求组装成为系统进行测试。
确认测试(有效性测试)验证软件的功能、性能和其它特性是否与用户的要求一致。
系统测试将测试的软件作为整个计算机系统的一个元素与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计 算机系统进行组装测试和确认测试。
2.2 软件测试的策略和技术 软件测试的策略就是测试将按照什么样的思路和方式进行。如采用什 么技术,什么步骤等。而软件测试技术可以按照以下几种方式来进行分类:
(1)黑盒(功能性)测试和白盒(结构性)测试。
(2)静态测试和动态测试。
(3)传统测试方法和面向对象测试的方法。
(4)特定环境及应用的测试。
2.2.1 黑盒测试和白盒测试 (1)黑盒测试。黑盒测试又称功能性测试、数据驱动测试、基于规格 说明的测试。它 在已知软件所应具有的功能的基础上,检查程序功能能否按需 求规格说明书的规定正常使用,功能是否有遗漏,性能等特性要求是否满足。在 进行黑盒测试时只需参照规格说明检查软件,不要求考察代码,从用户视角来对 软件进行测试。黑盒测试的目的在于检测软件功能是否正确和完整,检测是否有 人机交互和数据访问错误,检测软件行为和性能是否满足需求以及检测软件初始 化和终止过程是否有错误。
黑盒测试要遵循以下的步骤:首先需要先根据规格说明书来生成测试 用例,然后执行测试并分析覆盖标准,最后再根据所得结果来作出结论。
(2)白盒测试。白盒测试又被成为结构性测试、逻辑驱动测试、基于 程序的测试。它的与黑盒测试的区别在于我们在进行白盒测试的时候会将程序的 执行表现与编码意图作比较,并且关心软件内部设计和程序实现,而主要测试依 据是代码和设计文档,这就能够支持严格定义、数学分析和精确度量,从而更加 准确的来评价一个软件。
2.2.2 静态测试和动态测试 (1)静态测试。静态测试广义上包括了人工代码检查,软件度量,程序结构分析(自动审查)和自动编程规则检查这些内容。
(2)动态测试。动态测试包括覆盖测试分析和运行时的错误检测。
2.2.3 路径测试 路径测试是指根据路径设计测试用例的一种技术,经常用于状态转换 测试中。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路 复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用 例要保证在测试中程序的每个可执行语句至少执行一次。
2.2.4数据流测试 前面的测试针对程序的控制流路径,检查程序在各种条件值、各种决 策下是否有错。数据流测试主要测试程序中的数值流(覆盖值传递路径),检测变 量定义与使用的情况。它比较容易发现下列类型的错误:变量被定义,但是从来 没有使用;所使用的变量没有被定义;变量在使用之前被定义两次;其它定义不当 或使用不当的情况。
2.2.5 面向对象软件测试 面向对象技术开发出的程序更需要测试且对其进行测试将更复杂。面 向对象软件与传统的软件存在不同的软件结构,不同的开发方法且每个开发阶段 都有不同以往的要求和结果,针对面向对象软件的新特点,应有一种新的测试模 型 3 结论 软件测试是一项非常重要的工作。有些观点认为测试是极简单的工作, 谁都能进行软件测试,还认为软件测试技术要求不高,比编程容易多了,测试就 是把数据输进程序,看结果对不对,甚至认为测试是就体力活而已。这些观点其 实都是不正确的。软件测试是一项非常需要智慧,耐心,协调以及沟通能力的一 项工作,它包涵的内容不光有深层次的技术性问题,也有管理方面的问题。如何 才能做好软件测试,光有技术上的水平仍然是不够的,还必须要有好的团队合作 和细致的工作能力和态度。
软件测试虽然能够发现软件中的问题,但是它并不能证明软件中已经 不存在其它的问题了,因此要提高软件的质量,光靠软件测试也还是不够的,还需要全面的履行和落实软件的质量控制,这样才能最大限度的减少软件问题所引 起的损失。
软件测试技术论文篇二 软件测试技术进展研究 【摘 要】软件测试技术是软件开发与运用过程中必不可少的手段, 其重要性不可替代。论文从软件测试的发展历程、分析模型和测试技术等方面着 手,分析其中的技术原理和作用机制,为软件测试研究提供参考性建议。
【关键词】软件测试 历程 模型 黑盒 白盒 一、引言 信息技术的发展对各行各业都带来了巨大的影响,推动了产业的进步, 软件作为其中重要的构成部分,起着至关重要的作用,软件的创新与更新速度逐 步加快,无论是类型还是规模都是空前的,因而要保证软件的实用性与稳定性等 指标,软件测试技术能够有效减少软件故障,弥补缺陷,使软件不断得到完善。
软件的安全与可靠性被当作软件的命脉,其质量受到广泛的重视,随着软件测试 技术的成熟,自动化与半自动化的测试对于软件测试方法、故障模型等内容形成 了系统性的研究应用,推动软件产业取得了长足的进步,软件测试已经成为了一 门系统化的产业链,对软件技术的贡献有目共睹,而该行业的从业人员逐渐增加, 研究得到进一步拓展。笔者结合近年的工作经验,将从软件的发展背景、故障模 型和测试技术等方面进行探讨。
二、软件测试技术的介绍 (一)软件测试的发展 信息化进程推动了软件技术的快速发展,但同样软件系统中的设计缺 陷也会造成许多故障,并且可能性比较高,远远超过了硬件技术所引发的故障, 鉴于软件技术开发当中其质量要求,研究人员提出了软件测试技术,来减少软件 运行中的故障缺陷,提高软件的稳定性与可靠性。早期的软件测试技术的内容仅 仅是局限在程序调试方面,但到了上世纪70年代,软件测试被引入了软件设计的 生命周期中来,成为软件技术当中不可或缺的一部分,影响软件的实际应用。并随着测试技术逐渐成熟,软件测试已成为一门系统性的学科,形成了注入面向对 象测试、模型过程测试、面向目标测试等多种分支,并且新的方法一直在探索当 中,学科内的知识更新也非常迅速,推动者软件测试技术的向前发展。
(二)软件缺陷的危害 软件设计当中细小的失误都有可能造成灾难性的危害,由于软件技术 已经融入了几乎所有的行业,特别是对社会影响重大的领域中,如医疗、军事、 航空等关键领域中,软件的故障很容易导致操作失败,如医疗当中仪器的误操作 对患者的生命健康产生危害,航天探测器语言成语的错漏导致发射失败、导弹试 射错误程序导致飞行轨迹发生偏离等情况在以往都出现过,而且造成的损失是非 常巨大的。而这些失误往往只是源于微小的细节方面的缺陷,因而,提前对软件 进行测试,在运行当中今早发现错误,并针对性的修改,甚至有时必须推倒重来, 对于保证软件运行的安全可靠都是十分有必要的,也符合软件发展的实际需要, 更好的服务于人类的社会生活,推进社会的良好发展。
三、软件故障 (一)软件故障的分类 软件故障的是不以人的意志为转移的,但通过对其存在形式进行分类, 提出针对性的测试改良方法能起到立竿见影的效果。软件的分类有多种形式,如 故障的性质分类、软件开发过程错误、故障形成的原因等。软件开发的过程错误 主要包含需求分析错误、设计错误、编码错误和测试错误等内容;故障性质主要 包含功能性的分析和开发错误、数据错误、结构错误、系统结构错误、程序编译 错误等内容;故障原因主要包含程序语法、语义错误、文档错误、函数错误和测 试错误等内容。此外,还有根据软件规模与质量的重要性,以经济效益为评估方 式的错误程度的分类方式,即将错误造成的损失分为具体的等级。软件错误的分 类具体要看实际应用的需要,侧重其中心需求,对测试过程中的软件完善有很强 的指导性作用。
(二)软件的故障模型 软件的故障模型是软件测试的基本形式,在模型当中,其与实际应用 中的故障有很大的相似度,可以对故障很好的模拟作用。虽然由于故障的复杂与 多样性,难以取得一种统一的故障模型,但实际应用中的针对性的故障模型有多种,并且取得了良好的效果。目前的故障模型主要有单故障模型、系统崩溃的故 障模型、覆盖测试故障模型等几种,其中覆盖故障模型的应用非常广泛,包括分 支覆盖、路径覆盖、语句覆盖、应用覆盖等形式,由于其复杂程度低、可操作性 强,成为了基本的软件测试方法。除此之外,故障模型的相互结合的测试方式能 够弥补各种测试的不足,其相互之间的融合与改进也是一种新的探索方向。
四、软件测试技术 (一)白盒测试技术 白盒测试技术主要包含以下内容:
1.程序路径分析 一个程序中的路径数量的规模非常庞大,依靠路径覆盖来达到完全性 测量,但实际操作性的可能非常渺茫,而且实践表明其效果也不理想。
2.分域测试 分域测试是将程序中的空间进行划分,将整体分成若干个测试单位, 其中要注意在单位划分时保证边界不会出错误。或尽量减少错误的发生,重要的 措施往往通过测试点的选取。
3.程序插装和覆盖测试 软件程序中有许多内容可以划分,如分支、路径、语句和数据等形式 的划分,白盒测试可以针对这些内容进行覆盖。软件中的编程主要有代码和数据 的集成,软件成型之后,会有相应的功能。操作者输入指令或数据时,软件会有 对应的相应,而输入的数据所涵盖的范围可以称作输入域,通过程序插装,当输 入大量的信息之后,对响应进行收集,信息收集的过程即是对软件测试运行的监 控。
4.结构测试数据生成 软件的结构测试包含多方面的内容,主要有面向路径、面向目标和随 即测试几种方法,在测试当中利用生成的数据,进行分析,发现软件运行中可能 出现的缺陷和不足。(二)黑盒测试技术 软件形成之后,根据其内部的定义会有映射关系,即包含了输入与输 出之间的函数关系,但如果要分析软件内部具体的结构,既耗费时间,也有操作 的困难,对分析人员的专业水平要求很高,而黑盒测试技术针对这一情况,在测 试中避免了对内部结构的详细分析,而是直接反映输入与输出之间的关系来评估 软件的可靠性与稳定性,并可以验证数据的正确性,黑盒测试技术主要包含以下 几方面的内容:
1.组合测试 组合测试的实际应用非常广泛,其优点是利用很少的测试用例但能够 取得良好的效果,极大的减少了测试耗费的时间与精力,准确性也能得到保证。
所谓组合测试,即是利用两两联合的覆盖表的生成算法,实现对数据参数的缺陷 发掘,其理论是以软件故障的实际分布为根据的,据统计,软件故障中由两个参 数引起的占总数的绝大部分,达到了70%左右,单个参数和三个或三个参数以上 引起的故障都明显低于前者,因此,组合测试技术有非常现实的实用价值。
2.形式规格说明的测试 软件测试当中,要保证识别的精确性,避免语言、语义出现歧义性的 认识,可以对软件形式提供规范的语言符号,并且具有业内公认的性质,这样易 于机器对软件的程序或内容进行统一的处理,减少误判或模糊的现象,通过软件 工具的应用,提高机器的识别能力,进而达到对形式规格的各种推理或证明,分 析软件中各种可能的故障缺陷。
3.统计测试 软件测试当中,不同的测试方法或输入域所产生的结果会有很大的差 异性,尤其是当软件的复杂性高、功能齐全、规模大的时候,测试往往难以覆盖 到所有的运行可能,各种情况都有可能出现,其出现的概率也有差异,所以,利 用统计方法,对运行结果进行记录分析,以便在测试当中更能直观的通过数据的 分布来判断其稳定性与可靠性。
五、结束语 软件技术是当今社会发展的重要推动力量,融入到了各行各业,其所 引起的效应也是不可估量的。但软件的好坏,运行的可靠性、稳定性与安全性等 指标影响其效能的发挥,软件测试技术是针对软件形成过程中的故障研判、分析改进的重要手段,在软件研发过程中扮演着至关重要的角色,我国在推动信息化、 科技化的发展当中,对软件技术的依赖愈发明显,深入研究软件测试技术,探索 新的内容,对我国的产业结构的升级具有非常深远的意义。