越来越多的企业正在关注DevOps并且已经在大力开展研究和切实推广DevOps,那么什么是DevOps呢?你真的了解DevOps吗?它会对团队带来什么好处和挑战呢?
Wikipedia对DevOps的定义是:
DevOps是软件开发、运维和质量保证三个部门之间的沟通、协作和集成所采用的流程、方法和体系的一个集合。 它是人们为了及时生产软件产品或服务,以满足某个业务目标,对开发与运维之间相互依存关系的一种新的理解。 …… DevOps并不仅仅关注软件部署,它是部门间沟通协作的一组流程和方法。
为了让开发、测部署试,以及运维更好的结合在一起,DevOps至此便成了加速应用交付过程关注的宠儿。有些人认为DevOps有点姗姗来迟,因为业务的成功很显然是取决于高质量软件服务的快速交付。DevOps强调持续开发和集成,在敏捷开发机制下快速发布高质量的可运维级产品,其中软件产品每一个新功能不断添加对整个团队带来了巨大的挑战,传统的质量保障过程及相应的测试方法已经无法完全使用DevOps过程。
Parasoft作为软件测试行业领域的先驱者,一直积极探索先进的测试理念和创新技术,致力于积极推广利于软件行业的先进技术和专业服务。最近,Parasoft针对DevOps在团队中带来的改变和影响,尤其是关于质量管理和测试过程方面,举办了一次”DevOps is an El Nino for Software Testing”研讨会,发起人为 Kelly Looney(Skytap公司的专业DevOps顾问)和Wayne Ariola(Parasoft公司首席战略官和持续测试理念的倡导者)。大量的软件行业专业人士出席了该研讨会,并且在会上进行了激烈的讨论,反响强烈,由此,我们想索引几个关键要点于此以帮助大家更好理解DevOps所带来的变化。
DevOps和Agile对软件测试的影响是怎样的?
随着DevOps的持续发展和不断发展,大家对于测试有了基本共识,传统的手动测试和GUI测试方法已经过时,因为它们太慢,耗时,昂贵,并且无法适应快速的迭代过程以及不断的产品需求变化。
让我们暂时抛却产品的发布周期速度和频率,我们应该需要停止问“我们是否完成测试”这个问题了(测试工作永无止境),而应该讲焦点转移到 — “我们是否拥有一个满足商务需求并商务风险在可控范围的待发布产品?“ 如果软件开发测试团队能够回答这个问题,则可以确定软件产品可以准备交付运维部门了。
传统的自动化测试扩展到持续集成测试有了哪些扩展和变化?
自动化测试是迈向连续测试的关键一步。然而,如果你的一个自动化测试失败了,你知道它意味着什么吗?这是否意味着一个关键的商业风险,或只是违反了一些命名标准,没有人真正知道?当它失败时会发生什么?是否有一个清晰的工作流程来以优先级排序形式标注软件缺陷与商业风险的关联关系以及哪些是急需解决的问题?是否存在一个流程能够帮助团队识别引进软件产品中的大量类似缺陷,以及是否能够在将来快速避免类似问题再次发生?这些问题就是自动化测试和持续集成测试最明显的区别。
1、明确界定企业的期望,与企业的应用、团队和发布的业务风险 。
2自动化应对商务的缺陷优先级处理机制和知晓在产品上线前应如何处理这些风险。
3、保障团队拥有完整的持续集成环境,以便随时测试和开发,这对于保护当前用户体验的变化是至关重要的。
4,缺陷预防回馈机制:紧急严重定式缺陷查找机制,以及基于此的快速应对处理最佳实践,以便预防重复的缺陷问题在将来被引入。
DevOps还需要手工测试吗?
简单来说,团队需要尽可能地实现自动化测试过程。自动化目前以及成为现代测试的基准。也就是说,有些事情做不到自动化,所以一定程度的手工测试可能是不可避免的。确保人工测试不会成为你的测试管道的瓶颈,需要确保它不是你的关键路径——尽可能将手动测试过程作为资源权限许可过程,但不可使其成为自动化过程的限制障碍。
在DevOps中应该如何理解 “QA”?
尽管“QA”这个词起源于“Quality Assurance”,但在很多企业的QA团队更多的在忙于一些细节测试工作,而非整体性地把控产品的质量过程。在现代化的产品开发模式下如DevOps,QA的角色必须转变为质量保证实践者。在这种情况下,质量保证是负责定义和实现一个连续的,积极的软件产品质量管控过程,识别和防止在整个软件生命周期的业务风险,而测试工作只是其中的一个具体实现手段。