摘要:软件已经成为人类生活中的一部分,人们已经不仅仅满足于软件所能提供的基本功能,而对软件整体的质量要求更像是追求艺术品一样,对非功能性需求-用户体验、简单易用、可操作性、及时响应、容错处理等要求更是要求日趋完美。但随着软件工程的复杂度、软件规模以及不确定因素日渐增加,于是对软件的测试效率和完整度也提出了更高的要求和挑战,合理采用不同测试方法多方位不同角度对软件质量进行测试,越早发现软件存在的问题,及时规避潜在的风险,持续改善软件的整体质量要求。通过对计算机软件测试技术内涵与特点进行分析,详细地探讨了软件测试不同技术的优势与特点,可以根据不同的测试要求,选择合理的测试技术手段,改善或提高软件产品的整体质量。
关键词:计算机软件测试; 测试技术; 软件质量; 用例生成;
随着软件工程技术不断深入和发展,为确保软件上线后其系统的可靠性与稳定性均能满足业务需求,需要对其需求功能和运行质量进行测试,这就形成软件测试技术的发展。在早期的软件开展中,由于其规模和复杂度都较小,在对软件逻辑功能测试时,由开发人员调试或单元测试发现问题并解决。但软件规模以数据体量不断扩大,系统交互和架构都变得十分复杂,需要有专门的测试人员对复杂的软件系统进行测试,除了传统的软件测试方法外,还需借助专门的测试工具、专项测试技术进行自动化持续改进测试方法,确保整个过程中软件测试是有效可靠的。
1 计算机软件测试的内涵与特点
软件测试需要在指定可运行的条件下,对软件功能、系统组件、运行环境以及非功能的需求进行整体的测试,观察其在运行过程是否存在功能不符合预期、运行不稳定、不安全等问题,通过对检测到的结果进行多维度分析,评估系统功能、可用性、稳定性以及性能是否满足预期。
1.1 计算机软件测试内涵
软件测试是验证交付的软件能够达到预期的功能需求,或者检测软件的实际输出功能与预期的功能之间是否存在差异,以及软件在安全性、功能性、容错性、稳定性方面是否满足要求。软件测试最终目标是发现开发的软件是否存在错误。一般来说,是从用户使用的视角出发,通过测试发现软件中存在不符合预期的功能、隐藏的错误与缺陷。从开发者的视角出发分析,希望开发的软件不存在错误、具有容错异常处理能力,是一个成熟可靠,具有高质量的“艺术品”,以保证开发的软件能够满足客户的要求,对用户是友好易操作的,以此来提高用户对软件使用的信心。
1.2 计算机软件测试特点
1)功能的可靠性验证。在测试验证中,要求软件运行稳定,功能可靠,及时反馈响应,能够按照用户的操作要求,及时完成正确功能操作,和用户之间建立可信任、可靠及时响应的操作。
2)系统的安全性检测。在软件持续运行的过程中,验证软件系统、交互组件、数据的安全性能否满足要求,是否存在潜在的黑客攻击、数据盗取、数据篡改、系统破坏等潜在的风险安全。
3)适用可理解性测试。要在指定使用条件下,在软件使用的过程中,能否满足大多数用户的需求,需对软件进行测试,保证软件在使用中,能够被用户理解、学习与使用。
4)容错与故障处理。是指为保证软件在运行的过程,能否在用户的错误操作下稳定的运行,并具有相应的容错恢复能力。
5)功能测试。依据软件开发的业务功能,对其进行测试验证,以证明开发的产品能够满足预期的业务要求。
6)性能要求测试。主要是对软件系统中的用户指标能否满足要求,以验证系统中是否存在瓶颈或者不稳定的问题,及时对存在性能隐患对地方进行修复,主要目标是及时修复发现的性能问题,避免性能问题导致系统瘫痪或功能不可用的风险。
2 软件测试技术的发展和经历的阶段
2.1 过程化拆分阶段
过程化拆分技术阶段,主要是指在软件开发的初期阶段,软件开发的需求分析和用户模型分析管理;对软件开发算法设计来降低一些比较复杂的计算;数据库模型设计等一系列的过程中,为后期的软件开发做好前期的开发工作。
2.2 结构分解重组阶段
与过程化拆分技术阶段相比,结构化设计主要完成数据的结构、系统的架构设计与数据流程分析等。第一,结构化技术是为了提高软件开发的可行性降低其复杂度,采用“分解——重组”类软件的开发十分有效;第二,为了更好地完成系统软件开发的数据类型的更新,使得软件开发系统不断地完善。与过程化技术阶段相比,采用结构化的设计与过程化的设计优势更加明显,能结合软件开发的需求分析,制定有效的开发策略。
2.3 面向对象思维设计阶段
随着面向对象思维开发技术的不断完善,对软件测试技术也实现了面向对象技术阶段,面向对象的思维方式与设计,在软件开发与测试中对现实世界的抽象和理解,降低软件的复杂度具有十分重要的意义。面向对象的软件开发中对实际问题求解是软件开发过程中的关键技术,使得软件开发变得更加简便和易于理解,面向对象的问题求解是从用户的角度来分析问题,就是力图从实际问题中,对业务数据和操作进行抽象并封装成对象,而对数据和操作的软件检测技术,能够形成一个广泛的联系、可扩充、可维护软件检测模型。
3 软件测试方法和技术分析
3.1 基于结构化的测试用例生成技术1)结构化测试技术适用范围
采用结构化测试技术主要针对软件设计时的系统架构不合理、系统功能不完善,以及系统处理信息的路径选择问题等进行测试,以反映软件测试的真实效果。由于软件需要测试的项目比较多,在采用结构化测试时,需要对系统进行结构上的划分,以便于使用模块化的测试方式,在测试时,根据软件的实际运行情况,观察测试用例的运行情况进行测试任务记录,将得到的数据进行整合分析。在对各个模块进行整合测试后,再进行总的系统检测与分析,并模拟网络环境下的病毒入侵测试,确保测试结果是准确可靠的。
2)对符号执行的检测
软件测试时需要结合具体的情况进行,符号执行是软件测试选择路径的第一步,路径选择是通过在数据库基础上自动进行,结合软件的不同功能自动进行路径匹配。在测试不需要人工干预的情况下,不同的路径在具体的测试过程中,需要对符号进行区分,便于在后期软件使用的过程中,能够更加深入地对软件存在的问题进行调控,从而能够得到完整的数据流方案,保证软件在后期的使用中依据数据库的选择以及数据的存储路径不会出现问题。符号是计算机设备能够识别的一种语言,软件的开发设计需要定义符号,并保证符号具有实质性的意义。在对系统的安全性与保密性进行测试时,可以观察符合是否满足测试的要求,这样就会保证软件在后期运行时不会出现问题,也不会出现选择性的错误,同时还能保证软件处在病毒运行的环境中,也不会造成计算机内部的数据与信息丢失。因此,采用结构化测试技术对软件测试的稳定性十分有效,得到的测试结果也有利提升软件的质量。
3)计算机符号执行
在对软件测试的过程中,计算机是如何有效地对软件符号进行执行,主要是依据软件设计的框架和交互来进行的,这就需要重点考察软件的安全性问题,系统框架的设计实在每个功能的实现上逐步完善的,要求软件开发设计的人员参与配合,在软件测试的过程中才更有意义,如果软件的架构设计得不够合理,就需要重新设计程序编码才能有效地解决问题。在结构化的测试方法中,系统的不同功能可以采用不同的方法来进行测试,对于一些常见的技术性问题,可以通过改变软件的结构来解决相关的问题,可以确保软件在上线运行后,不存在软件系统的架构和系统交互上的严重问题,这样有助于提高系统的使用效果,使得软件在结构上与硬件部分配合功能更加稳定。
3.2 基于功能测试用的例生成技术
1)基于功能测试用例的数据生成
软件的功能测试是保证系统在功能上能够满足用户的需求,在对功能进行测试时,首先要保证软件的结构、系统架构是否完整,功能的实现是否与不同数据库之间是否匹配,是否满足系统整合的要求,从而能够有效地判断系统结构优化设计能否满足需要,通过加强对软件的功能进行测试,能够在短时间内判断软件的结构能否满足需求,由于软件在开发完成后,很难对系统进行再次优化,在软件开发的前期,对系统的功能架构进行测试十分重要,基于数据监测所开展的软件测试,可以解决系统内部存在的安全隐患问题,在现阶段的检测中经常用到的技术方法,在运行过程中,软件对于使用期间可能会发生的问题,需要重点对测试用例生成的测试数据进行分析,通过这种方法能够促进现场得到更理想的使用标注,在软件使用中,如果安全性出现下降的情况,可以按照系统的结构进行分析,对提高测试效率十分有效。
2)基于API接口参数的黑盒测试
在对软件的API接口功能测试时,系统的接口测试也是十分重要的,对接口进行对接处理时,首先确定接口位置,判断其是否与标准接口相一致,与标准接口连接形式进行比较,合理的选择直接对系统功能的测试产生重要的影响,在对软件的接口测试时,一般是对接口采用黑盒测试的方法,不用关心下游系统的具体实现逻辑,可以先模拟出需要配合的软件功能进行测试,所营造的测试环境要与实际使用环境保持一致,而不用判断软件的内部是如何工作的,便于软件具体功能的测试与判断,也能够更好地确保软件在安全管理范围内开展,也有利于其他功能的测试。在选择功能接口后,在对软件进行测试时,软件的信息传输系统就会依据设计的功能运行,从而能够更好地实现软件的功能计划,避免软件测试过程中出现的安全与不稳定的情况,以更好地实现软件使用功能完善计划。采用黑盒测试技术,可以采用计算机软件模拟的方式来分析软件的功能。利用黑盒测试技术对软件的兼容性测试也十分重要,使得软件的各个功能能够形成一个统一的整体,通过合理的设计测试的参数,可以有效地防止数据丢失,使得软件的功能测试具有极强的自控性。
3)以覆盖率为线索进行的软件测试
基于功能测试的技术需要对开发的软件覆盖率进行测试,只要对软件功能的执行力度与覆盖率进行测试。因为软件在计算机设备中运行使用时,需要极强的控制能力,才能满足软件正常运行的要求,也可以实现对软件系统传输数据的准确性进行测试,以保证将正确的数据信息转化为指令,进而能够完成对系统软件的功能进行测试。软件测试是一个持续改进的过程,不管选择何种测试技术和方法,最终的测试效果与预期的效果一致才能满足用户的需要,如何测试结果与预期的效果不一致,或者出现质量严重的下降的情况,就需要采用技术的方法对软件的系统进行修改,使得软件测试能及时发现在软件开发中错误、缺陷,将软件开发中出现的问题降低到最低点。对软件的覆盖率检测在测试中具有相应的硬性指标,并且要求对不同的数据流需要全面覆盖测试,数据是软件功能处理的核心基础,需要对原有的数据流和数据结构进行全面覆盖,才能有效地保证软件测试能够满足相应的要求。
3.3 基于面向对象的软件测试
1)面向对象设计的选择
由于软件不同结构部分是由不同的程序开发人员设计的,在软件程序的构成随着功能变化也存在很大差异性,需要采用面向对象的思维来对实际的软件进行抽象和封装,可以快速地对软件结果进行测试,进而能够准确地对软件运行的真实情况进行分析,在对象可测的范围内、测试的效果中更具有针对性与安全性,这样不仅避免无效的测试、还减少了测试资源的浪费,还能在测试的过程中对软件的总体功能模块进行模拟,以保证软件整体运行的效果。测试所观察到的最终结果也能够与实际情况或预期结果是否保持一致做一个对比,减少了软件重测带来的麻烦,也快速对软件中出现不兼容现象进行处理,可以快速地保证软件开发的有效性,软件质量效果能够得到更理想的效果,这样更符合实际应用期间对测试方法的选择,从而能有效地保证软件测试的有效性。
2)根据程序的内部的逻辑结构白盒测试
软件的内部逻辑结构测试,可以跟踪观察程序的具体执行步骤和流程,一般属于技术性的测试方法,以解决软件的内部逻辑结构的正确性为基础,根据程序内部逻辑结构对其路径和计算逻辑的正确性进行测试,可以对程序的功能、安全等方面出现的病毒入侵现象进行分析,通过这种方法也能测试解决,发现系统结构不合理的情况,避免系统受到严重的安全隐患,从而判断软件的运行是否安全。软件的内部结构在一般情况下通过技术革新是可以优化的,还可通过改变程序在执行流程顺序,改变软件的总体架构,进而实现软件能够灵活的应用于不同的环境中。
3)黑盒与白盒结合的测试方法
在软件开发完成之后,测试者可以不对系统的架构与软件内部执行过程中进行分析,可以采用黑盒与自盒相互结合补充的方法,对软件最终运行的效果进行检测。确保软件内部运行安全的前提下,采用白盒的测试方法来检查软件具体逻辑运行功能,观察测试的效果与预期效果之间的差别,以判断软件的测试效果,逻辑功能是否满足用户要求。在白盒测试过程中,软件测试所遇到问题的都能够体现在逻辑结构中,保证解决软件开发中的逻辑功能是正确可靠的。采用黑盒测试的方法,主要对软件的运行功能效果进行测试,而不去考虑软件内部的运行过程,如果测试效果与预期效果之间存在差距,说明软件开发在体系结构上存在问题,然后利用白盒测试的方法,分析具体的测试过程中可能出现的问题,以保证软件的测试效果能够满足要求。
3.4 持续集成和交付中测试用例的自动化运行
1)渐增测试方式
在软件持续测试使用的过程中,通过不断测试,以发现在前期测试中没有发现的问题,这样出测试方法是在未测试的模块连接上一个己测试的模块进行测试,通过不断的连接未测试的模块,连续的增加测试的结果,采用这种渐增的测试方法,以发现软件开发中存在的问题。
2)非渐增测试方式
非渐增方式就是一次性完成的测试方法,在进行软件测试前,将软件的所有模块按照系统的连接图连接在一起,对软件的整体性效果进行测试,采用这种方法测试,主要适用于一些开发的小型软件,而对于大型软件,建议采用渐增式可持续集成的测试方法来进行。
3)系统测试
软件测试主要是保证系统的后期使用能够满足用户的要求,为用户提供良好的体验,这就需要对软件进行系统的性能、安全、稳定性等进行非功能性的测试,这种测试方法一般是为了发现系统的非功能性需要与系统需求之间存在的具体差异,包括软件运行的速度、安全、精度等问题。
4 结束语
目前虽然已经实现了测试精准的质量控制,但在信息技术与软件工程技术不断发展的情况下,随着软件测试技术的不断深入与发展,软件的测试的技术和方法也需要根据不同的软件工程和信息技术背景选择其合理的测试方法,准确的评估软件开发的效果与预期效果之间的差别,判断软件在功能、性能、稳定性、安全性等方面存在的问题,确保软件的生命周期中始终能开发出高质量、高可靠的软件产品。
参考文献
[1]卞华文.计算机应用软件开发技术的分类[J].电子技术与软件工程,2016(24):55.
[2]张旭.计算机软件开发技术的应用[J].硅谷,2013,6(3):91,100.
[3]杜国真.计算机软件开发技术的应用及未来趋势[J].电子技术与软件工程,2017(8):47-48.
[4]宋新乐,宋文文.基于办公自动化中的计算机技术应用的探析[J].电子测试,2016(10):64-65.