QA,是DevOps不可分割的重要组成之一

发表于:2017-7-24 16:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:朱少民    来源:51Testing软件测试网采编

  QA(Quality Assurance)是DevOps的重要部分,然而它并没有得到应有的重视,让我们好好阅读这篇文章,了解QA在DevOps的应有的地位。
  I wish the term “DevQAOps” sounded as cool as “DevSecOps.” But alas, DevQAOps is hard to say, and DevOps is the term that IT professionals have come to know and love today.
  Unfortunately, the term DevOps leaves one key component of software delivery out of the mix: Quality Assurance, or QA. QA is an essential part of DevOps, but it sometimes gets short shrift in the DevOps conversation.
  (不幸的是,DevOps这个术语让其关键构成——QA不在其中,现在开始流行DevSecOps,咱们也希望流行DevQAOps,后面这两个术语都不易发音,只能将就这个术语DevOps,虽然它可能误导大家)
  To help give QA its due, in this post, I’d like to point out all of the ways in which QA teams play a vital role in DevOps and continuous delivery workflows. I may not be able to rewrite the DevOps lexicon, but I hope at least to get people to think more about how important QA is in our DevOps-centric world.
  QA Shifts Both Left and Right (QA既要左移、又要右移)
  With DevOps, Dev teams look to shift right, assuming responsibility for the reliability of the applications they build, and not leaving it fully to Ops. Similarly, Ops shifts left in an attempt to influence the features and ideas that are spawned in planning and development cycles. However, between these two, QA teams shift both left and right, and are the key enablers for Dev and Ops teams to collaborate effectively. QA teams have a role in defining which features are prioritized by Dev, and ensuring code is of high quality when deployed.
  (DevOps,简单可以看作是开发Dev右移和运维Ops团队左移,Dev对自己构件的软件可靠性/性能负责;Ops要影响整个开发过程中的产品特性的定义、设计和实现。过去我们强调“测试/QA左移”,但我们忘记了,测试也应该右移,实际上许多公司已经这样做了,模拟测试、镜像测试、部署验证测试、在线测试、A/B测试、灰度发布... 这些都是测试右移)
  This high view of QA takes not just QA seeing itself differently, but Dev and Ops teams seeing QA differently, too. Often, QA takes the blame for bad development practices, and any faults that show up post-release. Developers take responsibility for the code they ship. Mark Hrynczak of Atlassian, talking about the future of QA, insists that a great developer is someone who “can capably write and ship high-quality, bug-free code,” and doesn’t insist that QA should catch all their mistakes. The biggest change that DevOps brings to QA is that quality is everyone’s problem, not just QA’s.
  (DevOps带给QA最大的改变是:质量是每个人的问题,而不仅仅是QA的问题——这是进步。我经常强调:质量是构建的,相对QA,开发对质量的贡献和责任更大)
  DevOps Quickens (加快了) QA
  DevOps involves continuous integration (CI) and continuous delivery (CD). They both break the entire software delivery lifecycle down into small chunks that are easier to manage, are limited in scope, and are released more frequently. The pace of development has been quickened. Ops is having to cope with multiple releases every day. All this busyness on either side means that QA also needs to work at a much faster pace. Common issues between QA and other teams—like “works on my machine,” keeping up with version changes, and unclear product specs are all compounded with DevOps.
  (DevOps对整个软件交付生命周期进行分解,使之更容易管理、更有利于快速频繁的发布。这也意味着QA也跟上快节奏,和Dev、Ops同步,及时帮助团队解决需求变更、需求不明确等一系列障碍。)
  Enabling QA teams to perform in this new culture requires a completely new approach to testing, which also means a different toolset. It takes test infrastructure that’s agile, and reliable. That’s the problem that Docker and the container ecosystem (容器生态系统)is solving today. While Docker shot to fame among Developer circles, QA took some time to catch on. But now, Docker’s value in powering testing infrastructure is clear. QA is no longer on the backfoot when it comes to container adoption.
  Containers - Consistency Across the Pipeline
  DevOps is about maintaining consistency across every stage of the development pipeline. Previously, Dev would throw code over the wall for Ops to deploy, and Ops would often push back, saying the code is not deployment-ready. The solution to this deadlock is to have QA enforce quality right from the start.
  (过去Dev、Ops是没打通的,那样的话,QA也许发挥更大作用:全过程的质量管理
  For Dev and QA to speak the same language, they need to be able to easily share all the configuration needed to run an application. The state of an application when an error occurs is important when troubleshooting. This was done manually in bug tracking systems in the past. Now, with Docker, Dev and QA can easily share configuration and the state of an application in a Docker image. The image functions like a snapshot of the application.
  (今天,借助Docker,Dev和QA可以容易地共享配置信息、应用程序状态)
  This consistency doesn’t just help with troubleshooting. It also helps with improving the reliability of an application, as the same container image that’s built and tested is deployed. This brings confidence at every step of the software delivery lifecycle, and improves user experience.
  (借助Docker的镜像,更容易保持测试、部署的一致性,这使我想起之前,我们在release有一条严格的规则:确保部署的版本是最后经过测试的版本,通过md5 验证。这种一致性有利于故障排除和系统的可靠性)
  However, containerizing applications and infrastructure is not simple. While Docker provides the standard container runtime, there are bigger concerns like replication, failover, and automated deployments. This is where an orchestration (编排,NFV 也特别关注服务的编排 ) tool like Kubernetes has a key role to play.
  Container Orchestration for Reliable Deployments
  Kubernetes makes it easy to create and manage multiple environments for test, staging(模拟环境,类似alpha/beta 环境), and production. You could run, for example, test and staging environments in the same cluster and isolate them using Kubernetes’ namespaces(命名空间) feature. The benefits are more simplified management, reduced costs, and better resource utilization. The end result, though, is faster and better QA processes.
  (Kubernetes,主要是帮我们管理好不同的环境——研发测试环境、模拟环境和生产环境等)
  To keep up with the fast pace of development, you need to automate builds, testing, and deployment. Leaving automated testing out will only lead to unstable, low quality releases. Luminis Technologies adopted Kubernetes for container orchestration and saw big improvements in reliability. This is because of how easy Kubernetes makes it to test and ship containers.
  (持续交付依赖于构建、测试、部署等全过程的自动化,就像Jenkins 完成全过程的自动调度,Kubernetes是基于容器技术实现全过程的自动化)
  Running staging and production environments in the same cluster, however, is not ideal, as it creates a whole new set of challenges to ensure the staging environment doesn’t starve production for resources. Still, the benefits of Kubernetes for test infrastructure are hard to overlook.
  (这种挑战是如何确保模拟环境,不会为了抢占资源而让产品“挨饿”,这里如何理解?大家可以留言讨论)
  Discussions around DevOps have left QA out of the picture, even though QA is essential to faster and higher-quality releases within a continuous delivery pipeline.
  QA is in a unique spot where it shifts both left and right to align with Dev and Ops teams to build in quality, reliability, and sustainable speed from the start. To make this happen, QA needs a new kind of infrastructure that’s powered by containers and managed by container orchestration tools. Docker and Kubernetes together give QA teams the wings they need to take flight in this new world of DevOps.
  (不仅左移、右移,而且要借助好的技术与工具,这就是:优秀的质量文化 + 优秀的工具 产生 巨大的能量)
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号