计算机软件测试技术及其应用研究

2023-01-19 02:15:37郭学君
科学与信息化 2022年1期
关键词:白盒黑盒测试法

郭学君

北京赛迪软件测评工程技术中心有限公司 北京 100004

引言

现代信息技术的发展给当代人们的生活带来了极大的便利,各种各样的软件改变了人们的生活方式,人们利用软件进行购物、买房、在线学习等活动,而在计算机软件研发的过程中,软件测试是一个不可省略的环节,通过软件测试,可以有效发现计算机软件中的漏洞,并对软件的适用性进行评估,从而保证软件的质量。

1 计算机软件测试的目的及原则

1.1 计算机软件测试的目的

计算机软件测试的主要目的就是为了查找软件程序中的各种漏洞,这些bug能够影响软件的正常运行,从而影响用户的体验效果。要想将这些问题和错误全面的检测出来,就需综合利用多种检测手段来进行发现,并针对问题做出一些优化,改善软件性能和质量[1]。当然,软件检测技术还能对软件的后续性能优化提供了一定的借鉴价值,比如软件的运行速度、运行稳定性等,均可以通过软件测试来进行修正。此外,软件测试还有一个重大的功能,就是可以检测系统是否携带病毒,如果系统软件受到病毒入侵,而没有及时发现的话,很可能对整个系统造成不可逆转的损害。因此,测试人员要对软件的安全性进行测试,查看软件对病毒的抵御能力,防止病毒攻击,保证软件的正常及安全运行。

1.2 计算机软件测试的原则

1.2.1 实用原则。计算机软件在研发之时,要先进行市场需求调查和分析,保证软件的性能和结构符合市场需求,然而研发人员在编写软件时,会由于受到主观因素的影响,导致最终成型的软件存在一些需求误差,因此,为了保证计算机软件的实用性,必须对软件的结构与性能进行测试,也就是说,计算机软件要保证在已有的测试方法中进行适应性分析,对软件自身的特质和性能与现有技术之间进行兼容性考量,从而在软件开发过程中,有针对性的降低各种影响测试过程的因素影响[2]。这从一定程度上,呈现出了软件测试必须遵循实用性原则,即需要采取一些特定的策略来简化测试流程,以便测试人员在较短的时间内完成测试工作。

1.2.2 科学性原则。当前,市面上的软件测试方法多种多样,在进行软件测试时,必须依据具体情况来选择适宜的测试方法,以保证软件测试结果的准确性。比较常用的软件测试方法分为黑盒测试和白盒测试,而这两种方法均有不同的应用条件,比如针对黑盒测试,主要适用于软件的具体功能性问题;针对白盒测试,主要适用于软件中存在的代码逻辑结构问题,便于迅速定位问题。总之,软件测试要具有科学性,相关技术人员应当在分析软件功能以及结构的基础上,选择恰当的测试方法。

2 计算机软件测试方法

由上文可知,目前计算机软件测试方法主要是黑盒测试法和白盒测试法,两种方法需要针对具体软件特性来进行分别选用。

2.1 黑盒测试法

黑盒测试法是一种较为有效的测试方法,由于其对软件的功能进行专项测试,因此也叫作功能性测试,主要测试目的就是看计算机软件是否在使用过程中基本功能有漏洞。从其字面意思上来进行理解,测试者可以将软件看作一个黑盒,其内部状态无法得知,测试人员从用户角度输入输出来进行考虑,对软件的内部程序及其接口进行测试[3]。从另外一个角度来看,如果软件运行的外部环境存在问题,此时不进行黑盒测试,就没有办法直接反映出软件存在的诸多漏洞。由于受到黑盒测试的特性所限制,黑盒测试无法对软件功能进行全面测试,只有针对明确且具体的问题时,进行穷举法进行测试,才具有较为明显的效果,因此,其具体测试项目主要包括检测软件在开发中存在的功能性错误、软件运行界面存在的问题以及软件初始化错误等,相关测试人员应当在适当时候选用这种测试方法。

2.2 白盒测试法

