Testen wie bei Google: Best Practices von Branchenriesen (04.25.24)

Wir können viel von Branchenriesen lernen, indem wir ihre Methoden und Ansätze in Workflows beobachten.

Wie schaffen sie es, den Softwaretestprozess innerhalb von Millionen von Codezeilen aufrechtzuerhalten?

Wie organisieren sie den Workflow mit Tausenden von QA-Ingenieuren?

Wie gehen sie mit der Projekterweiterung um?

Die Erfahrung von Unternehmen wie Google oder Spotify kann dazu beitragen, Testprozesse in kleinen Unternehmen zu verbessern und Teams.

Lassen Sie uns einen genaueren Blick darauf werfen, wie Giganten testen.

Google: die Bedeutung der Codeabdeckung

Dennoch streiten viele Ingenieure über die Bedeutung einer solchen Messung der Effizienz von Softwaretests als Codeabdeckung. Experten von Google bestehen darauf, dass Codeabdeckungsdaten wertvolle Informationen zur Bewertung von Risiken und Engpässen in einer Testaktivität sein können. Carlos Arguelles, Marko Ivanković‎ und Adam Bender teilen Best Practices für die Codeabdeckung:

  • Codeabdeckung kann helfen, Fehler und Ausfälle zu reduzieren. Die Erfahrung von QA-Ingenieuren von Google hat gezeigt, dass eine zunehmende Codeabdeckung zu Veränderungen in den Ansätzen und Einstellungen zum Testen führt. Teams mit Code Coverage als primäres Ziel neigen dazu, ihre Produkte besser testbar zu machen. Sie schreiben effizienteren Code zum Testen, um Testziele einfacher und weniger zeitaufwendig zu erreichen.
  • Verwenden Sie Mutationstests, um eine hohe Testabdeckung zu gewährleisten. Eine vollständige Codeabdeckung kann verschwenderisch sein und garantiert keine qualitativ hochwertige Testabdeckung. Ein hoher Prozentsatz an Codeabdeckung bedeutet nicht, dass alle Funktionen korrekt getestet wurden. Das bedeutet, dass der Code insgesamt getestet wurde. Um eine hohe Qualität der Testabdeckung zu gewährleisten, empfehlen Google-Experten die Verwendung von Mutationstests. Diese Methode umfasst das Implementieren kleiner Codeänderungen und das Überprüfen, wie die Testsets sie identifizieren.
  • Der Prozentsatz der Codeabdeckung hängt von vielen Faktoren ab. Wir sollten keine hohe Codeabdeckung anstreben, aber eine niedrige Abdeckung führt auch zu einer großen Anzahl von Fehlern. Und die Frage ist, was ist die spezifische Codeabdeckung für ein bestimmtes System? Um diese Frage zu beantworten, sollten wir Dinge wie Kritikalität, Komplexität und Häufigkeit von Codeänderungen berücksichtigen. Die Codeabdeckung ist eine Geschäftsentscheidung, und Product Owner sollten sie definieren.
  • Analysieren Sie, was abgedeckt werden soll. Wir können keine 100%ige Codeabdeckung erreichen, daher sollten QA-Ingenieure dies beachten die wertvollsten Teile des Codes werden abgedeckt. Ein Entwicklerteam sollte nicht darüber nachdenken, wie viele Codezeilen abgedeckt werden, sondern was genau abgedeckt wird.
Spotify: zuverlässige Strategie

Spotify ist ein schnell wachsendes Unternehmen. Es wurde 2008 mit 150 Mitarbeitern gegründet. Im Jahr 2019 wuchs die Zahl der Mitarbeiter auf 4.405. Heute bedient Spotify rund 300 Millionen Nutzer weltweit und ist damit der beliebteste Streaming-Dienst der Welt.

