Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s

QAware GmbH
QAware GmbHQAware GmbH
TITELTEXT
Kontinuierliches (Nicht)-Funktionales
Testen von Microservices auf K8s
Continuous Testing Day, 4. Mai 2021


@LeanderReimer #cloudnativenerd #qaware @ConLifecycle
Mario-Leander Reimer


Principal Software Architect


@LeanderReimer


#cloudnativenerd #qaware
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
3
"Software Is Eating the World.“


Marc Andreessen, 20th August 2011
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Dev
Ops
https://commons.wikimedia.org/w/index.php?curid=2223771
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
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.
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
10
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
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
11
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
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
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
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
Eine singuläre, lineare CI/CD Pipeline ist nicht optimal:


verzögertes Feedback mit langen Build-Deploy Zyklen.
13
Check-In Build Test Integrate
Deploy to
Production
Automated
Acceptance Tests
Manual
Auto Auto Auto Auto?
Acceptance
Security
Performance
Diese Tests werden häu
fi
g rausgeschoben und erst gegen Sprint-Ende ausgeführt.


Und welche zuerst? Ist Funktionalität wichtiger als Security oder Performance?
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
Eine Microservice Architektur mit vielen Down-Stream
Abhängigkeiten ist komplex und schwierig zu testen.
14
Cluster
Microservice


A
Microservice


B
External


System B
TEAM A TEAM B UNKNOWN
Microservice


C
TEAM C
External


System A
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
Die Lösung: alle (nicht)-funktionalen Tests einer Microservice
Architektur laufen kontinuierlich auf der selben Umgebung.
15
Check-In Build Integrate
Auto Auto Auto
Smoke
Tests
Quality
Acceptance
Security
Performance
Auto Auto?
Check &
Report
Continuous
Runs inside
the cluster
Test
Deploy to
Production
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
Architecture Fitness Functions validieren kontinuierlich
die (nicht)-funktionalen Eigenschaften des Systems.
16
https://www.thoughtworks.com/de/radar/techniques/architectural-
fi
tness-function
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
Beispiele für Architecture Fitness Functions
17
https://www.thoughtworks.com/de/insights/articles/
fi
tness-function-driven-development
describe "Performance" do


	 it "completes a transaction under 2 seconds" do


	 	 expect(k6.check_transaction_round_trip_time()).to < 2


	 end


	 it "has less than 10% error rate for 10000 transactions" do


	 	 expect(k6.check_error_rate_for_transactions(10000)).to < .1


	 end


end
describe "Security" do


	 describe “Static Analysis” do


	 	 it "should not have plaintext secrets in codebase" do


	 	 	 expect(code.has_secrets_in_codebase()).to_not be(true)


	 	 end


	 end


	 describe “Dynamic Analysis” do


	 	 it "should not have any of the OWASP Top 10" do


	 	 	 expect(zap.has_owasp_top_10_vulnerabilities()).to be(false)


	 	 end


	 end


end
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
18
Code & Demos
https://github.com/qaware/continuous-k6k8s


https://github.com/qaware/continuous-zapk8s


https://github.com/qaware/continuous-atdd
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
Load Testing for Engineering Teams
• Made for Developers. Das k6 API und die CLI sind einfach zu nutzen.


• Out-of-the-box Docker Support. Kann ganz einfach als Container
ausgeführt werden.


• Geeignet für Smoke Tests, Load Tests, Stress Tests und Soak Tests.


• Unterstützt REST, GraphQL, gRPC und Websockets.


• Ergebnis Visualisierung via DataDog, CloudWatch, In
fl
uxDB+Grafana,
New Relic und viele weitere.


• Gute, ausführliche Dokumentation und hilfreiche Community.
19
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
OWASP Zed Attack Proxy (ZED)
• Weiter verbreiteter und bekannter Open Source Webapp Scanner


• ZAP bietet ein mächtiges API für Security Scanning Automatisierung


• Intercepting Proxy, Active und Passive scanner, HTTP Spider, Brute
Force Scanner, Port Scanner, OpenAPI v3, Web Sockets.


• ZAP's Docker Images bietet einen einfache Weg ZAP auszuführen,
speziell in CI/CD Umgebungen: Baseline + Full API Scan, Web UI.


• Ausführliche Dokumentation. Internationale Community.
20
// Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware
Very Groovy Browser Automation
• Cross Browser Automation: Chrome, Firefox, Safari, Selenium Hub, …


• Mächtige, einfach zu erlernende Groovy based DSL. Einfache Content
Navigation und Zugriff inspiriert von jQuery.


• Built-in Support des Page Object Pattern für wart bare und stabile UI Tests.


• Unterstützung für Synchronität und dynamischen Content.


• Unterstützung und Integration von zahlreichen Test Frameworks: Spock,
Unit, TestNG und Cucumber


• Gute und einfache Build Tool Integration für Maven und Gradle
21
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/
&
1 von 22

Más contenido relacionado

Was ist angesagt?(20)

In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
Stephan Kaps559 views
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment Roadmap
Stephan Kaps194 views
Quarkus QuickstartQuarkus Quickstart
Quarkus Quickstart
QAware GmbH380 views

Similar a Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s(20)

