论文部分内容阅读
【摘 要】软件测试技术是软件开发与运用过程中必不可少的手段,其重要性不可替代。论文从软件测试的发展历程、分析模型和测试技术等方面着手,分析其中的技术原理和作用机制,为软件测试研究提供参考性建议。
【关键词】软件测试 历程 模型 黑盒 白盒
一、引言
信息技术的发展对各行各业都带来了巨大的影响,推动了产业的进步,软件作为其中重要的构成部分,起着至关重要的作用,软件的创新与更新速度逐步加快,无论是类型还是规模都是空前的,因而要保证软件的实用性与稳定性等指标,软件测试技术能够有效减少软件故障,弥补缺陷,使软件不断得到完善。软件的安全与可靠性被当作软件的命脉,其质量受到广泛的重视,随着软件测试技术的成熟,自动化与半自动化的测试对于软件测试方法、故障模型等内容形成了系统性的研究应用,推动软件产业取得了长足的进步,软件测试已经成为了一门系统化的产业链,对软件技术的贡献有目共睹,而该行业的从业人员逐渐增加,研究得到进一步拓展。笔者结合近年的工作经验,将从软件的发展背景、故障模型和测试技术等方面进行探讨。
二、软件测试技术的介绍
(一)软件测试的发展
信息化进程推动了软件技术的快速发展,但同样软件系统中的设计缺陷也会造成许多故障,并且可能性比较高,远远超过了硬件技术所引发的故障,鉴于软件技术开发当中其质量要求,研究人员提出了软件测试技术,来减少软件运行中的故障缺陷,提高软件的稳定性与可靠性。早期的软件测试技术的内容仅仅是局限在程序调试方面,但到了上世纪70年代,软件测试被引入了软件设计的生命周期中来,成为软件技术当中不可或缺的一部分,影响软件的实际应用。并随着测试技术逐渐成熟,软件测试已成为一门系统性的学科,形成了注入面向对象测试、模型过程测试、面向目标测试等多种分支,并且新的方法一直在探索当中,学科内的知识更新也非常迅速,推动者软件测试技术的向前发展。
(二)软件缺陷的危害
软件设计当中细小的失误都有可能造成灾难性的危害,由于软件技术已经融入了几乎所有的行业,特别是对社会影响重大的领域中,如医疗、军事、航空等关键领域中,软件的故障很容易导致操作失败,如医疗当中仪器的误操作对患者的生命健康产生危害,航天探测器语言成语的错漏导致发射失败、导弹试射错误程序导致飞行轨迹发生偏离等情况在以往都出现过,而且造成的损失是非常巨大的。而这些失误往往只是源于微小的细节方面的缺陷,因而,提前对软件进行测试,在运行当中今早发现错误,并针对性的修改,甚至有时必须推倒重来,对于保证软件运行的安全可靠都是十分有必要的,也符合软件发展的实际需要,更好的服务于人类的社会生活,推进社会的良好发展。
三、软件故障
(一)软件故障的分类
软件故障的是不以人的意志为转移的,但通过对其存在形式进行分类,提出针对性的测试改良方法能起到立竿见影的效果。软件的分类有多种形式,如故障的性质分类、软件开发过程错误、故障形成的原因等。软件开发的过程错误主要包含需求分析错误、设计错误、编码错误和测试错误等内容;故障性质主要包含功能性的分析和开发错误、数据错误、结构错误、系统结构错误、程序编译错误等内容;故障原因主要包含程序语法、语义错误、文档错误、函数错误和测试错误等内容。此外,还有根据软件规模与质量的重要性,以经济效益为评估方式的错误程度的分类方式,即将错误造成的损失分为具体的等级。软件错误的分类具体要看实际应用的需要,侧重其中心需求,对测试过程中的软件完善有很强的指导性作用。
(二)软件的故障模型
软件的故障模型是软件测试的基本形式,在模型当中,其与实际应用中的故障有很大的相似度,可以对故障很好的模拟作用。虽然由于故障的复杂与多样性,难以取得一种统一的故障模型,但实际应用中的针对性的故障模型有多种,并且取得了良好的效果。目前的故障模型主要有单故障模型、系统崩溃的故障模型、覆盖测试故障模型等几种,其中覆盖故障模型的应用非常广泛,包括分支覆盖、路径覆盖、语句覆盖、应用覆盖等形式,由于其复杂程度低、可操作性强,成为了基本的软件测试方法。除此之外,故障模型的相互结合的测试方式能够弥补各种测试的不足,其相互之间的融合与改进也是一种新的探索方向。
四、软件测试技术
(一)白盒测试技术
白盒测试技术主要包含以下内容:
1.程序路径分析
一个程序中的路径数量的规模非常庞大,依靠路径覆盖来达到完全性测量,但实际操作性的可能非常渺茫,而且实践表明其效果也不理想。
2.分域测试
分域测试是将程序中的空间进行划分,将整体分成若干个测试单位,其中要注意在单位划分时保证边界不会出错误。或尽量减少错误的发生,重要的措施往往通过测试点的选取。
3.程序插装和覆盖测试
软件程序中有许多内容可以划分,如分支、路径、语句和数据等形式的划分,白盒测试可以针对这些内容进行覆盖。软件中的编程主要有代码和数据的集成,软件成型之后,会有相应的功能。操作者输入指令或数据时,软件会有对应的相应,而输入的数据所涵盖的范围可以称作输入域,通过程序插装,当输入大量的信息之后,对响应进行收集,信息收集的过程即是对软件测试运行的监控。
4.结构测试数据生成
软件的结构测试包含多方面的内容,主要有面向路径、面向目标和随即测试几种方法,在测试当中利用生成的数据,进行分析,发现软件运行中可能出现的缺陷和不足。
(二)黑盒测试技术
软件形成之后,根据其内部的定义会有映射关系,即包含了输入与输出之间的函数关系,但如果要分析软件内部具体的结构,既耗费时间,也有操作的困难,对分析人员的专业水平要求很高,而黑盒测试技术针对这一情况,在测试中避免了对内部结构的详细分析,而是直接反映输入与输出之间的关系来评估软件的可靠性与稳定性,并可以验证数据的正确性,黑盒测试技术主要包含以下几方面的内容: 1.组合测试
组合测试的实际应用非常广泛,其优点是利用很少的测试用例但能够取得良好的效果,极大的减少了测试耗费的时间与精力,准确性也能得到保证。所谓组合测试,即是利用两两联合的覆盖表的生成算法,实现对数据参数的缺陷发掘,其理论是以软件故障的实际分布为根据的,据统计,软件故障中由两个参数引起的占总数的绝大部分,达到了70%左右,单个参数和三个或三个参数以上引起的故障都明显低于前者,因此,组合测试技术有非常现实的实用价值。
2.形式规格说明的测试
软件测试当中,要保证识别的精确性,避免语言、语义出现歧义性的认识,可以对软件形式提供规范的语言符号,并且具有业内公认的性质,这样易于机器对软件的程序或内容进行统一的处理,减少误判或模糊的现象,通过软件工具的应用,提高机器的识别能力,进而达到对形式规格的各种推理或证明,分析软件中各种可能的故障缺陷。
3.统计测试
软件测试当中,不同的测试方法或输入域所产生的结果会有很大的差异性,尤其是当软件的复杂性高、功能齐全、规模大的时候,测试往往难以覆盖到所有的运行可能,各种情况都有可能出现,其出现的概率也有差异,所以,利用统计方法,对运行结果进行记录分析,以便在测试当中更能直观的通过数据的分布来判断其稳定性与可靠性。
五、结束语
软件技术是当今社会发展的重要推动力量,融入到了各行各业,其所引起的效应也是不可估量的。但软件的好坏,运行的可靠性、稳定性与安全性等指标影响其效能的发挥,软件测试技术是针对软件形成过程中的故障研判、分析改进的重要手段,在软件研发过程中扮演着至关重要的角色,我国在推动信息化、科技化的发展当中,对软件技术的依赖愈发明显,深入研究软件测试技术,探索新的内容,对我国的产业结构的升级具有非常深远的意义。
参考文献:
[1]齐治昌,谭庆平,宁洪.软件工程[M].北京:高等教育出版社,2001.
[2]Weyuker EJ.Axiomatizing software test data adequacy.IEEETrans.on Software Engineering, 1986,12(12):1128-1138
[3]赵亮,王建民,软件测试准则的有效性度量研究[J].计算机研究与发展,2006,43(8):1457-1463
[4]虞翊,吴芳美.黑箱条件下的软件测试充分性与揭错能力分析[J].计算机工程,2001,27(6):74-76
[5]满靖,闫健卓,王普,异构数据库信息整合系统的测试技术研究[J]. 微计算机信息. 2006(06)
【关键词】软件测试 历程 模型 黑盒 白盒
一、引言
信息技术的发展对各行各业都带来了巨大的影响,推动了产业的进步,软件作为其中重要的构成部分,起着至关重要的作用,软件的创新与更新速度逐步加快,无论是类型还是规模都是空前的,因而要保证软件的实用性与稳定性等指标,软件测试技术能够有效减少软件故障,弥补缺陷,使软件不断得到完善。软件的安全与可靠性被当作软件的命脉,其质量受到广泛的重视,随着软件测试技术的成熟,自动化与半自动化的测试对于软件测试方法、故障模型等内容形成了系统性的研究应用,推动软件产业取得了长足的进步,软件测试已经成为了一门系统化的产业链,对软件技术的贡献有目共睹,而该行业的从业人员逐渐增加,研究得到进一步拓展。笔者结合近年的工作经验,将从软件的发展背景、故障模型和测试技术等方面进行探讨。
二、软件测试技术的介绍
(一)软件测试的发展
信息化进程推动了软件技术的快速发展,但同样软件系统中的设计缺陷也会造成许多故障,并且可能性比较高,远远超过了硬件技术所引发的故障,鉴于软件技术开发当中其质量要求,研究人员提出了软件测试技术,来减少软件运行中的故障缺陷,提高软件的稳定性与可靠性。早期的软件测试技术的内容仅仅是局限在程序调试方面,但到了上世纪70年代,软件测试被引入了软件设计的生命周期中来,成为软件技术当中不可或缺的一部分,影响软件的实际应用。并随着测试技术逐渐成熟,软件测试已成为一门系统性的学科,形成了注入面向对象测试、模型过程测试、面向目标测试等多种分支,并且新的方法一直在探索当中,学科内的知识更新也非常迅速,推动者软件测试技术的向前发展。
(二)软件缺陷的危害
软件设计当中细小的失误都有可能造成灾难性的危害,由于软件技术已经融入了几乎所有的行业,特别是对社会影响重大的领域中,如医疗、军事、航空等关键领域中,软件的故障很容易导致操作失败,如医疗当中仪器的误操作对患者的生命健康产生危害,航天探测器语言成语的错漏导致发射失败、导弹试射错误程序导致飞行轨迹发生偏离等情况在以往都出现过,而且造成的损失是非常巨大的。而这些失误往往只是源于微小的细节方面的缺陷,因而,提前对软件进行测试,在运行当中今早发现错误,并针对性的修改,甚至有时必须推倒重来,对于保证软件运行的安全可靠都是十分有必要的,也符合软件发展的实际需要,更好的服务于人类的社会生活,推进社会的良好发展。
三、软件故障
(一)软件故障的分类
软件故障的是不以人的意志为转移的,但通过对其存在形式进行分类,提出针对性的测试改良方法能起到立竿见影的效果。软件的分类有多种形式,如故障的性质分类、软件开发过程错误、故障形成的原因等。软件开发的过程错误主要包含需求分析错误、设计错误、编码错误和测试错误等内容;故障性质主要包含功能性的分析和开发错误、数据错误、结构错误、系统结构错误、程序编译错误等内容;故障原因主要包含程序语法、语义错误、文档错误、函数错误和测试错误等内容。此外,还有根据软件规模与质量的重要性,以经济效益为评估方式的错误程度的分类方式,即将错误造成的损失分为具体的等级。软件错误的分类具体要看实际应用的需要,侧重其中心需求,对测试过程中的软件完善有很强的指导性作用。
(二)软件的故障模型
软件的故障模型是软件测试的基本形式,在模型当中,其与实际应用中的故障有很大的相似度,可以对故障很好的模拟作用。虽然由于故障的复杂与多样性,难以取得一种统一的故障模型,但实际应用中的针对性的故障模型有多种,并且取得了良好的效果。目前的故障模型主要有单故障模型、系统崩溃的故障模型、覆盖测试故障模型等几种,其中覆盖故障模型的应用非常广泛,包括分支覆盖、路径覆盖、语句覆盖、应用覆盖等形式,由于其复杂程度低、可操作性强,成为了基本的软件测试方法。除此之外,故障模型的相互结合的测试方式能够弥补各种测试的不足,其相互之间的融合与改进也是一种新的探索方向。
四、软件测试技术
(一)白盒测试技术
白盒测试技术主要包含以下内容:
1.程序路径分析
一个程序中的路径数量的规模非常庞大,依靠路径覆盖来达到完全性测量,但实际操作性的可能非常渺茫,而且实践表明其效果也不理想。
2.分域测试
分域测试是将程序中的空间进行划分,将整体分成若干个测试单位,其中要注意在单位划分时保证边界不会出错误。或尽量减少错误的发生,重要的措施往往通过测试点的选取。
3.程序插装和覆盖测试
软件程序中有许多内容可以划分,如分支、路径、语句和数据等形式的划分,白盒测试可以针对这些内容进行覆盖。软件中的编程主要有代码和数据的集成,软件成型之后,会有相应的功能。操作者输入指令或数据时,软件会有对应的相应,而输入的数据所涵盖的范围可以称作输入域,通过程序插装,当输入大量的信息之后,对响应进行收集,信息收集的过程即是对软件测试运行的监控。
4.结构测试数据生成
软件的结构测试包含多方面的内容,主要有面向路径、面向目标和随即测试几种方法,在测试当中利用生成的数据,进行分析,发现软件运行中可能出现的缺陷和不足。
(二)黑盒测试技术
软件形成之后,根据其内部的定义会有映射关系,即包含了输入与输出之间的函数关系,但如果要分析软件内部具体的结构,既耗费时间,也有操作的困难,对分析人员的专业水平要求很高,而黑盒测试技术针对这一情况,在测试中避免了对内部结构的详细分析,而是直接反映输入与输出之间的关系来评估软件的可靠性与稳定性,并可以验证数据的正确性,黑盒测试技术主要包含以下几方面的内容: 1.组合测试
组合测试的实际应用非常广泛,其优点是利用很少的测试用例但能够取得良好的效果,极大的减少了测试耗费的时间与精力,准确性也能得到保证。所谓组合测试,即是利用两两联合的覆盖表的生成算法,实现对数据参数的缺陷发掘,其理论是以软件故障的实际分布为根据的,据统计,软件故障中由两个参数引起的占总数的绝大部分,达到了70%左右,单个参数和三个或三个参数以上引起的故障都明显低于前者,因此,组合测试技术有非常现实的实用价值。
2.形式规格说明的测试
软件测试当中,要保证识别的精确性,避免语言、语义出现歧义性的认识,可以对软件形式提供规范的语言符号,并且具有业内公认的性质,这样易于机器对软件的程序或内容进行统一的处理,减少误判或模糊的现象,通过软件工具的应用,提高机器的识别能力,进而达到对形式规格的各种推理或证明,分析软件中各种可能的故障缺陷。
3.统计测试
软件测试当中,不同的测试方法或输入域所产生的结果会有很大的差异性,尤其是当软件的复杂性高、功能齐全、规模大的时候,测试往往难以覆盖到所有的运行可能,各种情况都有可能出现,其出现的概率也有差异,所以,利用统计方法,对运行结果进行记录分析,以便在测试当中更能直观的通过数据的分布来判断其稳定性与可靠性。
五、结束语
软件技术是当今社会发展的重要推动力量,融入到了各行各业,其所引起的效应也是不可估量的。但软件的好坏,运行的可靠性、稳定性与安全性等指标影响其效能的发挥,软件测试技术是针对软件形成过程中的故障研判、分析改进的重要手段,在软件研发过程中扮演着至关重要的角色,我国在推动信息化、科技化的发展当中,对软件技术的依赖愈发明显,深入研究软件测试技术,探索新的内容,对我国的产业结构的升级具有非常深远的意义。
参考文献:
[1]齐治昌,谭庆平,宁洪.软件工程[M].北京:高等教育出版社,2001.
[2]Weyuker EJ.Axiomatizing software test data adequacy.IEEETrans.on Software Engineering, 1986,12(12):1128-1138
[3]赵亮,王建民,软件测试准则的有效性度量研究[J].计算机研究与发展,2006,43(8):1457-1463
[4]虞翊,吴芳美.黑箱条件下的软件测试充分性与揭错能力分析[J].计算机工程,2001,27(6):74-76
[5]满靖,闫健卓,王普,异构数据库信息整合系统的测试技术研究[J]. 微计算机信息. 2006(06)