白盒测试也叫作结构性测试,主要测试计算机软件程序内部的结构,测评软件程序的结构是否与规定一致,程序通路是否与预期相符。称其为白盒测试,正是因为期检测方法与黑盒测试相对立[4]。如果说进行黑盒测试时将软件视为无法打开的黑盒,在进行白盒测试时则将软件视为被完全打开的盒子,然后考察软件程序的逻辑路径,从而对软件程序能否达到预期状态进行评估,确保软件程序的安全性。

2.3 静态测试法

静态测试法相比于黑盒测试、白盒测试来说,具有全面性的优势,其主要测试项目包括代码走查、技术评审等方面,特别是对程序的接口、过程等进行全面的测试来说,具有不可比拟的优势。此外,针对程序结构的查找、程序符号与设计说明书是否保持一致、不匹配参数的存在等方面也有测试优势,是一种比较常用的测试方法。

2.4 动态测试法

动态测试法是与静态测试法相对应的计算机软件测试方法,主要通过软件运行,在动态过程中对软件运行行为及结果进行测试,以确定软件是否与设计标准相符合。在采用动态测试法时,要使软件完整运行,从而对其运行状况进行全面检查,然后形成软件测试的相关数据,推动计算机软件测试工作的开展。

3 计算机软件测试技术的应用

计算机软件测试方法及原理虽然并不是很多,但是随着社会经济的发展,现代科学技术得到了极大的进步,这种情况催生出了较多的软件测试技术,这些技术极大的促进软件测试行业的可持续发展,接下来本文对这些技术的应用进行详细的阐述。

3.1 单元测试技术的应用

单元测试技术是一种比较基础的测试技术,但是这种技术在获取程序状态、Mock技术等方面的应用十分有效。

首先,针对获取程序状态,由于单元测试代码和程序代码链接到了一起,但是单元测试代码从一定程度上来说,可以获得程序内部的所有代码,当然,在一些特定的应用场景下,程序代码的获取方式并不那么直接。比如,对于C++语言,由于内部语言进行了各种形式的封装,从语言层面实现了对程序状态的隐藏,从而导致测试代码无法获得所有的状态。这在C++中,其内部隐藏代码就如同一个私密成员,测试代码无法直接获取这些信息,当然,为了实现这种“私密成员”的可测试,可以将一些public的一些函数直接暴露出来,构建一种friendclass访问类,这样就可以实现绕开private的限制,直接访问类里面的所有成员[5]。总之,这种封装性较为严密的语言难以有效进行测试,但是可以通过一些技术手段来将一些private成员进行外显,当然,要想实现可测试性,就必须对封装进行破坏,而这明显不利于软件运行的稳定性,因此技术人员要想对此进行有效应用,需要掌握好测试的度,尽量保证封装性的同时采用单元测试技术。

其次,针对Mock技术,是单元测试的一种延伸,主要是对程序内部的行为代码进行检验,并对其行为进行模拟。在ZBS中,Mock技术是一种极其常用的技术手段,其测试原理其实十分简单,就是利用Mock技术屏蔽上层代码的感知,从而修改下层代码的逻辑结构。当然,针对下层代码逻辑的变化主要是利用函数指针来进行实现,此外,还可以用继承和模板来进行修改,比如继承,要想实现Mock技术的功能,就需要将类分解成为基类和子类,将子类全部放在实现类别中,那么在具体的测试代码构建时,就可以直接继承基类,达到实现Mock功能的目的。

3.2 系统测试技术的应用

系统测试技术具有自身独特的应用范围,主要针对的是软件系统的功能、性能及易用性进行测试,对这些功能、性能等进行测试的主要目的就是为了迎合市场需求,最大程度的满足用户的一切需求。系统测试技术要与黑盒测试结合使用,并将用户的需求清单与软件编程系统进行一一对比,从中找出一些需求上的不足,进而针对不足和漏洞采用具体的方法进行优化。在应用系统测试技术时,也需要注意一些问题,比如软件的安全与精度,测试人员要全程监控好系统运行的速度,避免运行速度过快导致测试出现一些误差。

3.3 集成测试技术的应用[6]