2012-10-12 Testen mit Arquillian2012-10-12 Testen mit Arquillian
2012-10-12 Testen mit Arquillian
Matthias Reining1.8K views

Más de QAware GmbH(20)

Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
QAware GmbH5 views
Security Lab: OIDC in der PraxisSecurity Lab: OIDC in der Praxis
Security Lab: OIDC in der Praxis
QAware GmbH19 views
Die nächsten 100 MicroservicesDie nächsten 100 Microservices
Die nächsten 100 Microservices
QAware GmbH14 views

Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s

  • 1. TITELTEXT Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s Continuous Testing Day, 4. Mai 2021 @LeanderReimer #cloudnativenerd #qaware @ConLifecycle
  • 2. Mario-Leander Reimer Principal Software Architect @LeanderReimer #cloudnativenerd #qaware
  • 3. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware 3 "Software Is Eating the World.“ Marc Andreessen, 20th August 2011
  • 9. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware 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.
  • 10. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware 10 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
  • 11. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware 11 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
  • 12. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware 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
  • 13. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware Eine singuläre, lineare CI/CD Pipeline ist nicht optimal: 
 verzögertes Feedback mit langen Build-Deploy Zyklen. 13 Check-In Build Test Integrate Deploy to Production Automated Acceptance Tests Manual Auto Auto Auto Auto? Acceptance Security Performance Diese Tests werden häu fi g rausgeschoben und erst gegen Sprint-Ende ausgeführt. 
 Und welche zuerst? Ist Funktionalität wichtiger als Security oder Performance?
  • 14. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware Eine Microservice Architektur mit vielen Down-Stream Abhängigkeiten ist komplex und schwierig zu testen. 14 Cluster Microservice 
 A Microservice 
 B External System B TEAM A TEAM B UNKNOWN Microservice C TEAM C External System A
  • 15. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware Die Lösung: alle (nicht)-funktionalen Tests einer Microservice Architektur laufen kontinuierlich auf der selben Umgebung. 15 Check-In Build Integrate Auto Auto Auto Smoke Tests Quality Acceptance Security Performance Auto Auto? Check & Report Continuous Runs inside the cluster Test Deploy to Production
  • 16. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware Architecture Fitness Functions validieren kontinuierlich die (nicht)-funktionalen Eigenschaften des Systems. 16 https://www.thoughtworks.com/de/radar/techniques/architectural- fi tness-function
  • 17. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware Beispiele für Architecture Fitness Functions 17 https://www.thoughtworks.com/de/insights/articles/ fi tness-function-driven-development describe "Performance" do it "completes a transaction under 2 seconds" do expect(k6.check_transaction_round_trip_time()).to < 2 end it "has less than 10% error rate for 10000 transactions" do expect(k6.check_error_rate_for_transactions(10000)).to < .1 end end describe "Security" do describe “Static Analysis” do it "should not have plaintext secrets in codebase" do expect(code.has_secrets_in_codebase()).to_not be(true) end end describe “Dynamic Analysis” do it "should not have any of the OWASP Top 10" do expect(zap.has_owasp_top_10_vulnerabilities()).to be(false) end end end
  • 18. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware 18 Code & Demos https://github.com/qaware/continuous-k6k8s https://github.com/qaware/continuous-zapk8s https://github.com/qaware/continuous-atdd
  • 19. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware Load Testing for Engineering Teams • Made for Developers. Das k6 API und die CLI sind einfach zu nutzen. • Out-of-the-box Docker Support. Kann ganz einfach als Container ausgeführt werden. • Geeignet für Smoke Tests, Load Tests, Stress Tests und Soak Tests. • Unterstützt REST, GraphQL, gRPC und Websockets. • Ergebnis Visualisierung via DataDog, CloudWatch, In fl uxDB+Grafana, New Relic und viele weitere. • Gute, ausführliche Dokumentation und hilfreiche Community. 19
  • 20. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware OWASP Zed Attack Proxy (ZED) • Weiter verbreiteter und bekannter Open Source Webapp Scanner • ZAP bietet ein mächtiges API für Security Scanning Automatisierung • Intercepting Proxy, Active und Passive scanner, HTTP Spider, Brute Force Scanner, Port Scanner, OpenAPI v3, Web Sockets. • ZAP's Docker Images bietet einen einfache Weg ZAP auszuführen, speziell in CI/CD Umgebungen: Baseline + Full API Scan, Web UI. • Ausführliche Dokumentation. Internationale Community. 20
  • 21. // Continuous Testing Day // Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s // @LeanderReimer #cloudnativenerd #qaware Very Groovy Browser Automation • Cross Browser Automation: Chrome, Firefox, Safari, Selenium Hub, … • Mächtige, einfach zu erlernende Groovy based DSL. Einfache Content Navigation und Zugriff inspiriert von jQuery. • Built-in Support des Page Object Pattern für wart bare und stabile UI Tests. • Unterstützung für Synchronität und dynamischen Content. • Unterstützung und Integration von zahlreichen Test Frameworks: Spock, Unit, TestNG und Cucumber • Gute und einfache Build Tool Integration für Maven und Gradle 21
  • 22. 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/ &