Autor Thema: Test und Entwicklersystem  (Gelesen 1955 mal)

following

  • Gast
Test und Entwicklersystem
« am: 29. Mai 2015, 12:00:20 »
Kurz zur Historie: Das Entwicklersystem auf Imagebasis war früher eine Forderung von Klaus und Oliver, um damit auf dem lokalen Entwicklungsrechner nahezu  identische bedingungen zu Server zu schaffen. Identische Bedingungen im Sinne von verendetem OS, PHP-Version, etc. Dies war nötig, da lokal entwickelt, lokal getestet und dann ins Echtsystem eingespielt wurde. Lediglich ein kurzer Test auf Olivers lokalem Entwicklersystem erfolgte vorher. Inzwischen haben wir jedoch ein Testsystem, auf dem alle Commits unter wirklich echten Bedingungen getestet werden können. Damit ist es nicht mehr erforderlich, zu Hause identische Bedingungen vorzuhalten.

Probleme bei dieser Vorgehensweise:

- Die Entwickler können nicht schon während der Entwicklung selbst vollständig testen. Hat man z.B. PHP-Funktionen verwendet, die auf dem Produktivsystem fehlen, fällt das erst spät auf und man muss den Code nachträglich umschreiben.

- Die Entwickler können ihre Änderungen nicht auf dem "kleinen Dienstweg" (Entwicklerbranches austauschen) gegenseitig komplett testen; es geht nur noch zentral.

- Der frühzeitige Test von Änderungen, die noch nicht reif sind zusammengemergt zu werden, ist nicht möglich.

- Es gibt bislang niemanden, den zentralen Test systematisch organisiert / durchführt. Erfahrungsgemäß fallen die wenigsten Bugs während der Testphase auf dem Testserver auf.

Die bei den Entwicklern vorhandenen Testressourcen bleiben also teilweise ungenutzt, stattdessen entsteht mehr Aufwand und Organisationsbedarf an zentraler Stelle. Die Erfahrung mit der OC-Entwicklung zeigt allerdings, dass es an zentralen Stellen immer wieder an Personal und Organisation mangelt, während die Fortschritte auf Eigeninitiativen einzelner Entwickler beruhen. Die Entwickler warten immer wieder darauf, dass jemand ihre Änderungen prüft, einspielt, zum Test oder auf dem Produktivsystem freigibt. Eine weitere Zentralisierung des Tests könnte daher nach hinten losgehen.

Der erste Entwicklungsleiter im Opencaching-Verein (Metrax) hatte wegen dieser Problematik vorgesehen, dass auf dem Testserver für jeden Entwickler eine eigene Testumgebung eingerichtet wird, die er selbst mit seinen Git-Branches befüllen kann ...

mbirth

  • Gast
Re: Test und Entwicklersystem
« Antwort #1 am: 29. Mai 2015, 14:38:29 »
- Die Entwickler können nicht schon während der Entwicklung selbst vollständig testen. Hat man z.B. PHP-Funktionen verwendet, die auf dem Produktivsystem fehlen, fällt das erst spät auf und man muss den Code nachträglich umschreiben.

Zwischen z.B. PHP 5.4 und dem aktuell bei uns verwendeten PHP 5.3 gibt es kaum Unterschiede. Den Punkt kann man i.d.R. ignorieren. Es sei denn, ein Entwickler ist wirklich so verpeilt und programmiert PHP 5.6 Code. Dann hat er es aber auch verdient, dass er das Backporten muss.


OTOH darf nicht vergessen werden, dass das Test- und Livesystem auch regelmäßig aktualisiert werden sollte, so dass aktuelle Apache- und PHP-Versionen laufen.


- Die Entwickler können ihre Änderungen nicht auf dem "kleinen Dienstweg" (Entwicklerbranches austauschen) gegenseitig komplett testen; es geht nur noch zentral.

Das Entwicklungssystem ist ein Server. Den kann man doch auch ins Internet freigeben? Ansonsten sollte die Entwicklung eigentlich sowieso in einem Git-Branch stattfinden. Den kann der jeweils andere Entwickler lokal auschecken.



- Der frühzeitige Test von Änderungen, die noch nicht reif sind zusammengemergt zu werden, ist nicht möglich.

?

- Es gibt bislang niemanden, den zentralen Test systematisch organisiert / durchführt. Erfahrungsgemäß fallen die wenigsten Bugs während der Testphase auf dem Testserver auf.