集成测试技术也是一种比较常见的计算机软件测试技术,其应用极其广泛,目前,集成测试技术主要分为两种,一是渐增测试,这种测试主要是将待测模块与已测模块相连接,连接之后等待一段时间,等测试完成后再进入下一阶段,这样做的主要原因是在测试过程中,测试模块会越积越多,如果不等待,贸然进行下一阶段的测试会导致测试失效,如此多的测试模块,技术人员也必须保证集成方式的适宜性,保证模块能够切实地连接到软件程序之中;二是非渐增测试,这种测试相比于前者来说,从另外一个角度来对模块进行连接,通过与其结构图进行全面连接,并参照相应标准从整体上进行测试,这是其测试的基本内在逻辑。总之,集成测试技术在计算机软件测试上的应用已经相对成熟,并逐渐对测试形式进行了创新,切实地增强了测试效率,提升了测试速度。

3.4 用户验收测试技术的应用

用户验收测试主要是针对软件的可用性及功能进行的,目的在于验证软件的运行程序是否符合业务要求。用户验收测试可分为α测试和Beta测试。α测试过程中,需要在开发环境下进行测试,完善的受控环境是该测试必备的条件之一,如此才能保证软件测试的有效性。Beta测试是在进行功能及系统测试之后进行的,是技术测试的最后阶段。因此,在进行Beta测试时,要明确用户场,通过对测试记录的分析,将计算机软件中的潜在问题反馈给开发者。

4 计算机软件测试技术应用的展望

计算机软件测试是软件开发成功的前提和基础,它能保证软件开发的可靠性、实用性和安全性,因此,在编写软件程序后,相关人员还必须对软件程序进行一系列测试,以确定软件在功能、运行效果和安全性方面是否符合预期,一般在基本软件开发完成后,测试人员还会检测软件的运行环境,他们将一些随机数据输入计算机,经软件程序核算后,判断数据是否符合相应的级别和核算要求,为保证软件程序核算的准确性和可靠性,会插入一些特殊参数,随机选取要采集的数据,如果输出结果与软件功能一致,则软件通过测试;相反,如果测试结果与软件的功能不一致,则意味着软件与开发应用需求存在差距,不能超越测试,近年来,随着中国信息化进程的加快和计算机技术的进步,我国软件开发的数量和水平有了很大的提高,一些专门用于计算机软件测试的程序相继出现,这种类型的测试软件由于开发环境的不同和技术上的局限性,仍然存在一定的问题,比如一个测试软件只能测试一个固定类型的软件,所以检测的准确性会大大降低,因此,在软件投放市场之前,有必要增加一个测试工具,对被测软件进行二次测试,以保证计算机测试的准确性。

5 结束语

总之,测试软件是保证软件安全有效运行的前提。软件测试技术能够快速识别软件设计和应用中的缺陷,及时修复和更新,避免软件应用缺陷等风险因素,在计算机软件测试中,必须严格尊重实用性和科学性,并从用户需求和应用实践两方面保证软件的功能效果,在计算机开发和应用过程中,要进行设计、开发和维护以及其他环节来保证软件开发的质量和效率。软件程序编写完成后,利用测试技术对软件的功能、性能和安全性进行测试,为软件开发提供更多的过滤和科学的检查。

猜你喜欢
白盒黑盒测试法
一种基于局部平均有限差分的黑盒对抗攻击方法
面向未来网络的白盒交换机体系综述
DWB-AES:基于AES 的动态白盒实现方法
通信学报(2021年2期)2021-03-09 08:55:32
网络“黑”“白”之争
通信世界(2018年29期)2018-11-21 06:34:44
伊士曼展示其耐受医用消毒剂的新一代聚酯——四步测试法显示伊士曼MXF221共聚酯具有出色的耐化学性
上海建材(2018年3期)2018-03-20 15:28:22
新型混合材料咀嚼效率测试法
电气化铁路轨道电路绝缘电压测试法的研究
基于D-最优化理论的陀螺仪力矩反馈测试法
基于EEPROM数据读写的智能电能表白盒测试方法
电测与仪表(2014年3期)2014-04-04 09:08:08