互联网越来越红火,更多的App,更快的迭代,更多软件的更新甚至到了一周一更新,苦逼的程序员们要面对更多的加班。开发,测试,报bug,修bug,测试,发布,在这种无休止中恶心循环。时间紧迫,为了减少开发和测试的沟通成本,很多公司的开发以及开始承担一部分测试工作了,劳动强度可见一斑 。那么问题来了,如何轻松完成开发测试工作?
不得不说说持续集成了,持续集成也叫做CI(continous Integration)。感觉持续集成天生就是为Scrum(有的地方也叫敏捷)而生的。现在很多公司已经在内部使用Scrum的管理方式了,形成Scrum Team,以一周,两周或者四周为一个迭代。那么在这一个迭代里面,我们要完成新功能的开发,测试和交付。对应的工作有,开发或者修改bug,提交代码,功能测试,回归测试(不同的Sprint可能具体任务不同)。那么持续集成是如何在这些工作中发挥作用的呢?
现在代码写好了,要存到代码仓库, 比如Git/SVN/CVS/CC,等等很多。如何保证提交的代码正确和有效?我们一般需要通过编译和打包去验证。如何保证开发的新功能或者修好了BUG? 需要去执行Unit case (当然还是会有部分手工测试的,后面再说)。如何保证新的修改不能影响到以前的功能?需要去执行回归测试。有这么多的工作,一定会花很多时间吧?其实不然, 我们可以好好利用持续集成去做这些事情,根本不需要你动手,只需收收邮件,查看一下测试结果就好了。那么持续集成是怎么做到的呢?
首先说一下持续集成的架构,现在有很多开源的产品来支持它了。比如Jenkins(以前叫做Hudson),它是一种master/slave架构的软件,安装在Master的机器上,可以不断添加机器作为它的slave,分配不同的任务给不同的slave去执行。还可以和许多软件一起集成工作,比如Gerrit/Sonar/Docker/.... ,随着支持的插件越来越多,集成的软件也越来越多。
有了它,我们工作就变成另外一种场景了。提交代码到Gerrit, 触发verify job去执行代码检查任务(自带的活着第三方的工具,如Sonar),编译,打包,执行Unit 测试或者功能测试。中间有任何问题,关注的人可以收到邮件的提醒和通知。每天晚上定时执行自动化测试的任务,第二天早上,打开邮箱就可以看到测试报告,可以相应做出工作安排和调整。等到软件发布的时候,点击一个按钮,自动化编译,打包成可执行的软件,交付给用户。这种工作是不是很惬意?
其实要想轻松,还远没有那么简单,很明显测试用例的自动化率是一个前提。只有提高了测试用例的自动化率才能够做到真正的轻松。那么如何提高呢?这个问题也是长期困扰我的。我是做TV客户端,有很多平台,PC /Mac /Mobile(Android/iPhone/Pad)等等,客户端是一个portal,不同的平台的解决方案也是不一样的,要写自动化的测试用例是很困难的。我们的策略是,对于公共的部分,我们提取公共的接口,对接口进行测试,对于不同的测试用例,我们按照实现的难易程度去实现自动化。公共接口部分完全使用了自动化,自动39%。剩下的测试用例,难以实现的原因是有一部分是需要人工操作和识别判断的,后来我们发现,这部分我们可以使用脚本来实现,主要是python的脚本,识别和判断的部分,我们使用MIT的开源工具Sikuli去做,这样自动化率就可以提高到69%了。这样还有一个额外的好处是,开发人员可以用自己喜欢的方式去做测试了,做开发的一半都很懒,特别讨厌做重复,简单,粗暴的工作了,设计自动化框架和编写自动化测试是一个新方向。对于测试人员来说也是一个学习编程的好机会,会写程序的测试才是好测试(个人见解)。
相关推荐
移动应用的持续集成和持续交付.pdf
在当今移动应用开发中,自动化测试与持续集成是提高开发效率和保障软件质量的重要手段。Xcode Server作为一个集成于Xcode环境的持续集成工具,非常适合用于iOS应用的自动化测试与持续集成。 首先,要了解自动化测试...
在现代软件开发过程中,持续集成(CI)已成为确保代码质量和加快开发流程的重要工具之一。本文将详细介绍如何利用Jenkins、Gradle、Git 和 CentOS 来实现 Android 项目的持续集成与自动化打包。 #### 一、持续集成...
在本案例中,"appnium+robotframework" 的持续集成脚本是用来自动化移动应用的测试过程。 【Appium】是一个开源的自动化测试框架,它允许开发者为iOS、Android以及Windows平台编写自动化测试用例。Appium基于...
这些工具在持续集成和软件开发过程中扮演着至关重要的角色。它们不仅提高了软件开发的效率和质量,还促进了团队之间的协作和沟通。通过合理的集成和使用这些工具,可以显著提升软件项目的整体管理水平。
在现代软件开发流程中,持续集成(Continuous Integration,简称CI)是一种实践,使得开发团队可以频繁地将代码集成到共享仓库中。每次代码提交后,通过自动化的构建(包括编译、测试和部署)来验证,从而尽快地发现...
在持续集成的过程中,自动化测试不仅可以帮助快速发现代码中的问题,还可以通过持续反馈机制促进团队改进开发流程。 #### 第5章:实例分析:自动化测试与持续集成在项目中的应用 本章节将通过具体的项目案例来展示...
### 移动应用技术在坚强智能电网中的作用 #### 一、引言 随着信息技术的快速发展,特别是无线通信技术和移动设备技术的进步,移动应用技术在各行各业的应用变得越来越广泛。其中,坚强智能电网作为电力行业的核心...
2. **持续集成案例分析**:在实际项目中,持续集成的应用可以显著提升团队的工作效率和产品质量。通过持续集成,团队可以及时发现和解决代码集成问题,确保代码的稳定性和可靠性。 3. **持续集成工具的选择和配置**...
10. **持续集成和部署**:对于移动Web应用,持续集成和自动化部署也是重要环节。开发者需要了解如何将应用部署到各种移动设备的服务器环境,并进行版本控制。 通过理解并掌握以上知识点,开发者可以有效地利用移动...
- **持续集成案例分析**:在实际项目中应用持续集成可以显著提升团队的工作效率和产品质量。 **持续集成工具的选择和配置** - **合理选择**:团队需要根据项目的实际情况选择合适的持续集成工具。 - **合理配置**...
2. **持续集成案例分析**:在实际项目中应用持续集成可以显著提升团队的工作效率和产品质量。通过持续集成,团队可以及时发现和解决代码集成问题,确保代码的稳定性和可靠性。 3. **持续集成工具的选择和配置**:...
### 软件工程中的持续集成与交付技术 #### 第1章:软件工程概述 - **定义**:软件工程作为一门学科,涵盖了软件从概念到完成的整个生命周期,包括需求分析、设计、编码、测试、部署及后续维护等多个环节。 - **...
移动应用的持续集成与自动化测试已经成为现代移动应用开发的关键组成部分,尤其在当前移动业务迅速增长的背景下,这种自动化流程的引入能显著提升开发效率和产品质量。持续集成(Continuous Integration, CI)与自动...
- **持续集成案例分析**:在实际项目中,持续集成的应用可以显著提升团队的工作效率和产品质量。 - **工具选择与配置**:根据项目特点和团队规模选择合适的持续集成工具,并进行合理的配置。 通过上述内容,我们...
### 软件测试中的自动化测试与持续集成 #### 第1章:软件测试与自动化测试概述 ##### 一、什么是软件测试? 软件测试是软件开发过程中一个至关重要的环节,其主要目的是发现并纠正软件中存在的潜在错误和缺陷。...
【移动应用个性化集成框架】 移动应用个性化集成框架是针对当前移动应用开发中面临的挑战而提出的一种创新性解决方案。...随着移动应用市场的持续发展,这样的框架有望在未来的应用开发中发挥更大的作用。
Appium 是一款用于移动应用测试的强大工具,支持跨平台测试,即可以在 Android 和 iOS 平台上同时进行测试。它具有高度的灵活性和扩展性,支持自定义关键字,适用于各种复杂的测试场景。 **JUnit 和 TestNG:** ...
### 软件工程中的软件测试自动化与持续集成 #### 第1章 软件测试自动化与持续集成概述 **软件测试自动化与持续集成的概念** - **软件测试自动化**:指利用工具或脚本来自动执行测试用例的过程,旨在提高测试效率...
移动应用成为企业业务发展的重要工具,快速迭代和持续集成是提高开发效率的关键。随着敏捷开发理念的普及和用户对更新速度要求的提升,传统的开发流程已无法满足现代移动应用快速迭代的需求。 2. 传统APP开发工作...