Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous (Non)-Functional Testing of Microser...

Continuous (Non)-Functional Testing of Microservices on K8s

Continuous delivery is everywhere. Well, not quite! Many teams still fail to continuously deliver well tested and stable product increments to production. Usually with the same old excuse: these high-level tests are too laborious and expensive to implement. But the opposite could be the case! This session will highlight the challenges and importance of early (non-)functional testing for cloud-native applications. Then, we will show how easy it is to implement continuous performance, security and acceptance tests for microservices based on K8s.

M.-Leander Reimer

February 11, 2021
Tweet

More Decks by M.-Leander Reimer

Other Decks in Programming

Transcript

  1. TITELTEXT Continuous (Non)-Functional Testing of Microservices on K8s Code Days

    2021 Digital, February 11th 2021 @LeanderReimer #cloudnativenerd #qaware #CodeDays
  2. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays 3 "Software Is Eating the World.“ Marc Andreessen, 20th August 2011
  3. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays 9 Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time .… It aims at building, testing, and releasing software with greater speed and frequency.
  4. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays 11 "Software Industrialization 
 is key for successful DevOps 
 and Continuous Delivery." Unknown source, 22nd October 2019
  5. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays 12 Continuous Delivery Low Risk Releases Less 
 Rework Fast Time to Market Better Products Lower 
 Costs Happier Teams Happier 
 Users Loosely Coupled Architectures Maintainable Code Empowered Teams Continuous Security from Day 1 Test Automation Continuous Integration GitOps Deployment Automation Monitoring and Alerting Input Output
  6. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays 13 Continuous Delivery Low Risk Releases Less 
 Rework Fast Time to Market Better Products Lower 
 Costs Happier Teams Happier 
 Users Loosely Coupled Architectures Maintainable Code Empowered Teams Continuous Security from Day 1 Test Automation Continuous Integration GitOps Deployment Automation Monitoring and Alerting
  7. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays 14 Continuous Delivery Low Risk Releases Less 
 Rework Fast Time to Market Better Products Lower 
 Costs Happier Teams Happier 
 Users Loosely Coupled Architectures Maintainable Code Empowered Teams Continuous Security from Day 1 Test Automation Continuous Integration GitOps Deployment Automation Monitoring and Alerting
  8. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays Claim 1: A single, linear CI/CD pipeline is suboptimal and will result in delayed feedback and long release cycles. 15 Check-In Build Test Integrate Deploy to Production Automated Acceptance Tests Manual Auto Auto Auto Auto? Acceptance Security Performance These high level tests are usually delayed until the end of sprint or the release. 
 Which one fi rst? Is Functionality more important than Security or Performance?
  9. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays Claim 2: A microservice architecture with many down stream dependencies is complex and hard to test. 16 Cluster Microservice 
 A Microservice 
 B External System B TEAM A TEAM B UNKNOWN Microservice C TEAM C External System A
  10. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays Solution: Why not continuously run (non)-functional tests against a complex microservice architecture? 17 Check-In Build Integrate Auto Auto Auto Smoke Tests Quality Acceptance Security Performance Auto Manual Report & Alert Continuous Runs inside the cluster Test Deploy to Production Integration Environment
  11. // Code Days 2021 Digital —> Go for Operations //

    @LeanderReimer #cloudnativenerd #qaware #CodeDays #OOPmuc 18 Code & Demos https://github.com/qaware/continuous-k6k8s https://github.com/qaware/continuous-zapk8s https://github.com/qaware/continuous-atdd
  12. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays Load Testing for Engineering Teams • Made for Developers. The k6 API and CLI are easy to use and fl exible. • Out-of-the-box Docker support. Can be run in a container easily. • Suitable for Smoke Tests, Load Tests, Stress Tests and Soak Tests. • Supports REST, GraphQL, gRPC and Websockets. • Result visualisation via DataDog, CloudWatch, In fl uxDB+Grafana, New Relic and many others • Extensive documentation and good community. 19
  13. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays OWASP Zed Attack Proxy (ZED) • Widely used, popular, free and open source web app scanner. • ZAP provides powerful APIs for security automation. • Intercepting proxy, active and passive scanner, traditional and AJAX spider, brute force scanner, port scanner, OpenAPI v3, web sockets. • ZAP's docker images provide an easy way to run ZAP, especially in a CI/CD environment: baseline, full scan, API scan, Webswing UI. • Extensive documentation and international community. 20
  14. // Code Days 2021 Digital —> Continuous (Non)-Functional Testing of

    Microservice on K8s // @LeanderReimer #cloudnativenerd #qaware #CodeDays Very Groovy Browser Automation • Cross Browser Automation: Chrome, Firefox, Safari, Selenium Hub, … • Powerful, easy to learn Groovy based DSL. Easy content navigation and access inspired from jQuery. • Built-in support for Page Object Pattern for maintainable, stable UI tests. • Supports asynchronicity and dynamic content . • Provides integration modules for popular test frameworks: Spock, Unit, TestNG and Cucumber • Good and easy build system integration for Maven and Gradle 21