Ich arbeite an einem Projekt, bei dem wir einem vorhandenen Projekt automatisierte Tests hinzufügen. Wir beginnen mit einer zentralen Komponente und richten sowohl Komponententests auf Code-Modulebene als auch Tests ein, die für die gesamte Komponente ausgeführt werden, wenn auch in der Entwicklerumgebung. Diese Testsuite muss vor dem Einchecken des Codes bestanden werden und wird von einem kontinuierlichen Integrationssystem in jedem Entwicklungszweig ausgeführt.
Wie sollen wir das nennen? Im Moment nennen wir es "Dev Unit Tests", aber die pedantische Seite von mir sagt, dass das nicht ganz richtig ist, weil es mehr als Unit Tests enthält. Unsere Vision ist es, dass diese Suite im Laufe der Zeit um vollständige Produktakzeptanztests erweitert wird.
Irgendwelche Eingaben hier? Oder sollten wir aufhören, über Namen zu streiten und Tests schreiben?
Aktualisieren
Vielen Dank für die gute Diskussion! Ich denke, die Schlussfolgerung, zu der ich komme, ist, dass es nicht wirklich eine "gemeinsame" Definition gibt - jedes Projekt / Team hat Namen, die für dieses Projekt abhängig von den Technologien (Java, C #, Ruby usw.) am sinnvollsten sind. und verwendete Methoden (Old-Skool-Wasserfall, Scrum, XP usw.).
quelle
Antworten:
Sie werden in MSFT TFS als "Gated Check-Ins" bezeichnet. http://blogs.msdn.com/b/patcarna/archive/2009/06/29/an-introduction-to-gated-check-in.aspx
quelle
Nennen Sie sie, wie Sie wollen, es spielt keine Rolle. Was zählt, ist die Qualität der Tests und dass sie durchgeführt werden.
Unsere Tests sind automatisierte Abnahmetests, aber wir nennen sie hier bei meiner Arbeit einfach "Tests". Wie in:
quelle
Ich nenne sie "die Tests" mit der Implikation, dass ich über die "automatisierten Komponententests" spreche, und mit der Folgerung, dass diese schnell sind (einige Sekunden bis einige Minuten sind das, was ich häufiger erlebt habe.
Manchmal gibt es andere Tests, die beim Einchecken automatisch ausgeführt werden, beispielsweise einmal nachts. Diese dauern in der Regel länger. Etwas zwischen 30 Minuten und ein paar Stunden. Typischerweise nennen wir diese "Funktionstests" oder "Regressionstests" oder sogar "langsame Tests".
quelle
Aus meinen Erfahrungen:
Ein Komponententest ist ein Test oder eine Reihe von Tests, die ein bestimmtes Modul abdecken. Bei der OO-Programmierung ist ein Modul normalerweise eine Funktion oder Klasse. Unit-Tests sind in Testsuiten zusammengefasst. Unit-Tests sind die Bausteine für Regressions- und Rauchtests und können in einigen Fällen als Dokumentation für das beabsichtigte Verhalten eines Systems oder von Teilen eines Systems dienen.
Beim Regressionstest werden die meisten oder alle Komponententests auf einem geänderten Modul ausgeführt. Dadurch wird sichergestellt, dass das geänderte Modul nach den Änderungen weiterhin wie erwartet funktioniert.
Bei der Rauchprüfung wird eine (kleine - Sie möchten, dass die Rauchprüfung relativ schnell durchgeführt wird) Anzahl von Komponententests an unveränderten Modulen durchgeführt, um sicherzustellen, dass eine Änderung an einem Modul keine unbeabsichtigten Nebenwirkungen auf andere Module hatte. Der Fokus liegt normalerweise auf Klassen, die Assoziationen mit der geänderten Klasse haben, sowie auf den Modulen, die der Anwendung wichtige Funktionen bieten.
Abhängig von Ihrer Build-Umgebung kann eine dieser Umgebungen vom Entwickler automatisiert oder ausgeführt werden. Ein festgeschriebener Änderungssatz sollte klein genug sein, damit Regressionstests nicht unannehmbar lange dauern, und Rauchtests sind so konzipiert, dass sie ziemlich schnell sind. Normalerweise führe ich mindestens Regressions- und Rauchtests für Code durch, bevor dieser überhaupt eingecheckt wird, damit ich den Build nicht kaputt mache. Ich habe normalerweise gesehen, dass das Build-System so konzipiert ist, dass es regelmäßig den Status aller Testfälle ausführt und darüber Bericht erstattet, je nach Entwicklungsrate und Zeit zum Erstellen und Ausführen der Tests von täglich bis wöchentlich.
quelle
Wenn Sie es vor dem Einchecken über die Codebasis ausführen, handelt es sich um einen Regressionstest.
Wenn Sie nur das Bit testen, das Sie geändert haben, handelt es sich um einen Komponententest.
Wenn Sie einen Test für einen Fehler auf Systemebene hinzufügen und dann beheben, ist dies ein Regressionstest.
Seine Tests, wenn Sie sich zurückbilden: rückwärts gehen.
Es lohnt sich, Regressionstests durchzuführen, da sich Fehler an bestimmten Stellen häufen und einige Fehler erneut auftreten.
Wenn Sie die Disziplin von Tests auf Systemebene aushalten können, zahlt es sich aus, dort Regressionstests hinzuzufügen. Alle spröden Subsysteme werden in Regressionstests kokoniert.
Wahre Geschichte.
quelle
Automatisierte Unit-Tests habe ich immer so genannt.
quelle
Ich bin mir nicht sicher, ob es einen offiziellen Begriff gibt oder nicht, aber ich würde sie als automatisierte Tests bezeichnen. Ich stimme Ihnen zu, dass die Worteinheit dort nicht korrekt ist.
quelle
Der Begriff "automatisierte Tests" umfasst das Spektrum von Unit-Tests, Regressionstests, Integrationstests, Abnahmetests usw.
quelle
Wir nennen sie normalerweise Rauchtests, Gesundheitstests oder Tests der Priorität 1. Tests der Priorität 2 werden nach dem Einchecken durchgeführt, und dann werden Tests der Priorität 3 für die geplanten Builds ausgeführt. Unsere letzten Tests, Tests der Priorität 4, finden statt, wenn wir einen speziellen Build haben, der über ein Wochenende ausgeführt wird - da die Ausführung ungefähr so lange dauert.
quelle