Unsere Codebasis wächst seit 20 Jahren. Wir sind ungefähr 10 Entwickler und arbeiten mit 500kloc. Vor einiger Zeit begann ein kleines Team von uns (2 Entwickler, einer von sqa) an einem automatisierten Testprogramm zu arbeiten. Derzeit dauert ein Lauf 11 Stunden und ist irgendwie ein Integrationstest. Wir arbeiten daran, dieses Problem zu beheben, Fehlalarme zu reduzieren und dabei gute Fortschritte zu erzielen. Aber Details sollten keine Rolle spielen.
Es funktioniert gut und wir verbessern es weiter. Wir (das kleine Team) mögen es sehr. Wenn wir etwas zerbrechen, bemerken wir es einen Tag später und nicht zwei Monate später, wenn sqa einen Blick darauf wirft. Auch unseren Managern (dev + sqa) gefällt die Idee. Aber andere Leute im Team ignorieren einfach die Testergebnisse. Wenn die Tests nach dem Einchecken fehlschlagen, ist dies ein Problem des Tests und nicht der Codeänderung, und es ist nur unser Spielzeugprojekt. Wir haben mehrmals diskutiert, ob ein nicht bestandener Test ein echter Fehler ist. Meistens ist es so.
Wir können und wollen nichts erzwingen. Wie können wir zeigen, dass automatisiertes Testen eine Sache ist?
quelle
Antworten:
Haftungsausschluss
Obwohl ich wie ein Manager klinge, schrieb ich dies als Entwickler, der auch davon überzeugt werden musste, dass automatisierte Tests gut sind.
Sie müssen die grundlegende Psychologie der Entwickler verstehen. Es ist ein tief verwurzeltes Bedürfnis der Entwickler, Code zu schreiben. Alles, was sie daran hindert, ist eine sehr, sehr schlechte Sache. Ein fehlgeschlagener Test ist definitiv etwas, das sie daran hindert, ergo ist es eine schlechte Sache. Daher der Widerstand.
Was Sie beachten müssen, ist, dass die automatisierten Tests sie zwar kurzfristig verlangsamen, auf lange Sicht jedoch viel Kummer ersparen und sie tatsächlich beschleunigen, da sie sich mehr auf die Entwicklung von konzentrieren können neue Dinge und verlieren weniger Zeit damit, die andere Sache zu tun, die Entwickler hassen: Fehler zu beheben.
Und ja, du musst es durchsetzen. Sie müssen die bedingungslose Unterstützung des Managements erhalten und das Schreiben automatisierter Tests als obligatorisch und nicht verhandelbar festlegen. Mit der Zeit werden sich die Entwickler an sie gewöhnen. Was hilft, ist, wenn Sie einige Kennzahlen erstellen können, die zeigen, wie viel mehr neue Entwicklungen durchgeführt wurden und um wie viel weniger Fehler seit Einführung der automatischen Tests aufgetreten sind. Wörter sind flüchtig. Zahlen sind solide. Und Zahlen sind etwas, das ein durchschnittlicher Entwickler besser versteht als Worte. Wenn Sie mit soliden Zahlen nachweisen können, dass automatisierte Tests gut sind, werden Sie wenig bis gar keinen Widerstand dagegen erhalten.
quelle
Da ist dein Problem. Wenn Ihre Tests unzuverlässig sind (auch wenn sie "die meiste Zeit" zuverlässig sind), werden die Ergebnisse von den Leuten ignoriert. Ihr Automatisierungsteam sollte sich darauf konzentrieren, diese falschen Negative zu beseitigen. Nur dann wird der Rest des Teams genug Vertrauen in die Ergebnisse gewinnen, um ihnen tatsächlich zu vertrauen.
quelle
Sie sollten es auf jeden Fall durchsetzen! Wenn jemand neuen Code drückt und die Tests fehlschlagen, sollte der Code abgelehnt werden! Nur so kann ein größeres Softwareprojekt zuverlässig gepflegt werden.
quelle