Ich möchte nicht prahlen, aber ich habe einen der coolsten Jobs der Welt. Ich bin QA-Ingenieur hier bei DreamHost, aber was bedeutet das? Ich bekomme immer noch ab und zu Fragen dazu, und es ist leicht zu vergessen, dass nicht die ganze Welt alles über Softwareentwicklung und die Rollen, die verschiedene Gruppen spielen, weiß, also werde ich einen Schritt zurücktreten und ein wenig erklären, wie die Dinge hier funktionieren.
Was genau würden Sie sagen, machen Sie hier?
QA steht für “Quality Assurance”. Es kann viele verschiedene Dinge bedeuten, aber ich betrachte es gerne als “Dinge zerbrechen, bevor es unsere Kunden tun”. Eine sanftere Betrachtungsweise: Wir testen Änderungen an unserer Software, bevor wir sie auf Produktionsmaschinen ausrollen, um Probleme zu erkennen, die auftreten könnten. Und es gibt VIELE Dinge, die schiefgehen können. Lassen Sie mich Ihnen einen kurzen Überblick geben!
Ch-ch-changes
DreamHost beschäftigt ein Team von Entwicklern, die an Produkten wie DreamObjects und DreamCompute arbeiten und an allen Arten anderer Projekte, von denen Sie möglicherweise gehört haben, wie die Integration mit externen Diensten wie CloudFlare.
Unsere Entwickler verwenden git, um den Quellcode für die Projekte, an denen sie arbeiten, zu verwalten. Die meisten Repositorys für Open-Source-Projekte, zu denen wir beitragen (oder die wir erstellen), sind auf GitHub verfügbar, aber wir haben auch einen internen Server, der Gerrit für die Codeüberprüfung ausführt. Immer wenn Änderungen auf GitHub oder Gerrit gepusht werden, führt Jenkins automatisierte Tests durch, die von den Entwicklern und der QA gegen den neuen Code geschrieben wurden. Jenkins integriert sich über ein paar nützliche Plugins mit Gerrit und stimmt automatisch gegen Änderungen, die Tests nicht bestehen.
Glücklich bis ans Ende?
Das einzige Problem bei diesem Ansatz ist, dass er nur funktioniert, wenn es automatisierte Tests gibt, die Jenkins ausführen kann. Manchmal hat der geänderte Code keine automatisierten Tests. Bevor diese Änderungen live gehen können, müssen sie von jemand anderem als den Entwicklern überprüft werden. Als QA-Ingenieur muss ich einige Dinge wissen, wie:
Wie hat das früher funktioniert? Wie sollte es jetzt funktionieren? Gibt es besondere Einrichtungsanweisungen? Wo kann ich hier in der Nähe einen guten Burrito bekommen?
(Burritos sind wesentlich für den QA-Prozess.)
Mit diesem Wissen versuche ich, das neue Merkmal so oft wie möglich zu nutzen. Zum Beispiel eine der Änderungen, die wir am Panel seit meinem Start hier vorgenommen haben, ist das automatische (kostenlose!) DNS-Hosting, wenn ein Domain zu einem Konto hinzugefügt wird. Zu den Tests gehörte das Registrieren neuer Domains sowie das Übertragen von Domains von einem externen Registrar und die Sicherstellung, dass das DNS-Hosting automatisch für die neue Domain aktiviert wurde. Normalerweise ist beim ersten Versuch nicht alles perfekt, daher melde ich Fehler an die Entwickler, die für den neuen Code verantwortlich sind, und arbeite mit ihnen zusammen, um sicherzustellen, dass wir uns darüber einig sind, was tatsächlich passiert, was passieren sollte und was ich getan habe, das es zum Scheitern brachte.
Und dann…
Das ist nicht die ganze Geschichte, aber Release-Engineering ist einen eigenen Beitrag wert. Hoffentlich hat dieser Beitrag einen nützlichen Überblick über die QA bei DreamHost geboten, und in zukünftigen Einträgen werde ich detaillierter auf die Arten von Werkzeugen eingehen, die wir für automatisierte Tests verwenden.