软件自动化报告

软件自动化报告

地址:192.168.1.162 http://localhost:8081/hudson

软件的自动化是一个持续改进的过程, 体现着公司的能力成熟度CMM 等级(附1) 。 1. 目前免费成熟的自动化工具

1.1 应用在java 项目的自动化工具主要是maven. 工具

1.2 应用在c++ 方面的主要工具是buildbot (开源) 工具,代表公司是google, 阿里巴巴等大公司,工具比较成熟和稳定。

1.3 Hudson 工具,web 界面控制。

2. 软件自动化

软件自动化: 包括自动化检出,自动化编译,自动化生成,自动化测试,自动化部署等功能. 商业功能测试自动化工具:目前有QTP (主要帮助测试人员完成软件的功能测试) 。 RationalRobot (业内最顶尖的功能测试工具).

WinRunner

QuickTest Professional (针对GUI 应用程序,包括传统的Windows 应用程序,以及现在越来越流行的web 应用)

SilkTest 等.

软件自动化测试,适合以下条件: 1. 软件需求变动不频繁 2. 项目的周期足够长 3. 自动化测试脚本可重复使用。 3. 工具的使用

3.1 buildbot 工具(主要用python 编写) 在阿里巴巴大型c++研发项目中已经被证明是高效的持续集成运转的重要一环, 正发挥check in build/daily build/daily test重要功效, 比较成熟. (注: 主要使用在unix ,aix 等平台). 这个工具主要依赖依赖Twisted 和Python ,不依赖于hudson 等界面配置工具,且国内外的大公司软件开发多以unix 平台为主,windows 平台开发很少见,而国内的小公司多以window 平台开发为主,自动化水平低,依赖于VC 工具. Buildbot 工具能够做到以下几点:

1. checkout from the souce repository

2. build

3. create binary package(s) / installer

4. create source package(and check completeness)

5. run regression tests

Buildbot 能够在以下平台工作:

Window xp x86(WIN32 ,little endian ,vs 9)

Window xp x86-64(win64,little endian, vs 9)

Ubuntu x86-64(Linux,little endian ,gcc)

Solaris SPARC(Solaris ,big endian,gcc)

Mac OS-X PPC( BSD ,big endian ,gcc)

MAC OS-X x86(BSD ,little endian ,gcc)

3.2 Marven 工具:依赖于JDK 运行,跨平台,主要是应用在java ,jsp ,web 方面,作为插件集成

在eclipse 方面,能够在eclipse 界面里面以命令行的方式提供 构建,生成,自动测试,部署等功能,对c++的支持比较少(主要依赖pom.xml 文件进行配置和极少的c++本地化插件),对java 工程支持的非常多而且比较成熟(插件比较丰富),.

4. hudson 工具:

hudson 工具:目前非常流行的开源CI 服务器,持续集成(CI)是一种实践,旨在缓和和稳固软件的构建过程。

4.1 CI 服务器通常会通过某种控制台来进行项目的配置和调试,并且根据请求响应相应的操作,诸如即时构建、生成报告,或者检索构件。

4.1 hudson工具是日本人用java ,jsp 所写,能够像eclipse 一样集成marven ,对marven 进行配置,部署, 也可以单独使用(部署在tomcat 服务器下以及单独运行)

单独运行命令: java –DHUDSON_HOME=D:\hudson -jar hudson.jar

4.2 hudson 集成marven 对java,web 的自动化支持比较成熟,但对c++,特别是对vc(MFC)的支持非常少。

