赵辉 袁普及
关键词:软件;自动化;测试;定义;技术
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2023)12-0054-03
随着计算机技术的快速发展,软件产品使用得越来越多,其被广泛应用于电子产品、办公软件、金融行业等领域。与此同时,软件产品的规模越来越大,越来越复杂,而软件的交付周期不断缩短,需使用软件测试技术来保证软件产品的质量。软件测试主要通过手动或自动测试方法对系统或软件进行测试,找出程序中的问题,从而提高软件产品的质量,使得系统满足客户的需求。
在人们的日常工作和生活中,离不开各种各样的软件,而软件的错误会带来不必要的支出或隐藏的危险,因此,软件测试在软件产品开发过程中至关重要,不仅能够检验软件产品是否符合产品需求,而且关系着软件产品的交付质量和客户的满意度[1]。软件测试[2-3]是检验软件产品质量的重要手段,贯穿于软件产品开发的整个生命周期。软件测试主要包括手动和自动化测试。手动测试主要是通过手动操作来检测软件产品的功能。自动化测试是使用专门的自动化工具来对软件产品进行测试。在软件产品产生初期,软件测试的定义不是很完善,它只占软件产品研发过程中的小部分。随着软件产品系统的规模越来越庞大,所涉及的领域越来越广,软件产品的测试也变得越来越困难,即测试也会变得复杂,人工手动测试变得相当困难,因此,人们开始使用软件自动化测试对产品进行测试,解决了人工手动测试存在的问题。软件自动化测试可以提高测试的执行效率、降低人工测试所带来的成本、能够避免人工测试导致的测试遗漏,能够完成人工测试无法完成的任务、可以帮助企业开发出高质量的软件产品。因此,本文对软件自动化测试技术进行研究与探析。
1 软件自动化测试定义
软件自动化测试[4]是指在预先设定条件下,运行编写好的程序,然后对运行结果进行评估。其中,预先设定的条件包括正常和异常两种条件。软件自动化测试是将手动测试转变为机器执行的过程,直观地
说就是在测试过程中,手动測试被自动化测试工具所代替。软件自动化测试的本质是通过脚本程序测试软件开发的程序,主要完成两种测试:一种是测试用例不能用手工测试,就要用软件自动化测试,如压力测试,不能使用手动测试完成;另一种是能够将测试用例编写为自动化测试脚本,此种方法能够节省资源,提高软件测试的效率。
软件自动化测试能够减少测试工程师的工作量,也可避免对软件的重复操作。另外,软件自动化测试可以完成手动测试不能完成的操作任务,如压力测试、可靠性测试、并发测试等。在并发测试过程中,如果使用手动测试,需要提前准备多台计算机和多名测试工程师,然后根据指挥在同一时间同一位置进行操作,使用秒表得到反应时长。在这种方式下,得到的结果并不能让人信服,也无法得到好的检测结果,因此,并发测试使用手动测试不可行,可使用自动化测试方法进行测试。软件自动化测试能够节约人力和时间,提高测试的执行效率,缩短软件产品的开发周期。对于需要反复进行操作的工作,软件自动化测试可以提前准备好脚本程序和自动化测试工具,然后不断地重复需要进行的操作,最终可以有效地完成测试任务。
软件自动化测试之前需要对软件产品进行分析,确定该产品是否能够进行自动化测试。软件自动化测试主要适用于软件产品的需求后续变动不会很大、整个项目周期比较长、要求要做回归测试的情况,因此,需要组建专业的自动化测试团队,对软件产品进行自动化测试。综上分析可知,软件自动化测试就是用自动化测试工具代替手工行为的一种测试,即使用自动化测试工具及所编写的脚本程序来模拟人工操作,进而完成自动化测试过程。
2 软件自动化测试步骤
软件自动化测试通过分析软件产品需求及测试工具,制定测试计划,根据测试需求,构建测试环境并编写测试用例,进而编写自动化测试脚本,通过执行脚本来验证测试脚本的正确性。在设计手工测试用例时,标出能够使用自动化测试的用例,以供参考。自动化测试脚本的开发过程其实就是将测试用例转变为代码,然后在测试环境中对自动化测试脚本进行验证。当然,若想要测试脚本具有兼容性,需放在其他的平台上对其进行验证。最后,需要对测试结果进行评估和分析。软件自动化测试具体流程[4]如图1 所示。
根据软件产品的需求和测试工具,首先编写软件产品测试计划。软件产品的测试计划主要包括测试的内容、目的、方法,所要耗费的人力、物力等。通过软件产品测试计划和需求说明书,设计测试用例。在设计测试用例时,要包括所有的测试需求,并单独列出无法用自动化测试来完成的测试用例,为后续编写代码做准备。测试用例应满足全面性、可操作性、正确性等要求,而且必须经过评审才能够使用。软件测试环境根据软件产品的不同选择不同的环境进行测试。测试用例和环境完成后,根据软件产品的需求和不同的自动化测试工具,选择脚本语言,然后开始编写脚本,编写好脚本之后,对脚本进行不断调试验证,并实时记录、跟踪、反馈测试过程中出现的问题,最后对测试结果进行分析。
软件自动化测试脚本的维护非常重要。若软件测试比较复杂且脚本很多,在反复执行脚本的过程中,运行就会变得很慢,需要根据测试用例和脚本设计说明对脚本进行维护。因此,在编写测试用例和脚本时,能够考虑可能会出现的各种问题,以便更好地维护脚本。
3 软件自动化测试技术及应用场景
软件自动化测试技术主要有录制与回放、脚本测试技术、数据驱动、功能驱动等,除此之外,还有领域驱动、功能驱动及指令驱动的软件自动化测试技术。因此,通过利用这些技术,软件自动化测试可应用于基于Linux GUI、基于Python CLI、云端软件等自动化测试场景,帮助用户开发出更好的软件产品。
3.1 录制与回放
录制与回放[5]是软件自动化测试最初的技术。在刚开始使用时,需要借助硬件进行录制,即录制是利用自动化测试工具来测试应用程序和网页中的功能,然后对操作过程进行记录。在录制过程中,将程序与脚本混合在一起,且在测试过程中能够产生单独的测试脚本,适用于比较小的项目。由于程序与脚本是混合在一起的,这就需要花费很高的成本去维护。此外,当操作界面发生变化时,测试工程师就要重新录制,这就导致操作比较烦琐。回放能够发现在录制过程中出现的错误。因此,该测试方法在软件自动化测试过程中效率较低,且需要花费较高的成本。
3.2 脚本测试技术
脚本技术根据测试用例,编写脚本程序。通过执行脚本程序来实现自动化测试。脚本测试有两种,一是结构化的脚本,此种脚本包含较多的结构化的内容,具有较好的逻辑性和稳定性,对在测试过程中出现的异常问题可以进行及时处理,但脚本与测试数据联系紧密,后续修改的难度较大。另外一种就是非机构化脚本,即线性脚本,该种脚本可以使用不同语言编写,方便与被测产品进行交换,但会增加测试成本,可用于中小型的软件产品[5]。
3.3 数据驱动
数据驱动将以前的需要借助硬件的模式转变成软件模式。测试工程师根据测试需求和测试计划,检测各个测试点的参数值、属性值及预测值,进而判断是否能够实现测试功能。数据驱动测试技术能够将相关信息从数据文件中读取出来,通过将测试脚本与测试数据相分离,并将输入数及预期输出构成相应的表格,然后对表格中的数据进行检测,提高了测试的灵活性和代码的重复利用性,可用于规模比较大的项目。另外,在前期准备阶段,由于脚本的逻辑性比较强,会有较多的控制程序,因此要有充足的人力、物力和时间[6]。
3.4 关键字驱动
关键字驱动通过将数据和关键字融合来执行测试,是数据驱动自动化测试的延伸,因此可充分利用数据驱动的优势。关键字驱动的测试在同一个框架下执行,而框架具有多个接口库,具有扩展延伸功能。在自动化测试过程中,需要对测试用例进行系统描述和对脚本进行抽象化处理,这样能够降低测试的难度,而且测试人员并不需要理解代码,只用通过测试工具就可以完成軟件产品的检测。但是,这种方式需要花费很大的成本,比较适合大规模的软件项目。
在软件产品自动化测试设计时,可根据软件产品的实际需求使用一种软件自动化测试技术,也可以使用两种及以上自动化测试技术。综上可知,软件自动化测试能够提高测试的执行效率、降低人工测试所带来的成本、避免人工测试导致的测试遗漏等优点。但是,软件自动化测试也有缺点,如开发和维护成本较高、需要分析测试结果和日志等[6]。
此外,自动化测试技术还包括领域驱动的软件自动化测试技术、功能驱动的软件自动化测试技术、指令驱动的软件自动化测试技术等。领域驱动的软件自动化测试技术关键字驱动的软件自动化测试的延伸和改进,该测试技术是从领域模型的角度进行研究,根据领域语言对测试用例进行描绘,然后构建模型,并对领域关键字及测试用例进行分析,从而进行自动化测试。功能驱动的软件自动化测试技术将软件产品分为独立的模块,每个独立的模块都包含独立的测试用例,并对独立的模块单独进行自动化测试。该测试技术在面对需求变更时,仅需要对需求变更产生影响的模块进行修改就可以,其余模块的脚本就不需要进行很大的调整。指令驱动的自动化测试技术是较为理想的自动化测试技术,该测试技术是基于数据驱动测试技术的改进,将数据替换成测试指令,从而进行自动化测试[7]。
3.5 应用场景描述
结合上述描述,软件自动化测试可应用于手动测试无法实现或手动测试成本较高的软件产品,且测试时间较长,具有重复性、机械性手动测试的软件产品,软件界面不会经常变动,需要进行回归测试的软件产品,同时,可以在不同平台上能够重复使用的场景。具体来讲,软件自动化测试可应用于基于Linux GUI 的自动化测试、基于Python CLI的自动化测试、云端软件测试技术等场景。基于Linux GUI的自动化测试一般以开源软件为主,通过关键字驱动方式,利用图形界面对软件产品进行窗口、图标、菜单等的测试。基于Python CLI的自动化测试由协议、外壳及命令集组成,通过驱动终端向用户端发送指令,然后服务器终端开始操作,利用终端驱动服务器终端外壳,通过命令集来解析用户命令。云端软件测试技术通过使用云服务器、云计算等技术进行软件自动化操作。云服务器可以实现资源共享,这样测试人员和开发人员可以在云服务器上进行资源共享,能够充分利用云服务器上的软件的自动化测试工具,可以提高测试的效率[8]。综上可知,将软件自动化测试技术与新技术相结合,可以提高软件自动化测试的测试效率。
4 总结与展望
软件产品的规模越来越大,需要实现的功能也越来越多,软件兼容性要求也越来越高,软件测试将面临着更高的挑战,尤其是不能仅满足于功能实现,而忽略软件产品内在的性能和代码质量等问题的关注。软件自动化测试技术能够应用于复杂的场景,即能够模拟复杂场景代替手动完成测试,可以提高软件测试的精确性、准确性及可信性,因此,本文研究并探析了软件自动化测试技术。首先对软件自动化测试的定义进行了描述与分析,然后阐述了软件自动化测试的步骤,在此基础上,对软件自动化测试技术及其应用场景进行了研究。下一步将软件产品引入软件自动化测试技术,以期提高软件测试的效率并满足用户的要求。