思步网

标题: 使用日程安排自动化测试来更好地管理时间与资源 [打印本页]

作者: guanlilei    时间: 2012-3-13 17:43
标题: 使用日程安排自动化测试来更好地管理时间与资源
向自动化测试添加日程安排的优势与挑战
测试软件、系统硬件,以及不同软件平台之间的防火墙都可以使用测试自动化系统。您可以使用为执行回归测试设计的自动化框架,以创建任务,执行它们,并根据不同的实验资源分析测试结果。这些框架适用于命令行界面以及图形用户界面。自动化系统的一个重要组成部分是安排一项任务的过程。
本文可以让您对自动化系统的结构有一个基本的了解,该系统与日程安排机理集成在一起,以支持您使用日程安排功能来设计和开发一个自动化框架。文中还向您提供了使用 Java 语言开发一个自动化框架的概述。
日程安排中测试自动化的优势
您可以将日程安排看做自动化系统的子系统。在自动化框架中加入日程安排功能,使得您可以安排每日的,每周的,每月的任务,如有需要可以重复安排。您还可以使用日程安排者来选择实验资源来执行测试回归。这减少了人为干预的概率,并在未来指定的时间自动执行。日程安排者可以帮助您管理回归测试的时间与资源,并有助于提高测试的性能,因此提高了成功率。
挑战
•收集关于执行环境的信息
当您需要资源来执行任务时,得到适当状态的实验室资源通常来说是非常困难的。检入是非常重要的。
•团队的地理分布
使用自动化系统的团队可能来自于不同的国家。他们的时区与系统的时区可能不同,自动化服务器就是在系统上运行的。每个日程的时间与日期必须与自动化系统的时间保持同步化。
•飞行时提供需要的信息
有时,需要提供一些额外的信息,例如在执行时,构建和沙箱层次。日程安排者应该能够处理执行期间用户执行的更改。
•与自动化系统的其他构件联合工作
日程安排是自动化系统的子系统,这样它就可以与自动化系统的其余构件集成了,以产生需要的结果。构件之间交流或者协调不足在测试实验资源中产生严重的硬件问题。
•满足每一个和所有团队的日程安排需求   
每一个团队都有其自己的自动化需求。有些团队可能需要执行日常的任务。挑战在于理解来自所有团队的需求,并开发一种日程安排机理,来处理所有不同的需求。

--------------------------------------------------------------------------------

自动化系统的结构
测试自动化系统有两个主要的构件:
•用户界面
•图形化用户界面
•命令行界面

•测试引擎

图形用户界面(GUI)提供了一种管理测试的简单方法。它有助于创建运行不同实验资源的测试回归,以测试安装在其上的图片。
命令行界面是执行测试的另外一种方法。在这里,用户必须要执行一点更多的操作,以创建和管理其测试和测试回归,因为测试与测试回归的创建与管理需要频繁的用户交流。
测试引擎会接受来自 GUI 或者命令行界面,或者两者的测试与测试回归,并在实验资源上运行它们。
自动化系统的构件如图1 所示。它包含了用户界面,测试引擎以及测试系统。接下来的章节描述了这些构件的功能

图 1. 一个自动化系统的功能,
         

用户界面
这种界面可以是一种基于网络的 GUI 或者命令行。您可以使用网络技术来开发一个基于网络的界面。对于一个不使用浏览器的程序来说,一个命令行界面起的作用十分有限。作为测试自动化系统的一部分,用户界面发挥着重要的作用。这就是测试自动化开始的地方。不同的用户界面伴随着不同的特性。其中有些界面包含了以团队的格式维护用户工作区域。下面就是用户界面的主要任务:
1.提供一个用户友好性的界面
2.提供一种轻松的方式来创建测试和测试回归
3.为测试提供测试执行环境
4.显示测试结果
5.分配管理的资源  

