李华宝
摘要:在软件的开发过程中,软件测试是提高软件实用性以及质量的关键性环节。软件测试是为了发现软件错误以及潜在缺陷的过程,是保障软件质量的关键技术之一。软件技术在近几年进入了高速发展期,软件测试技术以及自动化测试技术也获得进步。本文针对软件测试的自动化的信息以及关键技术进行了整理分析。
关键词:软件 测试 自动化 技术
中图分类号:TP311.5 文献标识码:A 文章编号:1007-9416(2016)06-0234-01
软件测试技术从传统的手工测试逐步发展为现在的自动化测试技术。手工测试往往需要技术人员付出大量的精力和体力,是一项工作量极大的过程。如今随着社会的高速发展,信息技术的突飞猛进,软件领域的竞争趋于白热化,软件正在向着复杂、尖端、多元化方向发展。大量的软件程序开发出来,仅依靠效率低下的手工测试已经远远不能达到人们的需求。为了适应市场,自动化测试被开发出来,自动化测试的诞生极大的提高了工作效率,是测试用例的生成软件测试是软件质量保证的重要手段,也是目前软件测试的发展方向。
1 软件测试自动化基本概述
从上世纪六十年代开始人们就对软件测试就行了研究,至今己有50余年的历史。测试顾名思义就是对所开发的软件产品进行检查、评审和确认等过程,是对软件产品质量所进行的自检和自评。
(1)软件测试的概念。软件测试是软件开发的过程中重要的一环,其工作一般是事先安排好工作计划,然后较为全面系统的进行测试工作。是对软件产品进行的自检。该活动伴随着软件开发的每一步进行。通过软件测试,可以检测出软件在运行过程中存在或者潜伏的各种错误或者缺陷,从而为开发者提供数据依据。
(2)软件测试的种类。软件测试的分类方法有很多,比如按软件开发过程可分为单元测试、集成测试、系统测试及验收测试;按软件动作可分为升级变更的测试、重现故障测试、己有功能的测试、回归测试、兼容性测试及恢复测试、安装/卸载的测试等等;按测试方法,又可以分为黑箱测试及白箱测试;按用不用借助软件,可以分为手动测试和自动化测试。
(3)典型的软件测试问题。由于软件系统的复杂性和不可预测性,在软件测试过程中可能会出现一些问题,主要问题可归结为以下几个方面:项目存在风险性,在项目晚期才能真正降低;项目进度不易预测,加之项目负责人对所开发软件实际状况的了解程度不够,造成管理上的问题。开发经费较高,如果在测试过程中错误没被监测出来,后期的软件错误修复费用会极高,同时也会造成整个项目的延迟,可能会导致开发项目成本的大幅度增加,据统计,近些年由软件开发失误所造成的经济损失每年高达几百亿美元。
(4)自动化测试。测试自动化作为一种测试技术,通过设定的机制,可以自动对被测系统进行测试。测试自动化以较低的费用、彻底的测试、较高的产品质量作为目标。实现软件测试自动化的趋势己经不可逆转了。自动化测试主要采用自动化工具提供的测试脚本对目标应用程序进行测试。自动化测试具有速度快、测试效率高、可靠性强、测试覆盖率高通用性强、风险低信任度高、完成手工测试不能或难以完成的测试等特点。虽然自动化测试具有很多优点,但是其不是万能的,也有其自身的局限性。
2 软件测试自动化关键技术
(1)测试用例自动生成技术。测试用例的自动生成是实现自动化的关键所在,靠人为以及手工的方式产生测试用例是较传统的方式,花费时间较长且质量不高,会有人为因素造成一定的错误,而自动生成的测试用例就可以避免此问题的生成。目前有面向路径的测试用例及面向功能的测试用例两种技术。面向路径的技术是针对程序的内部结构的,需要对程序的逻辑路径达到一定程度的覆盖,是基于覆盖的测试用例生成技术,通过覆盖程序中所有路径,找到程序的中隐秘的错误。面向路径的方法主要有动态法、静态法、随机法及动态法。面向功能技术是以规格说明书作为支持,并根据说明书的需求生成相应的测试用例。面向功能技术可分为基于模型的、基于代数的以及基于有限状态机的等。测试用例自动生成相关算法主要有遗传算法、蚁群算法及粒子群算法。目前混合蛙跳算法在测试用例自动算法中也开始使用,此方法是一种全新群体智能算法,结合了模因算法和粒子算法两者的优点。
(2)捕获/回放。自动化测试使用的主要手段之一是捕获/回放。技术人员通过对脚本进行捕捉回放,完成脚本的录制工作。其主要记录内容为所开发软件的系统结构组件,以及所开发软件对测试的具体操作步骤。测试结果一般是以文本格式存放。捕获/回放一般有三种特定级别,即操作系统级别、硬件级别和进程级别。
(3)自动化测试模型选取。自动化测试模型一般可以分为三种,即合并式、独立式及顾问式。其模型主要是为了在组织中实行自动化测试服务。合并式模型:主要工作有设计、开发、执行以及提交等。测试自动化工程师会参与到手工测试人员的每一项工作中,辅助其完成测试工作。独立式模型:一个核心的测试自动化组负责进行自动化测试项目生命周期中的所有活动。这个小组要完成从自动化测试套件开始设计到发布间的所有任务。在顾问式模型中,负责给手工测试工程师培训关于测试工具,测试方法的知识并为执行和巩固活动提供基础设施。
无论选取哪个模型,其最终的目的都是为了增加工作效率,提高软件检测过程的自动化水平。专门的测试自动化工程师被分配到每个测试项目中和手工测试人员一起工作,共同分担着测试自动化项目的相关活动。在整个测试流程中,自动化测试工程师与手工测试工程师对需要进行自动化的测试用例进行研究讨论,对原有的手工测试用例进行拆分使其符合自动化测试的需求。
3 结语
软件测试是为了发现软件错误以及潜在缺陷的过程,是保障软件质量的关键技术之一。软件自动化测试是软件测试的一个重要组成部分,它可以完成许多手工测试无法实现或者难以实现的测试。对软件测试自动化关键技术的分析具有很重要的意义。
参考文献
[1]傅兵.软件测试技术现状与发展趋势研究[J].电脑编程技巧与维护,2016(02).
[2]林平荣.高校软件测试自动化教学平台的搭建[J].电脑知识与技术,2010(28).
[3]徐俊毅.风河软件测试自动化方案为嵌入式系统开发提速[J].电子与电脑,2009(12).
[4]张向芳,李华,姜英伟.软件测试自动化的实施方案[J].山西科技,2006(04).