51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 6458|回复: 6
打印 上一主题 下一主题

[资料] 利用Jenkins创建灵活的自动化测试框架

[复制链接]
  • TA的每日心情
    开心
    2017-7-24 13:27
  • 签到天数: 160 天

    连续签到: 1 天

    [LV.7]测试师长

    跳转到指定楼层
    1#
    发表于 2016-8-3 13:02:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 Trinitytec 于 2016-8-3 13:13 编辑

    概述
    多年来,大多数软件开发的流程都有三个独立的阶段:设计、编写代码、测试。但是,这一流程有一些严重的缺陷:
    • 设计中存在的缺陷往往要等到几个月之后进行测试时才会发现
    • 在开发过程中会有成百上千的潜在bug不断累积
    • 测试阶段所花的时间可能是开发阶段所花时间的两到三倍
    采用这种“三步骤”的工作流程,最终能够开发出完整的应用程序,但是完工日期常常要比预定时间晚很多,而且花费也会大大超过预算。


    持续集成和测试也许在软件开发历史中,使用得最泛滥的图表就是曲棍球棒图表(hockey stick graph)了。该图表显示:如果在bug刚引进的时候,就对bug进行修复,那么修复该bug所需的成本很低;但是如果已经有上千的用户部署了存在bug的应用程序,那么修复该bug的成本就会非常高。

    多年来,人们做了很多努力,想要解决软件质量和上市时间的问题,其实持续集成(CI)能够提供巨大的帮助。持续集成的概念就是每次有人对应用程序做了任何修改之后,都会持续构建并测试该应用程序。如果应用程序只有几百行代码,只要做几十次测试,那么持续集成能够起到很好的作用。但是,如果有上百万行代码,要做上千次测试,会怎么样呢? Jenkins如果应用程序做一次增量构建需要10小时,测试系统需要运行2周的时间,那么我们就无法做到在每次源代码发生了改变之后,都进行构建并测试。所以,进行持续集成的一个重要条件就是:需要利用一个优化过的分布式方法来进行构建和测试。 Jenkins可以帮助解决这个问题,而且它还为持续集成系统奠定了一个极好的基础。Jenkins是持续集成服务器的主要开源工具。Jenkins用Java语言构建,能够提供400多个插件来支持所有项目的构建和测试。最简单的方法是将Jenkins看做一个“任务服务器”。无论是什么任务,Jenkins都能作为“make”命令来编译和连接应用程序,或作为批处理脚本来设定测试所需的前提条件,也可以作为可执行文件来调用嵌入式系统中的完整模拟环境。
    Jenkins能提供以下基础测试功能:
    • 定义实体机器或虚拟机器的“节点”列表
    • 为节点“添加标签”,指出它可以执行的哪类任务
    • 远程调度并协调节点列表中的任务
    • 任务完成之后,用电子邮件发送任务的状态
    所以,如果要将Jenkins作为输入,我们所要做的就是为Jenkins提供要执行的任务列表。VectorCAST/Manage正好能做到这一点。
    VectorCAST/ManageVectorCAST/Manage可专门用来将上千个测试用例编排到一个组里,这些组会映射应用程序的结构,还可以在所有可用的目标上利用任意可用的配置来执行这些测试的子集。举个例子,我们可以同时在PPC和ARM目标上部署某个嵌入式应用程序,也可以同时在Windows和Linux上部署同一个本地应用程序。 然而,我们希望无论在什么平台,针对同样的应用程序代码,都可以执行同一组测试用例。 VectorCAST/Manage能提供以下基础测试功能:
    • 将上千个测试用例编排到符合应用程序结构的逻辑组中
    • 确定每个测试用例的失败/通过(pass/fail)状态
    • 确定每个函数基的代码覆盖率
    • 让应用程序在多种配置下可以执行同样的测试用例
    • 这些功能都有命令行和Python API界面
    完整的自动化测试解决方案下图假设了VectorCAST/Manage和Jenkins一起使用的情况。在这个例子中,我们的项目将4个测试套件构建到了VectorCAST/Mange项目中,而且每个测试套件必须在不同的目标和/或操作系统上运行。
    VectorCAST/ManageVectorCAST/Manage可专门用来将上千个测试用例编排到一个组里,这些组会映射应用程序的结构,还可以在所有可用的目标上利用任意可用的配置来执行这些测试的子集。举个例子,我们可以同时在PPC和ARM目标上部署某个嵌入式应用程序,也可以同时在Windows和Linux上部署同一个本地应用程序。 然而,我们希望无论在什么平台,针对同样的应用程序代码,都可以执行同一组测试用例。 VectorCAST/Manage能提供以下基础测试功能:
    • 将上千个测试用例编排到符合应用程序结构的逻辑组中
    • 确定每个测试用例的失败/通过(pass/fail)状态
    • 确定每个函数基的代码覆盖率
    • 让应用程序在多种配置下可以执行同样的测试用例
    • 这些功能都有命令行和Python API界面

    完整的自动化测试解决方案
    下图假设了VectorCAST/Manage和Jenkins一起使用的情况。在这个例子中,我们的项目将4个测试套件构建到了VectorCAST/Mange项目中,而且每个测试套件必须在不同的目标和/或操作系统上运行。   

    我们假设每个测试套件中有4000个测试用例,并且每个测试用例的执行时间是5分钟。这就意味着,如果我们进行测试时不使用Jenkins,那么我们就需要20000分钟或两周的时间才能完成测试。

    VectorCAST/Manage有个非常强大的功能,就是在执行测试和编译结果时可以接受任何粒度级别。这意味着我们可以选择将4000个测试中的每一个都作为一个Jenkins“任务”。


    通过配置多个“节点”来执行测试,我们可以将测试工作部署到多台机器上,这样会大大缩短测试的总时间。更极端的是,我们看可以让4000台Jenkins 从属虚拟机同时运行,这样我们在5分钟之内就可以完成测试了。


    总结利用持续集成,能够大大帮助提高软件质量并缩短产品投放市场的准备时间。VectorCAST/Manage和Jenkins配合使用可以提高应用程序软件进行持续集成测试的可扩展性。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-20 13:46 , Processed in 0.074935 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表