4.3 hudson 通过web 方式运行,通过web 方式访问(http://localhost:8080/hudson)

4.4 有丰富的VS2010编译,测试(MSTest.exe )工具插件.

5. 可能的实现方案:

1. 使用批处理的方式进行自动化检出,编译,生成,部署,但是必须自己编写makefile 文件

和批处理文件, 比较复杂.

2. 选择工具如hudson 并且还需要部分实现其中的一些对vs2010的支持的插件实现自动化。

3. 编程实现,也需要自己写makefile 文件

成和部署功能>

考虑到未来会使用vs2010开发工具,故目前选择的方案:

Hudson + svn + vs2010 三个工具。

1. 目前使用hudson + svn + vs2010 ,实现了远程的(定时以及update 时) 自动化检出,

构建,自动生成,自动邮件通知(当构建失败时可以发邮件通知) 功能。但hudson 对

vs2010的自动测试,部署功能还没有实现。

后续建议:我们可以以hudson 为基础,认真学习和熟悉此平台,(熟悉和灵活运用vs2010工具,我们使用的功能大概只有10%左右,开发vs 插件或写批处理) 持续的进行后续的自动化集成、改进来提高我们发展部门实时库的自动化水平来适合未来的发展。

6. VS2010 的本身的测试自动化(本身平台包括开发平台和测试平台)

VS2010本身的测试自动化水平功能异常强大,(摘自网上资料)

1. VS2010提供了一个叫作"Test Impact Analysis"的功能,有人把它译成“测试影响分析”,我觉叫它

“测试株连分析”似乎更贴切些。利用这一功能,开发人员在修改完代码、要进行单元回归测试时,可以很容易地把确实受到此次代码改动影响的测试挑出来,而把绝大多数不相干的测试全都过滤掉。假设某开发人员只修改了某个类中的一个方法,那么他只须通过"Test Impact Analysis" 把涉及到这个发法的可能也就是三、五个单元测试挑出来再运行一遍就行了(参考图

1),而无须象以往那样把所有相关或不相关的单元测试全都再跑一遍了。

2. VS2010功能测试中有Test Manager 功能,即bug 信息收集机制,能够自动记录测试时的操作步骤和屏幕截图,以方便bug 复现(包括每一步测试操作,屏幕截图,操作日志,系统配置信息,事件记录,系统运行时轨迹,带时间索引的操作视频,测试环境快照的操作视频) 。

3. 自动还原测试环境。

如果测试人员A 在她的Bug 报告中附一个其所测系统的环境快照的链接,那么开发人员B 就可以通过这个链接直接进入A 的测试环境,而且是直接跳回A 发现那个Bug 的时刻,然后在一个完全复原的“历史场景”中进行Debug 。这种科幻式的效果就是通过VS 2010中"Lab Management"这一功能变成现实的。

4. 其他很多功能。

7. 软件自动化测试方面的作用和效果:(摘自网上资料)

目前,软件测试自动化的研究领域主要集中在软件测试流程的自动化管理以及动态测试的自动化(如单元测试、功能测试以及性能测试方面)。在这两个领域,与手工测试相比,测试自动化的优势是明显的。首先自动化测试可以提高测试效率,使测试人员更加专注于新的测试模块的建立和开发,从而提高测试覆盖率; 其次,自动化测试更便于测试资产的数字化管理,使得测试资产在整个测试生命周期内可以得到复用,这个特点在功能测试和回归测试中尤其具有意义; 此外,测试流程自动化管理可以使机构的测试活动开展更加过程化,这很符合过程改进的思想。根据OppenheimerFunds 的调查,在2001年前后的3年中,全球范围内由于采用了测试自动化手段所实现的投资回报率高达1500%。

8. 自动化工具的使用有利于软件的过程持续改进,提高工作效率,是一个长期积累的过程。

附1 HUDSON 资料:

1. 安装

1.1 下载Hudson war 包

1.2 安装 SVN

1.3 安装Tomcat6.x(Tomcat5.x也可以)

1.4 部署HUDSON.WAR 到Tomcat6目录.

1.5依赖JDK5,需安装JAVA RUNTIME .

2. 功能:

2.1持续、自动的构建/测试软件项目 ,如cruiseControl 与DamageControl.

2.2 监控一些定时执行的任务。

Hudson 拥有的特性包括:

∙ 易于安装-只要把hudson.war 部署到servlet 容器,不需要数据库支持。 易于配置-所有配置都是通过其提供的web 界面实现。 集成RSS/E-mail/IM-通过RSS 发布构建结果或当构建失败时通过e-mail 实时通知。 生成JUnit/TestNG测试报告。 分布式构建支持-Hudson 能够让多台计算机一起构建/测试。 文件识别- Hudson能够跟踪哪次构建生成哪些jar ,哪次构建使用哪个版本的jar 等。 插件支持-Hudson 可以通过插件扩展,你可以开发适合自己团队使用的工具。 附3 .持续集成(CI)

持续集成(CI)是整个软件开发生命周期内侧重保证代码质量的做法。目标为软件构建自动化,

持续的自动的构建检查,持续自动的构建测试,构件生成后的后续过程的自动化(包括文档,打包,软件部署构建到运行环境或者软件仓库).

附2 概述:能力成熟模型

参照是模型最近的文档CME / SEI-93-TR-24。

表1:成熟等级的特点

1级:初始 软件过程被认为是特别的,有时甚至是混乱的。很少有详细定义的过程,而且成功取决于个人努力。

2级:可重复的 基本项目管理过程被建立起来,能够跟踪成本,时间进度和功能。必要的过程原则能够在有着相似应用程序的项目上重复早期的成功。

3级:清楚定义的 管理和工程活动的软件过程都被文档所记录和标准化,并被集成入一个标准的软件过程以备组织使用。所有项目都使用一个被认可的,专用版本的开发和维护软件的组织标准软件过程。

4级:良好管理的 详细的对软件过程的度量和产品质量信息被收集起来。软件过程和产品被量化地理解和控制。

5级:最优化 从过程和领先的创新思想及技术中获得的量化的反馈激活了不断的过程改进。

软件自动化报告

地址:192.168.1.162 http://localhost:8081/hudson

软件的自动化是一个持续改进的过程, 体现着公司的能力成熟度CMM 等级(附1) 。 1. 目前免费成熟的自动化工具

1.1 应用在java 项目的自动化工具主要是maven. 工具

1.2 应用在c++ 方面的主要工具是buildbot (开源) 工具,代表公司是google, 阿里巴巴等大公司,工具比较成熟和稳定。

1.3 Hudson 工具,web 界面控制。

2. 软件自动化

软件自动化: 包括自动化检出,自动化编译,自动化生成,自动化测试,自动化部署等功能. 商业功能测试自动化工具:目前有QTP (主要帮助测试人员完成软件的功能测试) 。 RationalRobot (业内最顶尖的功能测试工具).

WinRunner

QuickTest Professional (针对GUI 应用程序,包括传统的Windows 应用程序,以及现在越来越流行的web 应用)

SilkTest 等.

软件自动化测试,适合以下条件: 1. 软件需求变动不频繁 2. 项目的周期足够长 3. 自动化测试脚本可重复使用。 3. 工具的使用

3.1 buildbot 工具(主要用python 编写) 在阿里巴巴大型c++研发项目中已经被证明是高效的持续集成运转的重要一环, 正发挥check in build/daily build/daily test重要功效, 比较成熟. (注: 主要使用在unix ,aix 等平台). 这个工具主要依赖依赖Twisted 和Python ,不依赖于hudson 等界面配置工具,且国内外的大公司软件开发多以unix 平台为主,windows 平台开发很少见,而国内的小公司多以window 平台开发为主,自动化水平低,依赖于VC 工具. Buildbot 工具能够做到以下几点:

1. checkout from the souce repository

2. build

3. create binary package(s) / installer

4. create source package(and check completeness)

5. run regression tests

Buildbot 能够在以下平台工作:

Window xp x86(WIN32 ,little endian ,vs 9)

Window xp x86-64(win64,little endian, vs 9)

Ubuntu x86-64(Linux,little endian ,gcc)

Solaris SPARC(Solaris ,big endian,gcc)

Mac OS-X PPC( BSD ,big endian ,gcc)

MAC OS-X x86(BSD ,little endian ,gcc)

3.2 Marven 工具:依赖于JDK 运行,跨平台,主要是应用在java ,jsp ,web 方面,作为插件集成

在eclipse 方面,能够在eclipse 界面里面以命令行的方式提供 构建,生成,自动测试,部署等功能,对c++的支持比较少(主要依赖pom.xml 文件进行配置和极少的c++本地化插件),对java 工程支持的非常多而且比较成熟(插件比较丰富),.

4. hudson 工具:

hudson 工具:目前非常流行的开源CI 服务器,持续集成(CI)是一种实践,旨在缓和和稳固软件的构建过程。

4.1 CI 服务器通常会通过某种控制台来进行项目的配置和调试,并且根据请求响应相应的操作,诸如即时构建、生成报告,或者检索构件。

4.1 hudson工具是日本人用java ,jsp 所写,能够像eclipse 一样集成marven ,对marven 进行配置,部署, 也可以单独使用(部署在tomcat 服务器下以及单独运行)

单独运行命令: java –DHUDSON_HOME=D:\hudson -jar hudson.jar

4.2 hudson 集成marven 对java,web 的自动化支持比较成熟,但对c++,特别是对vc(MFC)的支持非常少。

4.3 hudson 通过web 方式运行,通过web 方式访问(http://localhost:8080/hudson)

4.4 有丰富的VS2010编译,测试(MSTest.exe )工具插件.

5. 可能的实现方案:

1. 使用批处理的方式进行自动化检出,编译,生成,部署,但是必须自己编写makefile 文件

和批处理文件, 比较复杂.

2. 选择工具如hudson 并且还需要部分实现其中的一些对vs2010的支持的插件实现自动化。

3. 编程实现,也需要自己写makefile 文件

成和部署功能>

考虑到未来会使用vs2010开发工具,故目前选择的方案:

Hudson + svn + vs2010 三个工具。

1. 目前使用hudson + svn + vs2010 ,实现了远程的(定时以及update 时) 自动化检出,

构建,自动生成,自动邮件通知(当构建失败时可以发邮件通知) 功能。但hudson 对

vs2010的自动测试,部署功能还没有实现。

后续建议:我们可以以hudson 为基础,认真学习和熟悉此平台,(熟悉和灵活运用vs2010工具,我们使用的功能大概只有10%左右,开发vs 插件或写批处理) 持续的进行后续的自动化集成、改进来提高我们发展部门实时库的自动化水平来适合未来的发展。

6. VS2010 的本身的测试自动化(本身平台包括开发平台和测试平台)

VS2010本身的测试自动化水平功能异常强大,(摘自网上资料)

1. VS2010提供了一个叫作"Test Impact Analysis"的功能,有人把它译成“测试影响分析”,我觉叫它

“测试株连分析”似乎更贴切些。利用这一功能,开发人员在修改完代码、要进行单元回归测试时,可以很容易地把确实受到此次代码改动影响的测试挑出来,而把绝大多数不相干的测试全都过滤掉。假设某开发人员只修改了某个类中的一个方法,那么他只须通过"Test Impact Analysis" 把涉及到这个发法的可能也就是三、五个单元测试挑出来再运行一遍就行了(参考图

1),而无须象以往那样把所有相关或不相关的单元测试全都再跑一遍了。

2. VS2010功能测试中有Test Manager 功能,即bug 信息收集机制,能够自动记录测试时的操作步骤和屏幕截图,以方便bug 复现(包括每一步测试操作,屏幕截图,操作日志,系统配置信息,事件记录,系统运行时轨迹,带时间索引的操作视频,测试环境快照的操作视频) 。

3. 自动还原测试环境。

如果测试人员A 在她的Bug 报告中附一个其所测系统的环境快照的链接,那么开发人员B 就可以通过这个链接直接进入A 的测试环境,而且是直接跳回A 发现那个Bug 的时刻,然后在一个完全复原的“历史场景”中进行Debug 。这种科幻式的效果就是通过VS 2010中"Lab Management"这一功能变成现实的。

4. 其他很多功能。

7. 软件自动化测试方面的作用和效果:(摘自网上资料)

目前,软件测试自动化的研究领域主要集中在软件测试流程的自动化管理以及动态测试的自动化(如单元测试、功能测试以及性能测试方面)。在这两个领域,与手工测试相比,测试自动化的优势是明显的。首先自动化测试可以提高测试效率,使测试人员更加专注于新的测试模块的建立和开发,从而提高测试覆盖率; 其次,自动化测试更便于测试资产的数字化管理,使得测试资产在整个测试生命周期内可以得到复用,这个特点在功能测试和回归测试中尤其具有意义; 此外,测试流程自动化管理可以使机构的测试活动开展更加过程化,这很符合过程改进的思想。根据OppenheimerFunds 的调查,在2001年前后的3年中,全球范围内由于采用了测试自动化手段所实现的投资回报率高达1500%。

8. 自动化工具的使用有利于软件的过程持续改进,提高工作效率,是一个长期积累的过程。

附1 HUDSON 资料:

1. 安装

1.1 下载Hudson war 包

1.2 安装 SVN

1.3 安装Tomcat6.x(Tomcat5.x也可以)

1.4 部署HUDSON.WAR 到Tomcat6目录.

1.5依赖JDK5,需安装JAVA RUNTIME .

2. 功能:

2.1持续、自动的构建/测试软件项目 ,如cruiseControl 与DamageControl.

2.2 监控一些定时执行的任务。

Hudson 拥有的特性包括:

∙ 易于安装-只要把hudson.war 部署到servlet 容器,不需要数据库支持。 易于配置-所有配置都是通过其提供的web 界面实现。 集成RSS/E-mail/IM-通过RSS 发布构建结果或当构建失败时通过e-mail 实时通知。 生成JUnit/TestNG测试报告。 分布式构建支持-Hudson 能够让多台计算机一起构建/测试。 文件识别- Hudson能够跟踪哪次构建生成哪些jar ,哪次构建使用哪个版本的jar 等。 插件支持-Hudson 可以通过插件扩展,你可以开发适合自己团队使用的工具。 附3 .持续集成(CI)

持续集成(CI)是整个软件开发生命周期内侧重保证代码质量的做法。目标为软件构建自动化,

持续的自动的构建检查,持续自动的构建测试,构件生成后的后续过程的自动化(包括文档,打包,软件部署构建到运行环境或者软件仓库).

附2 概述:能力成熟模型

参照是模型最近的文档CME / SEI-93-TR-24。

表1:成熟等级的特点

1级:初始 软件过程被认为是特别的,有时甚至是混乱的。很少有详细定义的过程,而且成功取决于个人努力。

2级:可重复的 基本项目管理过程被建立起来,能够跟踪成本,时间进度和功能。必要的过程原则能够在有着相似应用程序的项目上重复早期的成功。

3级:清楚定义的 管理和工程活动的软件过程都被文档所记录和标准化,并被集成入一个标准的软件过程以备组织使用。所有项目都使用一个被认可的,专用版本的开发和维护软件的组织标准软件过程。

4级:良好管理的 详细的对软件过程的度量和产品质量信息被收集起来。软件过程和产品被量化地理解和控制。

5级:最优化 从过程和领先的创新思想及技术中获得的量化的反馈激活了不断的过程改进。


相关内容

  • 原子荧光光度计软件操作手册-终20150108
  • AFS系列 原子荧光光度计软件 Ver.7.4操作手册 北京海光仪器有限公司 Beijing Haiguang Instrument Co.,Ltd. AFS系列原子荧光光度计软件Ver.7.4操作手册 京制01050061号 2014C100-11 2014C313-11 版权声明 北京海光仪器有 ...

  • 运维管理系统调研报告 V1.1
  • 运维管理系统调研报告 1 运维管理系统简介 1.1 IT 运维 IT 运维管理是时下IT 界最热门的话题之一,随着IT 建设的不断深入和完善,计算机硬软件系统的运行维护已经成为了各行各业各单位领导和信息服务部门普遍关注和不堪重负的问题.由于这是一个随着计算机信息技术的深入应用而产生的新课题,因此如何 ...

  • 关于软件测试行业现状的调查报告
  • | | | | 华北电力大学科技学院 调 研 报 告 实验名称课程名称 软件测试 专业班级: 学生姓名: 学 号: 成 绩: 指导教师: 实验日期: 软件测试行业现状调查报告 中国软件测试的发展及现状分析: 一. 软件测试的发展及现状分析: 中国的软件测试技术研究主要是随着软件工程的研究而逐步发展起 ...

  • 中国软件测试行业现状调查报告
  • 中国软件测试行业现状调查报告 中国软件测试的发展及现状分析: 软件测试的发展及现状分析 一. 中国软件测试的发展及现状分析: 中国的软件测试技术研究主要是随着软件工程的研究而逐步发 展起来的,由于起步较晚,与国际先进水平相比差距较大,故仍处于 起步阶段.随着我国软件产业的蓬勃发展以及对软件质量的重视 ...

  • 软件测试教学大纲(课程标准)
  • <软件测试>教学大纲 课程编码 03010302 课程时数 48 适用专业 计算机应用技术及软件技术 授课对象 大三 一.课程性质.目的和任务 软件测试技术课程是计算机技术技术及软件技术专业的一门重要专业课.本课程将主要介绍软件测试的基本知识和基本方法.通过学习软件测试理论知识和业界主流 ...

  • 办公自动化方案与实施
  • 办公自动化软件可行性报告和开发前的准备分析 一 .可行性报告 针对油田的具体需求,结合油田系统的应用 1. 经济可行性. 对项目进行价格-利益分析,比较项目开发的成本与从所开发的系统中得到的利益,即研究项目的投入和产出关系. 2. 技术可行性.分析项目开发所涉及的各种技术因素,系统开发所涉及的软.硬 ...

  • 软件测试及常用测试方法解析
  • 关于软件测试及常用测试方法解析 1. 软件测试的背景 随着计算机技术的飞速发展,软件产品已经逐步渗入到国民经济和社会生活的各个方面,软件产业的兴起在关乎国计民生的各个行业中发挥了重要的作用,带动了传统产业的技术改革与科技创新.软件产品的成功引入和产生的巨大效益也使单位或企业对软件产品的需求与日俱增. ...

  • 什么是软件测试工程师
  • 什么是软件测试工程师 软件测试就是使用人工或自动手段,来运行或测试某个系统的过程.其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别.开发工作的根本是尽量实现软件用户的需求,测试工作的根本是检验软件系统是否满足软件用户的需求. 软件测试工程师具体工作有: 1. 测试和发现软件中存在 ...

  • 软件需求分析报告
  • 软件需求分析报告 1. 引言 本文档是为自动作曲系统所编写的软件需求分析报告.文档主要包括文档说明,软件的综合描述等几个方面,用于指导软件的开发以及对软件相关功能的说明 1.1 编写目的 由于国内版权意识不断加强,使音乐的使用价格既版权价格不断升高,而自动作曲系统所生成的歌曲具有无版权,形式多样等特 ...