测试引擎
测试引擎就是测试自动化系统的核心,因为它使用不同的实验资源来运行测试。这种类型的软件用于测试软件,硬件,或者一个完整的系统。选择一个合适的测试引擎非常重要。它取决于您想要实现自动化的测试的类型。不同的测试引擎提供了不同的功能。例如,IBM® Rational® Build Forge® 以及开放源 STAX 引擎提供了并发特性以及测试的序列性执行。有时,测试自动化框架包含了测试引擎,它支持框架处理的自动化。测试引擎主要有以下任务:
1.对程序或者图片执行(运行)测试或者测试回归
2.重复测试
3.收集测试结果
4.分析测试结果
5.监视执行结果
6.向测试员发送关于失败信息的电子邮件通知

--------------------------------------------------------------------------------

自动化进程
多个平台的微观开发需要收集来自开发员的源代码,并将代码整合成一个单元。当实验资源安装该单元之后,它需要多种测试来确认它的正确性。这种测试的自动化降低了测试员执行测试所需要的时间,这样他们就可以将更多的注意力放在微观开发上了。
很明显,自动化需要减少手动与测试相交流所需要的时间与工作量。通过运行脚本或者运行命令都可以执行测试。您可以以任何语言来编写脚本。测试引擎应该能够分析这些脚本访问并执行测试。
框架的选择,与测试引擎一起,都是自动化进程的重要部分。测试自动化系统中可以使用多种框架,例如开放源软件测试自动化框架(STAF),或者您可以创建自己的框架。
许多公司通过创建自己的自动化框架和测试引擎,来处理自动化。在您拥有自动化系统的两个构件之后,您可以在自动化进程之中使用它们来执行以下的任务:
1.使用用户界面来创建和管理测试以及测试回归
2.提交测试以在程序或者图片上运行
3.对程序或者图片(测试引擎)执行测试
4.通知测试员需要注意的事项
5.生成和分析测试结果(测试引擎)
6.如果测试失败的话向测试员发送电子邮件
--------------------------------------------------------------------------------

日程安排的自动化系统
带有日程安排功能的自动化系统如图2 所示。

图 2. 日程安排者的自动化系统
                                 

它包含了一个或者多个名为 安排者 的构件。安排者的作用在于识别您想要执行任务的类型。如果它的类型是 安排 类型的,那么安排者将会指导引擎安排任务;或者,他会让测试引擎直接执行测试。您可以通过用户界面来安排执行。
构建在日程安排功能之上的自动化框架
自动化框架,它包含了日程安排特性,可能需要在一个系统上运行自动化服务器。来自不同团队的用户可能位于不同的地理区域,这使得日程安排的时间也有差异。日程安排者应该能够识别时区差异,并根据用户的请求来安排任务。
自动化框架可以帮助您基于 图3中给出的选项来创建日程安排。如果有需要,您还可以指定安排的日期和时间,并重复日程安排。图3 中描述的安排表安排了日常的任务,并计划到三天之后。它还显示了运行测试的日期。用户界面还提供了安排准备期间选择测试系统和任务的选项(屏幕截图中没有显示出来)。


图 3. 带有日程安排者 UI 的自动化框架
                                         


使用 Java 技术实施日程安排特性
Java 提供了计时器框架,使得程序员能够更轻松地执行日程安排。它包含了一个 java.util.Timer 以及 java.util.TimerTask 类。Timer 与 TimerTask 协同工作以提供日程安排功能。您可以使用计时器来安排一项任务。任务可以是 TimerTask 的一个实例。在创建一个任务之后,您可以使用 Timer 实例来安排它。计时器使用以下的方法来帮助日程安排:
•空白日程(TimerTask TTask,等待较长的时间)
•空白日程(TimerTask TTask,等待较长的时间,长时间的重复)
•空白日程(TimerTask TTask,Date targetTime)
•空白日程(TimerTask TTask,Date targetTime,长时间重复)
•测试引擎生成了测试结果并分析它
•空白的 scheduleAtFixedRate(TimerTask TTask,长时间的重复,长时间的重复)
•空白 scheduleAtFixedRate(TimerTask TTask,Date targetTime,长时间的重复)

这种方法清晰地告诉了您怎样去计划一项任务。为了提供更大的灵活性,您可以使用观察者模式来提供一系列的日程安排机理。使用这种方法,可以提供一种内线程的交流方式,通过通知您新安排的产生来通知日程安排者。这种方法基于 Java 技术。您可以实施日程安排机理,它最适合于自动化的框架。
图 4 描述了日程安排构件之间的交流。一旦有人添加了一条安排,那么安排者会自动通知执行者或者测试启动者构件以执行测试。一旦给出了日程安排,它就必须从安排列表中删除,并让下一个安排的测试在指定的时间运行。