Auf lange Sicht sollten auch eher UnitTests (klassisch, aber auch z.B. mit Selenium) gebaut werden, statt dass jemand das von Hand durchklickt. Die kann dann jeder lokal ausführen und sieht (hoffentlich) gleich, ob was klemmt.


Die bei den Entwicklern vorhandenen Testressourcen bleiben also teilweise ungenutzt, stattdessen entsteht mehr Aufwand und Organisationsbedarf an zentraler Stelle. Die Erfahrung mit der OC-Entwicklung zeigt allerdings, dass es an zentralen Stellen immer wieder an Personal und Organisation mangelt, während die Fortschritte auf Eigeninitiativen einzelner Entwickler beruhen. Die Entwickler warten immer wieder darauf, dass jemand ihre Änderungen prüft, einspielt, zum Test oder auf dem Produktivsystem freigibt. Eine weitere Zentralisierung des Tests könnte daher nach hinten losgehen.

Es sollte aber einen zentralen Tester geben, der genau weiß, worauf er achten muss. Wenn ich was programmiere, teste ich die neue Funktion. Aber ob ich damit irgendein anderes Feature ganz tief versteckt kaputt mache, merke ich dabei eher selten. Insofern ist jemand, der regelmäßig testet und genau weiß, was passieren muss, sehr sinnvoll.


Der erste Entwicklungsleiter im Opencaching-Verein (Metrax) hatte wegen dieser Problematik vorgesehen, dass auf dem Testserver für jeden Entwickler eine eigene Testumgebung eingerichtet wird, die er selbst mit seinen Git-Branches befüllen kann ...

Wenn das Vagrantfile funktioniert, haben wir genau das - sogar zum Mitnehmen auf eine längere Bahnreise o.ä.. Die Versionen im Vagrantfile sind nah genug an der echten Umgebung dran, dass, wenn es dort läuft, auch auf dem Testserver und Livesystem laufen wird.


Da jetzt ein Fass aufzumachen und den Testserver zur Spielwiese umzubauen ist IMHO etwas zuviel des Guten. Zumal da noch andere Dinge dran hängen, wie z.B. CPU-Last des Servers, Speichernutzung und k.A., ob der Hoster noch Geld für Traffic haben will. Von der Sicherheitsproblematik mal ganz abgesehen.

following

  • Gast
Re: Test und Entwicklersystem
« Antwort #2 am: 29. Mai 2015, 15:19:01 »
Es sollte aber einen zentralen Tester geben, der genau weiß, worauf er achten muss. Wenn ich was programmiere, teste ich die neue Funktion. Aber ob ich damit irgendein anderes Feature ganz tief versteckt kaputt mache, merke ich dabei eher selten. Insofern ist jemand, der regelmäßig testet und genau weiß, was passieren muss, sehr sinnvoll.

Völlig richtig. Aber aus welchem Hut wollen wir den zaubern?  Bei einem Projekt in dieser Größenordnung müsste das schon jemand mit professioneller Erfahrung in der Software-QS sein.

Die personellen Ressourcen von Opencaching.de im Bereich Entwicklung und Technik sind leider sehr beschränkt, trotz aller Aufrufe um Unterstützung. Du hast ja gesehen, dass es sechs Monate dauerte, bis dein Fix der Garmin-API online war, und solche Klemmer gibt es immer wieder mal.

De facto war es bislang so, dass der Test überwiegend am Code Reviewer hängen blieb, oder dass Änderungen mit Mut zur Lücke online gestellt wurden.

mbirth

  • Gast
Re: Test und Entwicklersystem
« Antwort #3 am: 29. Mai 2015, 15:44:53 »
Völlig richtig. Aber aus welchem Hut wollen wir den zaubern?  Bei einem Projekt in dieser Größenordnung müsste das schon jemand mit professioneller Erfahrung in der Software-QS sein.


Najaaaaa, so hoch würde ich nicht greifen. Wir sind kein Großunternehmen, was Aktionäre zufriedenstellen muss und sich keinerlei Fauxpas leisten darf. Als Tester wäre schon jemand geeignet, der die Webseite und das Verhalten so kennt, wie Mic@ die ganzen Informationsquellen.


