DevQAOps:
Surviving in a
DevOps World
A presentation by Winston Laoh
How important is QA?
Everybody in the real world will agree - the
moment a project is behind deadline, quality
assurance tends to go out the window.
- Alan Cox (Key Linux Developer)
Agenda
➔ Introductions
Who is this guy?
➔ Status Quo
What’s going on?
➔ Evolution
What
should we do?
➔ Tools
What can we use?
➔ Demo
Show
me!
Test early, test often,
fail fast, and fail loud.
Winston Laoh
github.com/wlaoh
winston.laoh@gmail.com
@WinstonLaoh
What can we do as quality
engineers while the
industry rapidly changes
towards faster and
automated development?
DevOps
Everyone is involved in all
steps of the process.
Frequent feedback at each
stage.
As much automation as
possible.
Infrastructure as code.
Facebook DevOps Case Study:
10-100s of releases an hour
Each release rolled out to 100% in
a few hours
Fully automated with gatekeepers
What have we
done so far?
➔ Test automation
Unless there’s a release coming up, or
something needs to be manually
tested, or nobody wants to (or can).
➔ Got closer to development
Physically moved desks closer to
developers, attended standups
➔ Release management
Got stuck with making sure code
got out in accordance with Product’s
ridiculous deadlines.
What can we do as quality
engineers while the
industry rapidly changes
towards faster and
automated development?
Adapt!
Own the process, all of it.
What the best tech companies are
looking for:
Our team builds elegant
tools to enable all
developers at Airbnb to
experience joy while
quickly developing,
testing, and shipping high-
quality code.
You must be passionate
about test automation and
understand that test
automation is a software
project and is subject to
the same discipline of
execution as any other
projects (tracking, design,
branching, testing
deployment etc.)
Docker, Software Engineer
in Test
We ensure Google's
success by partnering with
engineering teams and
developing scalable tools
and infrastructure that
help engineers develop,
test, debug and release
software quickly.
Google, Software Engineer,
Tools and Infrastructure
Airbnb, Software Engineer
(Developer Infrastructure)
Skills
➔ Tooling
➔ Operations
➔ Testing
➔ Performance
➔ Security
➔ Site Reliability
➔ Development
Meet Docker.
Build once, ship anywhere.
1. Dockerfile
2. Integration
3. Repository
4. Use
Use this system for test automation!
Continuous
Integration
Delivery
A sample of tools
➔ Automation frameworks
➔ CI/CD Pipelines
➔ Reporting
➔ Monitoring
Implementation
Automation Dev Laptop Source Control Environments Production
Build tests
Tests should be separately
built, integrated, and
deployed.
Test locally
Unit atleast, integration
and e2e optional
depending on speed
Continuous
integration
More tests to protect
master/release branch
Feature testing
If needed, this is where
manual testing happens
Continuous
delivery
All tests passed?
Push to production.
How we fit in
➔ Building test automation tools
Using SDLC, develop
framework/process
➔ Build tools to speed development
Faster development means better
quality
➔ Build the test automation pipeline
Build and ship those tests everywhere
➔ Integrate testing into source control
Make testing a gateway into master/release
➔ CI/CD pipeline
Add gatekeepers, increase efficiency
➔ Monitoring and Reporting
Build and maintain the framework to
collect and alert on work/resource/event
Demo
Github
Robot Framework
Docker
TravisCI
Docker Hub
Questions?

