版权归原作者所有,如有侵权,请联系我们

[科普中国]-软件自动化方法

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

软件自动化方法是借助计算机系统实现软件开发的方法。以软件控制论为指导,将控制理论应用于软件工程领域,以软件过程作为被控对象,通过分析和优化软件过程中的反馈机理,达到改进软件过程、提高软件质量的目的。1

简介软件自动化主要涉及软件开发、软件规约、自动生成和自动验证等。21世纪以来,信息产业在全球范围内的影响越来越大,软件系统逐渐渗透至各个工业领域,并促进这些工业领域不断发展进步。与此同时,软件系统的规模和复杂度急剧增加,在软件研发过程中不可避免地存在人为错误,从而导致软件设计或实现存在缺陷,使得软件系统运行期间的行为越来越难以预测和控制。一旦以特定输入参数或执行流程运行软件,缺陷就会被激活,产生软件故障,这样不但造成大量的财产损失,而且可能付出生命的代价。为提高软件质量以尽量降低软件发生故障的风险,有必要在软件研发过程中采取适当的控制措施。而且,在软件设计、开发、测试、运行和维护过程中确实存在大量的反馈机理,为利用控制理论解决软件工程问题提供了充分的施展空间。软件自动化就是利用相应的理论依靠软件来实现某些功能。1

主要方法软件自动化的实现方法主要有演绎综合、程序转换、归纳综合和过程实现。

分类软件自动化可以分为分低级自动化、中级自动化和高级自动化等层次。可理解为从形式的软件功能规约到执行的程序代码这一过程的自动化。2

软件测试自动化发展随着现代社会信息化网络的发展,作为软件工程的一个重要组成部分,在软件的整个开发过程中,软件测试占有越来越重要的地位。软件测试的意义不仅仅在于发现系统中所存在的错误,更表现在经过各种各样的测试技术与方法对软件系统进行测试后,可以有效提高软件系统的质量,并提高测试人员对产品质量的信心。尽管对软件中所存在的错误不能做到全部预测,然而经过软件测试后,能够对软件故障的可能性及故障后果的严酷程度进行准确判定。通过软件测试,能够将系统中软件出错的几率限制在可接受的范围内,因此极大提高了软件质量的可靠性。3

传统的软件测试方法主要采用人工测试,需要耗费巨大的人力资源,测试周期较长,测试的效率很低;并且非常依赖于测试者的个人经验,容易受到个人思维习惯的影响,导致测试工作的遗漏和错误。由于软件开发的时间逐渐减少,以及软件开发的规模逐渐扩大,软件测试出现的问题越来越多,软件测试自动化技术的利用已成为软件测试发展的必然趋势。软件测试自动化技术能够快速彻底地对软件系统进行测试,并排除那些由于测试人员个人思维习惯导致的测试遗漏与错误,从而有效地提高软件质量,省去大量人力资源和成本,减少软件开发的时间。3

工作过程软件自动化测试即通过机器代替人力对软件进行测试,通过使用相关的软件自动化测试工具和编写测试脚本来实现。

目前,软件自动化测试重点体现在软件测试过程的管理自动化,动态测试的自动化,例如性能测试自动化与功能测试自动化等。测试自动化可以从以下两个方面来理解:一是测试的自动化流程,其次是测试结果的自动化分析。测试的自动化流程就是测试者没有必要逐个利用测试用例进行测试。测试结果的自动化分析就是测试者没必要自己分析和记录测试数据的流程以及测试的中间结果,如果测试过程中出现错误,自动化测试工具自动报告错误,并给出一些重要线索,使测试人员能够对测试中出现的问题做到快速定位。3

自动化测试主要是通过测试脚本来测试待测试应用程序集的,而测试脚本就是由自动化测试工具提供的,测试脚本就是在特定的环境下使用指定的语言(如C#)编写并实现的代码,按照软件测试系统方法的不同,它既能够被看作是利用某些特定语言,对测试功能做出解析的文本,或者被看做是一个简易的“批处理”命令,还能够被看作功能强大的更加复杂的脚本语言程序片段。3

自动化测试工具目前,市场上存在的软件测试工具已经非常多样化,尽管很多工具无法像被预期的一样,具有自动化和有效性的特点,然而这些工具在找出软件运行错误,提高质量问题的方面存在着必不可少的作用。一般软件自动化测试工具可分为黑盒测试工具、白盒测试工具、测试管理工具及专用测试工具等四大类。3

自动化管理自动化管理依据的原理就是程序员采取一些专业知识运用在计算机当中,当前,在这之前需要相关操作人员在计算机当中输入各种代码,从而启动计算机为人们服务。其中,代码存储在计算机当中,之后通过采取计算机和存储器的作用,经过一定时间的运行最后就可以逐步生成一些可具备控制性的自动化软件。对于计算机来讲,存储器的功能比较强大,存储器可以将现实生活当中的一些复杂以及难以进行人 工操作的作业场景通过数据的这样一种形式固定存储到计算机的内部,与此同时,计算机经过一系列复杂计算,之后,再通过图像或者图表的形式显示,甚至可以实现对生产真实场景的模拟。4

本词条内容贡献者为:

徐恒山 - 讲师 - 西北农林科技大学