Slide 1

Slide 1 text

TITELTEXT Continuous (Non)-Functional Testing of Microservices on K8s Code Days 2021 Digital, February 11th 2021 @LeanderReimer #cloudnativenerd #qaware #CodeDays

Slide 2

Slide 2 text

Mario-Leander Reimer Principal Software Architect @LeanderReimer #cloudnativenerd #qaware

Slide 3

Slide 3 text

// 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

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Dev Ops

Slide 7

Slide 7 text

https://commons.wikimedia.org/w/index.php?curid=2223771

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

// 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.

Slide 10

Slide 10 text

The Software Assembly Line

Slide 11

Slide 11 text

// 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

Slide 12

Slide 12 text

// 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

Slide 13

Slide 13 text

// 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

Slide 14

Slide 14 text

// 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

Slide 15

Slide 15 text

// 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?

Slide 16

Slide 16 text

// 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

Slide 17

Slide 17 text

// 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

Slide 18

Slide 18 text

// 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

Slide 19

Slide 19 text

// 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

Slide 20

Slide 20 text

// 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

Slide 21

Slide 21 text

// 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

Slide 22

Slide 22 text

Mario-Leander Reimer Principal Software Architect, QAware GmbH mario-leander.reimer@qaware.de https://www.qaware.de https://speakerdeck.com/lreimer/ https://github.com/lreimer/ &