DevQAOps - Surviving in a DevOps World

  • 1.
    DevQAOps: Surviving in a DevOpsWorld A presentation by Winston Laoh
  • 2.
    How important isQA? Everybody in the real world will agree - the moment a project is behind deadline, quality assurance tends to go out the window. - Alan Cox (Key Linux Developer)
  • 3.
    Agenda ➔ Introductions Who isthis guy? ➔ Status Quo What’s going on? ➔ Evolution What should we do? ➔ Tools What can we use? ➔ Demo Show me!
  • 4.
    Test early, testoften, fail fast, and fail loud.
  • 5.
  • 6.
    What can wedo as quality engineers while the industry rapidly changes towards faster and automated development?
  • 7.
    DevOps Everyone is involvedin all steps of the process. Frequent feedback at each stage. As much automation as possible. Infrastructure as code.
  • 8.
    Facebook DevOps CaseStudy: 10-100s of releases an hour Each release rolled out to 100% in a few hours Fully automated with gatekeepers
  • 10.
    What have we doneso far? ➔ Test automation Unless there’s a release coming up, or something needs to be manually tested, or nobody wants to (or can). ➔ Got closer to development Physically moved desks closer to developers, attended standups ➔ Release management Got stuck with making sure code got out in accordance with Product’s ridiculous deadlines.
  • 11.
    What can wedo as quality engineers while the industry rapidly changes towards faster and automated development?
  • 12.
  • 13.
    What the besttech companies are looking for: Our team builds elegant tools to enable all developers at Airbnb to experience joy while quickly developing, testing, and shipping high- quality code. You must be passionate about test automation and understand that test automation is a software project and is subject to the same discipline of execution as any other projects (tracking, design, branching, testing deployment etc.) Docker, Software Engineer in Test We ensure Google's success by partnering with engineering teams and developing scalable tools and infrastructure that help engineers develop, test, debug and release software quickly. Google, Software Engineer, Tools and Infrastructure Airbnb, Software Engineer (Developer Infrastructure)
  • 14.
    Skills ➔ Tooling ➔ Operations ➔Testing ➔ Performance ➔ Security ➔ Site Reliability ➔ Development
  • 15.
    Meet Docker. Build once,ship anywhere. 1. Dockerfile 2. Integration 3. Repository 4. Use Use this system for test automation!
  • 16.
  • 17.
    A sample oftools ➔ Automation frameworks ➔ CI/CD Pipelines ➔ Reporting ➔ Monitoring
  • 18.
    Implementation Automation Dev LaptopSource Control Environments Production Build tests Tests should be separately built, integrated, and deployed. Test locally Unit atleast, integration and e2e optional depending on speed Continuous integration More tests to protect master/release branch Feature testing If needed, this is where manual testing happens Continuous delivery All tests passed? Push to production.
  • 19.
    How we fitin ➔ Building test automation tools Using SDLC, develop framework/process ➔ Build tools to speed development Faster development means better quality ➔ Build the test automation pipeline Build and ship those tests everywhere ➔ Integrate testing into source control Make testing a gateway into master/release ➔ CI/CD pipeline Add gatekeepers, increase efficiency ➔ Monitoring and Reporting Build and maintain the framework to collect and alert on work/resource/event
  • 20.
  • 21.

Editor's Notes

  • #8 DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market. - AWS Single team working across the entire lifecycle (Dev, test, deploy, operations) Frequent feedback at each step Automation
  • #10 Ask audience how many practice DevOps?
  • #14 Google - The faster this line of code reaches millions of users, the sooner it impacts their lives. As a Software Engineer, Tools and Infrastructure, you will be at the heart of Google’s engineering process building software that empowers engineering teams to develop and deliver high quality products quickly. We are focused on solving the hardest, most interesting challenges of developing software at scale without sacrificing stability, quality, velocity or code health. Having access to all of Google's platforms and vast compute resources provides a unique opportunity to grow as an engineer. We typically work in small, nimble teams that collaborate on common problems across products and focus areas. As a result, the exposure to this broad set of problems provides diverse technical challenges as well as accelerated career growth. Airbnb - We built Deployboard [talk, talk], our in-house tool for CI/CD. We added support for mixed-language (ObjC / Swift) iOS development to Buck [blog post, now in Buck core] We created a platform for fast, deterministic UI tests for Android [blog post, github] We built Airlab, a cloud-based developer environment We used the latest features in Gradle to enable fast monorepo Java builds (our usage of Gradle's remote build cache was cited during the keynote of Gradle Summit 2017) Every developer at Airbnb can deploy any service they work on at any time. Airbnb has thousands of services, the largest of which has over a hundred developers continuously deploying > 200 changes per day, without a release-management team.
  • #16 Tools: Linux based containers that allow isolated processes separated from the host OS and other containers. Each container has its own dependencies and environment. Allows containers to be pulled anywhere with Docker running. When set up properly, container will have all necessary dependencies. Gives software engineers more exposure to the current trends.
  • #17 Continuous Integration - integrate code into shared repository as often and early as possible. Continuous Delivery - code is always deployable, automated process brings integrated code into production early and often. How Docker can be used
  • #18 Jest and Ginkgo - automation frameworks Jenkins and CircleCI - onprem and hosted CI/CD pipeline Coveralls - code coverage reporting Prometheus - server/container monitoring and alerting Other than automation frameworks - everything else has been traditionally developers
  • #19 Performance and security testing should happen at all stages (static analysis, pen testing, profiling, benchmarks) Each level has bigger more expensive tests with the last one running the full suite Each stage after building tests can easily pull and run the tests from the first step Any stage can easily kick back
  • #20 Test automation tools - includes static analysis, performance testing, pen testing, libraries, packages, etc. Tools to speed development - local envs through docker-compose, makefiles, IDE plugins, etc., allows developers to contribute tests Pipeline - tests should follow the same pipeline as application code Source control - don’t waste time on environments when things could be caught here All of this also applies to infrastructure!