In meinem Projekt richten wir eine kontinuierliche Integrationsumgebung ein und schlagen als Teil dieses Prozesses vor, gleichzeitig Fehler während der QA-Testzyklen zu beheben.
Was ist der allgemein übliche Prozess, wenn es darum geht, dies in die QA-Umgebung zu bringen? Werden diese Fixes sofort (nach dem Integrationstest) in der QA-Umgebung bereitgestellt oder sammeln sich diese bis zum Abschluss des aktuellen Testzyklus an.
Sich ein ständig bewegendes Ziel zu geben, ist wirklich schwierig. Wir tendieren dazu, Fixes zu verteilen, bevor wir sie für die QA bereitstellen - normalerweise für eine tägliche QA-Bereitstellung. QA nimmt die Ausgabe von dem Build über Nacht als erstes am Morgen und "wie benötigt", wenn ein wirklich kritischer Fehler eine Menge Tests blockiert.
CI ist mehr ein grundlegender Codequalitätsbenchmark (z. B. baut es auf, es besteht Unit- / Rauchtests) - habe nicht das Gefühl, dass die QA alle Builds aus CI herausnehmen muss.
Zu Beginn der Testzyklen neige ich dazu, nur neue Builds zu erstellen, wenn blockierte Fehler behoben werden. Dadurch kann mein Team den Thrash vermeiden, der durch neue Builds und überraschende Regressionen verursacht wird. Der frühe Teil einer Veröffentlichung wird häufig damit verbracht, zu verstehen, wie die Funktionalität tatsächlich implementiert wurde und ob das Produkt ein Mindestmaß an Akzeptanzkriterien erfüllt.
In der Mitte eines Testzyklus akzeptiere ich Builds öfter, um sicherzustellen, dass Fixes so viel wie möglich verfügbar sind und um nicht korrekt behobene Fehler so schnell wie möglich zu identifizieren. Dies ist normalerweise täglich außer in Umgebungen, in denen wir langfristige Stress- oder Leistungstests durchführen.
Wenn sich die Veröffentlichung nähert und ich mehr Kontrolle darüber habe, welche Bugs behoben sind (dh die aktuelle Version ist verzweigt und wir haben eine strengere Codezeilen-Richtlinie), werde ich Builds nur dann weiter machen, wenn wir Release-Blocking-Bugs finden. Zu dieser Zeit werden Builds oft als Beta oder Release-Kandidaten bezeichnet.
Fehler, die während CI-Builds gefunden werden, müssen von Entwickler-Teams behoben werden, sobald sie gefangen werden. Während QA-Teams die regulären Builds während ihrer regulären Release-Zyklen oder Patch-Zyklen erhalten, nicht durch CI-Build-Probleme.
Da der CI-Build-Autotest viele QA- und Nicht-QA-bezogene Bugs erfasst hat, führt dies direkt zu einer starken Leistungsbelastung anderer QA-Aktivitäten.
Alles hängt von den QA-Richtlinien der Firma ab, einige mögen oder einige stimmen mit meinem Punkt nicht überein :)
nitzmahones Antwort ist ein guter Ratschlag, um die häufigeren Builds, die Sie von einem CI-System erhalten, auszugleichen, da die QA ein bekanntes Testziel haben muss.
Sie können die kontinuierliche Integration nutzen, um zusätzliche Tests zusätzlich zu den Unit- / Rauchtests zu erhalten, die als Teil jedes Builds ausgeführt werden. Hier sind ein paar Dinge, die ich getan habe:
Werden diese Korrekturen sofort nach dem Integrationstest in die QA-Umgebung implementiert oder werden sie bis zum Abschluss des aktuellen Testzyklus akkumuliert.
Es kommt darauf an. Wenn ein Problem blockiert ist und Tester nicht mehr Tests ausführen dürfen, um einen ganzen Testplan zu beenden (d. H. Um ihre Aufgabe zu erledigen), ist es offensichtlich erforderlich, den Fix sofort zu veröffentlichen. Wenn es sich bei einem Problem nicht um ein blockierendes Problem handelt, empfiehlt es sich möglicherweise, das Fix in die Warteschlange zu stellen und es in der nächsten Version verfügbar zu machen. Dies erfordert jedoch viel Verwaltungsaufwand (Protokollierung des Problems, Kommentierung des Testfalls usw.).
Wenn QA nun sehr früh während der Entwicklung auftritt (dh wenn Sie nicht einen sehr sequentiellen Entwicklungszyklus verwenden), wenn Tester eng mit Entwicklern zusammenarbeiten, dann kann es gut sein, ein Problem zu beheben, sobald es entdeckt wurde um sogar ein Inventar von Fehlern zu vermeiden (große Verschwendung).
Es hängt vom Projektentwicklungsstil ab. Angenommen, Sie sind ein agiles Team.
Oben ist allgemeiner Ansatz., Off-Kurs, es hängt stark von der Natur Ihrer Software und Ihres Teams ab
Dies kann durch Teilen des QA-Teams in Unterteams, d. h. intern und extern, erfolgen. Interne QA-Arbeit als Teil des Entwicklungsteams unter Dev-Manager und externe QA führen das Testen von Produkt in Entwicklung.
Das interne QA-Team ist verantwortlich für die Überprüfung des Produkts auf Sanität. Sie bewerten die grundlegende Integritätsprüfung des Builds, indem sie Sanity-Flows ausführen. Im Falle, dass der Fluss nicht funktioniert oder das Major / neu erstellte Modul abstürzt, leitet IQA E-Mails an den Release Manager / Entwickler, um einen neuen Build zu entwickeln. Sobald die Vernunft fließt, ist der Build für das externe QA Team bereit Testen.
Build ist täglich geplant, Fehler werden von externen QA's gemeldet. Interne QA's sind für geistige Gesundheit und schnelle Kommunikation und Diskussion mit Entwicklern da. Auf diese Weise kann der gesamte Prozess verbessert und die QA-Dev-Lücke reduziert werden, indem sie im Entwicklerteam hinzugefügt werden.
Hoffe das beantwortet deine Frage! Prost :)
Tags und Links continuous-integration qa