Wir können lernen, wie Spotify seine Tests skaliert und Entwicklungsprozesse.

  • Setzen Sie Produktziele für das QA-Team. Spotify hat funktionsübergreifende Teams. Jedes Team hat Ziele und eine Reihe von besonderen Fähigkeiten, um diese Ziele zu erreichen. Die Teamstruktur hängt von den Zielen ab. Daher bestehen einige Teams nur aus Entwicklern und andere haben Entwickler und Tester. Daher arbeiten die Tester eng mit dem Entwicklungsteam zusammen und konzentrieren sich auf die primären Ziele des Produkts. Ein solcher Ansatz ermöglicht es Spotify, den Entwicklungsprozess effizient zu skalieren.
  • Automatisierungstests sind ein Werkzeug, aber kein Allheilmittel. Test- und Entwicklungsmanager bei Spotify Kristian Karl behauptet, dass Softwaretester nicht durch Automatisierung ersetzt werden können. Das Testen erfordert menschliche Erfahrung und Wissen. Automatisierungstests sind ein robustes Werkzeug, um den Prozess zu beschleunigen, aber Menschen treffen Entscheidungen und analysieren automatisierte Berichte. Spotify verwendet Automatisierung als eines der Skalierungstools. Es ermöglicht Testern, die Routine für Algorithmen zu verlassen und sich auf Produktziele zu konzentrieren.
SpaceX: kontinuierliches Testen ist ein Muss

SpaceX ist ein innovatives Unternehmen, das für kommerziellen Weltraumtransport, ein wiederverwendbares Startsystem und . bekannt ist hohe Effizienz.

Nicholas Chaillan, Chief Software Officer der Air Force, sagte, dass das System der Entwicklungsabteilung von SpaceX fünfmal effizienter ist als Unternehmen mit klassischem Workflow. Wie bewältigt SpaceX den Testprozess mit einer solchen Leistung?

DevOps und die Agile-Ansätze ermöglichen es den QA-Ingenieuren von SpaceX, Massenautomatisierungstests durchzuführen. Während des Entwicklungszyklus bieten Tester kontinuierliche Tests an, um sofortiges Feedback zu erhalten und bestehende Risiken zu eliminieren. Dabei arbeiten sie proaktiv und testen häufig und frühzeitig.

Das Unternehmen hat eine Strategie entwickelt, wie kontinuierliche Tests in den Entwicklungsprozess implementiert werden können.

  • Priorisieren Sie den Wert. Wie Google empfiehlt SpaceX die Verwendung von Codeabdeckungsmetriken, um zu verstehen, was Sie automatisieren sollten und was nicht. Es hilft, kontinuierliche Tests zu optimieren und bereits durchgeführte Aktivitäten zu verbessern.
  • Der Schlüssel sind automatisierte End-to-End-Tests. Machen Sie eine Wirkungsanalyse zu einem Teil der kontinuierlichen Integration. Es ermöglicht Unternehmen zu analysieren, wie sich das Hinzufügen neuer Funktionen oder das Ändern von Code auf ein Gesamtsystem oder einige Teile davon auswirken kann.
  • Das Team sollte über eine stabile und leicht zu replizierende Testumgebung verfügen. Ein Tool wie Virtual Machine Snapshot kann dabei helfen, den Datenstatus zu speichern, zu Tests zurückzukehren oder die Arbeit wieder aufzunehmen.
  • Verwenden Sie künstliche Intelligenz und maschinelles Lernen, um Testberichte zu analysieren. AI -basierte Tools beschleunigen die Bereitstellung und optimieren den Testprozess.
  • Aufbau einer robusten Continuous-Integration-Architektur. Der Hauptvorteil des CI-Systems sind kurze Zeiträume zwischen Build und Tests des Codes . Kontinuierliches Testen muss in den Entwicklungsprozess eingebunden sein und die erforderlichen Arten von Tests beinhalten.
  • Zusammenfassung

    Jedes Unternehmen hat seine Teststrategie, -prozesse und -ansätze. Jedes Team wählt den Testprozess basierend auf den ultimativen Zielen und Produktfähigkeiten aus und passt ihn an. Die Hauptaufgabe eines jeden Spezialisten besteht darin, an den Kunden und den Endbenutzer zu denken, sich an neue Anforderungen anzupassen und die Erfahrung der Besten der Branche zu übernehmen.


    YouTube-Video.: Testen wie bei Google: Best Practices von Branchenriesen

    04, 2024