Der Tester soll ja nur Feedback liefern, ob alles noch funktioniert, wie es soll. Das Fixing macht dann der Entwickler wieder.


Das Problem mit den Monaten Dauer war hauptsächlich auch, dass ich noch keinen Zugang zu allen nötigen Systemen habe und auch die Prozesse nicht genau kenne. Sonst hätte ich das nach dem "okay, funktioniert" von den verschiedenen Leuten auch selbst produktiv stellen können.


Wenn mich da mal jemand versorgen würde, kann ich natürlich auch fremde Änderungen übernehmen. Ich hab zwar auch nicht immer Zeit, aber Monate wird's bei mir nicht dauern - und das meine ich jetzt nicht als Kritik. Außerdem könnte ich dann auch mal im Ernstfall auf dem Server schauen, was los ist. (Wer ist eigentlich Technikbeauftragter, also hat das letzte Wort in Sachen Serverkonfiguration, Zugänge, etc.?)

Offline dl6hbo

  • Normal
  • *****
  • Beiträge: 1682
  • - verstorben -
Re: Test und Entwicklersystem
« Antwort #4 am: 29. Mai 2015, 15:51:09 »
(Wer ist eigentlich Technikbeauftragter, also hat das letzte Wort in Sachen Serverkonfiguration, Zugänge, etc.?)

Nils (aka bohrsty) und ich als "Backup".
Gruß, Rainer ( dl6hbo )
Everything should be made as simple as possible, but not simpler.
Albert Einstein

following

  • Gast
Re: Test und Entwicklersystem
« Antwort #5 am: 29. Mai 2015, 16:12:21 »
Wie gesagt - meine Erfahrung mit dem OC-Test ist, dass er nur bruchstückweise funktioniert. Es gab mal jemanden, der sich darum kümmern wollte, aber der war nach ein paar Wochen wieder verschwunden.


Das Problem mit den Monaten Dauer war hauptsächlich auch, dass ich noch keinen Zugang zu allen nötigen Systemen habe und auch die Prozesse nicht genau kenne.

Die Prozesse sind im internen Teamwiki dokumentiert.

Offline Siggiiiiii

  • Micro
  • ***
  • Beiträge: 202
Re: Test und Entwicklersystem
« Antwort #6 am: 27. Juni 2015, 00:24:27 »
Gibt's eine TestSpec für einen Regressiontest bzw. ist da was automatisiert?

Offline mambofive

  • Team Opencaching Deutschland
  • Micro
  • *
  • Beiträge: 438
Re: Test und Entwicklersystem
« Antwort #7 am: 27. Juni 2015, 17:22:36 »
Gibt's eine TestSpec für einen Regressiontest bzw. ist da was automatisiert?
Hallo Siggiiii, eine automatisierte Testsuite o. ä.  gibt es aktuell nicht, das wäre m. E. auch übertrieben. Kleinere Änderungen werden direkt von unserer Entwicklung getestet, größere Features auch schon mal auf einem internen Testsystem.
Darf ich in deine Frage ein gewisses Interesse zur Mitarbeit hinein interpretieren?

Offline Siggiiiiii

  • Micro
  • ***
  • Beiträge: 202
Re: Test und Entwicklersystem
« Antwort #8 am: 28. Juni 2015, 15:58:40 »
Gibt's eine TestSpec für einen Regressiontest bzw. ist da was automatisiert?
Hallo Siggiiii, eine automatisierte Testsuite o. ä.  gibt es aktuell nicht, das wäre m. E. auch übertrieben. Kleinere Änderungen werden direkt von unserer Entwicklung getestet, größere Features auch schon mal auf einem internen Testsystem.
Darf ich in deine Frage ein gewisses Interesse zur Mitarbeit hinein interpretieren?

Das hört sich nach recht isolierten Komponenten an, wo an anderen Komponenten bei Änderungen nicht viel kaputt gemacht werden kann.

Hab momentan keine Zeit, mich in ein neues SW-Projekt einzuarbeiten. Da müsste ich die Funktionen von OC auch viel intensiver nutzen, um die Web-Strukturen und Funktionen zu verstehen. Außerdem ist das Bottleneck ja eher nicht der Test, wenn ich mir Redmine so angucke. Da stecken ja noch etliche Personenmonate Entwicklung drinne.
« Letzte Änderung: 28. Juni 2015, 16:33:58 von Siggiiiiii »