图 4. 日程安排构件之间的交流
               

创建和删除一条任务
注意:
您可以使用 Java 中的 Timer 类,用以下的方法取消或者甚至删除安排的任务:
•void cancel() // cancel the timer thread
•int purge () // delete the cancelled task from timers queue
--------------------------------------------------------------------------------
拥有日程安排功能的自动化系统的框架
接下来的框架描述就是一种解决方案,您可以使用它来理解自动化框架的操作。正如前面所描述的那样,自动化系统包括用户界面,测试引擎,测试的系统。自动化框架包含了以下的基本构件:+ d6 E( p5 @! P% E. R$ {; v
•用户界面,它可以是基于网络的
•存储您想要执行任务的数据库
•一个持续性检查执行任务数据库的进程
•从以上进程中获取任务的安排者
•执行日程安排者提供任务的测试引擎

图 5 描述了自动化系统构件之间的完整交流:
1.用户添加执行的任务,以及安排的日期与时间,和测试的系统。
2.该信息存储在数据库之中。
3.daemon 会不断运行进程,以从数据库中获得任务,将其交给日程安排者,然后添加包含系统健康状况测试的信息。
4.然后日程安排者会将任务交给测试执行引擎,与测试系统相交流

图 5. 自动化系统构件之间的完整交流
                           
网络框架的其他责任在于得到测试的结果并分析它。日程安排者帮助您管理自动化系统的以下方面:
•测试回归,它包含了您对测试系统想要执行的任务
•测试系统
•如有需要的话,执行测试回归和重复的日期与时间)

--------------------------------------------------------------------------------
性能评价
自动化不但能够帮助您更有效地管理花在重复性测试上的时间,而且能够帮助您分析测试的结果。它能让您将更多的注意力放在微观开发上,而不是把大把的时间花在测试上。一旦开发员进行微观开发,那么通过管理和安排回归测试,执行构建的全部测试操作,只不过是一次点击的操作而已。因此,它降低了手动测试期间人为交流和干预的频率。
日程安排功能,在另一方面上,降低了重复测试期间的出错率。图 6 中的图显示了测试系统最新构建全部测试的性能改进。条形图显示了每日,每周,每月进行的测试,测试自动化框架的日程安排功能能够帮助您实现全部这些功能。

图 6. 性能评价条形图.
                     
为了进一步深入研究 Rational 软件为测试和自动化提供的功能,您可以查看参考资料部分。
               

作者: 芮语安    时间: 2013-3-4 11:30
锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!
作者: 李军    时间: 2013-3-7 16:26
膜拜神贴,后面的请保持队形~
作者: 280056303    时间: 2013-3-12 14:30
好,很好,非常好!
作者: lj7568058    时间: 2013-3-13 12:30
OMG!介是啥东东!!!
作者: 兰溪    时间: 2014-4-28 13:58
看了LZ的帖子,我只想说一句很好很强大!
作者: 成全i    时间: 2015-3-13 17:45
众里寻他千百度,蓦然回首在这里!
作者: Lluo-    时间: 2015-12-27 19:11
支持,赞一个
作者: 心宽何处不桃源    时间: 2016-2-23 16:27
打酱油的人拉,顺便赚点金币
作者: 记者小脚丫    时间: 2016-12-5 13:43
向楼主学习
作者: 狐狸精    时间: 2017-4-15 12:10
不错 支持一个了
作者: 文艺痞    时间: 2017-11-29 09:49
确实不错,顶先
作者: 凌昕    时间: 2018-3-7 12:16
好帖是需要鼓励的~
作者: 插翅难飞    时间: 2019-4-5 21:55
我了个去,顶了
作者: 消失?埃    时间: 2020-5-29 20:21
其实,很多情况下都是这样的,习惯就好。
作者: 久亡    时间: 2020-6-29 18:50
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
作者: 维生素    时间: 2021-3-5 21:23
向楼主学习




欢迎光临 思步网 (http://www.step365.com/) Powered by Discuz! X3.2