Test parallel zur laufenden Version
Hellmut
- css
- html
- php
Hallo!
ich soll eine größere Internetanwendung übernehmen, aktualisieren und erweitern. Früher hatte ich eine lokale Testumgebung (XAMPP/Apache) zur Verfügung. Jetzt soll ich das aber im laufenden Betrieb im Internet erledigen. Wie kann ich etwas testen, ohne dass es der Anwender bemerkt?
Hallo Hellmut,
ich soll eine größere Internetanwendung übernehmen, aktualisieren und erweitern. Früher hatte ich eine lokale Testumgebung (XAMPP/Apache) zur Verfügung. Jetzt soll ich das aber im laufenden Betrieb im Internet erledigen. Wie kann ich etwas testen, ohne dass es der Anwender bemerkt?
Das Arbeiten an einer laufenden Internetanwendung im Produktivsystem erfordert viel Sorgfalt – aber du kannst dennoch sicher testen, ohne dass die Anwender*innen etwas davon merken. Hier sind bewährte Strategien, wie du das professionell lösen kannst:
Eine exakte Kopie der Live-Website auf einer separaten URL oder Subdomain
Vorteile:
Getrennt vom Produktivsystem
Sicheres Testen von Änderungen
Ideal auch für Teamarbeit und CI/CD
Beispiel:
Live-System: www.deinprojekt.de
Staging-System: staging.deinprojekt.de
✅ Du kannst Apache oder einen anderen Webserver dort einrichten – wie früher mit XAMPP.
Neue Funktionen werden „versteckt“ eingebaut und nur unter bestimmten Bedingungen aktiviert
Nur für eingeloggte Entwickler-Accounts sichtbar
Aktivierung über URL-Parameter (?testmode=true)
Nutzung eines speziellen Cookies
if (user.isAdmin || urlParams.get("testmode") === "true") {
// Zeige neue Funktion nur Entwicklern
}
Du lieferst gezielt neue Versionen nur an dich selbst oder ausgewählte Nutzer*innen aus
IP-basierte Auslieferung
Cookie-gesteuertes Routing
User-Agent-Erkennung
Lege Seiten oder Funktionen an, die nicht verlinkt sind und nur dir bekannt sind
Bis bald!
Jonathan
Hallo Jonathan,
danke für die Tipps.
Ich habe mich für eine Subdomain entschieden.
Ich nehme an, dass ich die Testdaten in einem eigenen Verzzeichnis auf dem Server speichern muss. Wie aber stelle ich sicher, dass beim Aufruf der Subdomain dieses Verzeichnis herangezogen wird?
Schönen Gruß
Hellmut
Hallo Hellmut,
Hallo Jonathan,
danke für die Tipps.
Ich habe mich für eine Subdomain entschieden.
Ich nehme an, dass ich die Testdaten in einem eigenen Verzzeichnis auf dem Server speichern muss.
Wie aber stelle ich sicher, dass beim Aufruf der Subdomain dieses Verzeichnis herangezogen wird?
Die Skripts und das CMS (ist es eins?) müssen da natürlich auch dupliziert und entsprechend referenziert werden, da du sonst im live-System testest.
Bis bald!
Jonathan
Wie aber stelle ich sicher, dass beim Aufruf der Subdomain dieses Verzeichnis herangezogen wird?
Apache? Virtual Hosts
Dazu brauchts Du aber (regelmäßig) Root-Rechte auf dem System. Informiere Dich zudem, ob es auf dem System irgend eine „Steuersoftware“ gibt, mit der man sowas einrichtet. Stichworte: CPanel, Plesk, CloudPanel, Virtualmin, …
Möglicherweise werden durch diese manuelle Änderungen nicht wirksam oder aber manuelle Änderungen an der Konfiguration sorgen dafür, dass diese Verwaltungssysteme nicht mehr (richtig) funktionieren.
P.S.:
Achte auch darauf, dass Deine Testumgebung asusreichend wirksam vor Zugriffgen nicht authorisierter Personen/Maschinen geschützt ist.
Apache? Virtual Hosts
Apache auf dem Server (beim Provider) kann ich nicht konfigurieren.
Dazu brauchts Du aber (regelmäßig) Root-Rechte auf dem System. Informiere Dich zudem, ob es auf dem System irgend eine „Steuersoftware“ gibt, mit der man sowas einrichtet. Stichworte: CPanel, Plesk, CloudPanel, Virtualmin, …
Ich kann nur meine Dateien hochladen (z.B. mit Filezilla). Dorthin habe ich sie jetzt in ein eigenes Verzeichnis geladen.
Und dann verließen sie ihn (mich).
@@Hellmut
Apache auf dem Server (beim Provider) kann ich nicht konfigurieren.
Doch, mit .htaccess-Datei(en). Die Frage ist, wieviel es dir dein Provider gestattet, damit zu konfigurieren.
Jolan tru
Hi
Apache auf dem Server (beim Provider) kann ich nicht konfigurieren.
Doch, mit .htaccess-Datei(en). Die Frage ist, wieviel es dir dein Provider gestattet, damit zu konfigurieren.
Ich habe jetzt meine Testdateien in das Verzeichnis test gelegt und in .htaccess angegeben:
....
RewriteEngine On
RewriteCond %{HTTP_HOST} test.MeineInternetSeite.de$ [NC]
RewriteRule ^(.*) https://www.MeineInternetSeite.de/test/de$1 [R=301,L]
Als Ergebnis kam:
Ist das rewrite nicht formal korrekt (Schreibfehler kann ich ausschließen)?
Hallo Hellmut,
bei den Rewrite-Angaben weiß ich nicht so recht, ob dein Gebrauch von ^ und $ so richtig ist. In RewriteCond testest Du %{HTTP_HOST} gegen test.example.com$, dieses Pattern würde auch für Hostnamen wie "keintest.example.com" zutreffen. Und auch für "testxexample.com", was aber egal ist, weil ein solcher Request nie bei Dir eintreffen würde. Trotzdem solltest Du den Punkt escapen, und wenn Du Hostnamen wie "meintest.... oder "notest..." nicht mit einfangen willst, dann setze ein ^ vor das RewriteCond Pattern.
Bei der RewriteRule matchst Du gegen ^(.*). Die Apache-Beispiele tun das auch, ich gehe also davon aus, dass das Sternchen einen greedy match macht und den gesamten Path-Teil der URL einsammelt.
Die große Frage ist aber: Wohin zeigt test.MeineInternetSeite.de? Ist dieser URL genau der Ordner zugeordnet, in dem die .htaccess Datei steht, worin sich deine Rewrite-Regeln befinden?
Da der Apache seine Default-Seite zeigt, könnte es sein, dass das nicht der Fall ist und die URL auf irgendeinen anderen Ordner zeigt, worin eine Apache-Defaultseite steht.
Ich weiß auch nicht, was das /de
im Umleitungsziel soll. Es kann meine Unerfahrenheit mit Apache sein, aber beachte auch, dass in RewriteRule
kein /
vor dem Pfad steht, d.h. bei einem Zugriff auf test.example.com/index.html
leitest Du weiter an www.example.com/test/deindex.html
, wenn ich mich nicht sehr täusche. Das SOLLTE auch in der Adresszeile des Browsers erkennbar sein, weil Du ja keinen Rewrite, sondern einen Redirect machst. Diese Adresszeile hast Du aber leider weggeschnitten.
Fazit: Ich sehe mehrere potenzielle Probleme. Welches Dich zu Fall bringt, weiß ich nicht. Ob Du, wenn Du eins davon löst, gleich darauf über das andere stolperst, weiß ich auch nicht. Viel Glück!
Rolf
Ich kann nur meine Dateien hochladen (z.B. mit Filezilla). Dorthin habe ich sie jetzt in ein eigenes Verzeichnis geladen.
Und dann verließen sie ihn (mich).
Das ist dann die Stelle an der ich mich darüber wundere, dass Du Dich (und sodann uns) noch nicht darüber informiert hast, was das überhaupt für ein Webserver ist:
Massenhosting oder (virtueller) Server, Root-Server oder gemanagt? Apache, nginx, IIS? Linux, Windows oder BSD?
Du solltest Dir bewusst sein, dass beim Thema „Server“ eine steile Lernkurve gibt. Und ja, Du musst, wenn Du eine „größere Internetanwendung übernehmen, aktualisieren und erweitern“ willst durch die selbe auch durch. Und das dann auch noch unfallfrei.
Das ist dann die Stelle an der ich mich darüber wundere, dass Du Dich (und sodann uns) noch nicht darüber informiert hast, was das überhaupt für ein Webserver ist:
Massenhosting oder (virtueller) Server, Root-Server oder gemanagt? Apache, nginx, IIS? Linux, Windows oder BSD?
Da bin ich völlig überfragt. Der Hoster ist Netbeat.
Massenhosting oder (virtueller) Server, Root-Server oder gemanagt? Apache, nginx, IIS? Linux, Windows oder BSD?
Da bin ich völlig überfragt. Der Hoster ist Netbeat.
Nun, dann frage doch endlich Deinen Auftraggeber. Da Netbeat sowohl Massenhosting als auch Hardware-Server sowie virtuelle Maschinen und diese Server auch noch sowohl als „Root-Server“ wie auch „gemanagt“ anbietet (Ja: Ich habe für Dich nachgeschaut!) bringt die Nennung der Firma weder Dich noch andere weiter.
Hallo Hellmut,
ich arbeite seit über 40 Jahren in der EDV einer Versicherung. Deswegen vertrete ich vielleicht einen sehr konservativen Standpunkt.
Und der lautet: Softwareentwicklung am Live-System ist grobe Fahrlässigkeit. Es gibt genau einen Fall, der das rechtfertigt: Irgendwie hat es ein fataler Bug ins Live-System geschafft, muss unverzüglichst eliminiert werden und Du weißt genau, was Du tun musst.
Bei regulärer Weiterentwicklung tut man das nicht. Selbst wenn Du es schaffst, deine Änderungen so zu erstellen, dass sie nur für Dich und ggf. ein paar Tester sichtbar sind, besteht jederzeit das Risiko, dass ein Softwarefehler die produktiven Daten verfälscht. Das fällt dann möglicherweise erst auf, wenn die beschädigten Datensätze bereits mehrere Backup-Generationen vergiftet haben.
ich soll eine größere Internetanwendung übernehmen, aktualisieren und erweitern.
Dieser Satz sagt mir: Du arbeitest in einem professionellen Umfeld und nicht in einer Hobbyklitsche - wie es bspw. Selfhtml ist.
Und selbst Selfhtml betreibt außer dem regulären Wiki ein Testwiki, in dem wir Codeänderungen verproben, bevor sie ins Hauptwiki kommen. Das aktuelle Projekt "Makeover des Selfhtml-Skins" wurde im Testwiki begonnen und findet nun allerdings im Hauptwiki statt, aber in einer Kopie des produktiven Skins (die man nach Wunsch aktivieren kann). Das hat einen Grund: die Datenbasis des Testwikis ist nicht hinreichend bzw. nicht alle Vorlagen sind identisch, so dass die Testzuverlässigkeit im Testwiki nicht gegeben ist.
Wenn Dir jemand in einem professionellen Umfeld verweigern will, professionell zu arbeiten, dann ist das ein Sparen am falschen Ende. Gerade bei einer größeren Anwendung können sich Änderungen unvermutet an Stellen auswirken, die man nicht bedacht hat, und ein „erfolgreicher Test“ (also einer, der einen Fehler nachweist) kann dann teuer werden.
Sicherlich gibt es Möglichkeiten, mit parallelen Codeversionen zu arbeiten. Man kann Schalter einbauen (wer bekommt alten und wer neuen Code), das ist lösbar. Das Hauptproblem ist jedoch, dass Du mit Code, der nicht oder nicht fertig getestet ist, auf produktiven Datenbeständen operierst. Und das tut man nicht.
Apache auf dem Server (beim Provider) kann ich nicht konfigurieren.
Jein. Euer Hoster sollte einige Einstellungen per .htaccess möglich machen.
Ich kann nur meine Dateien hochladen (z.B. mit Filezilla). Dorthin habe ich sie jetzt in ein eigenes Verzeichnis geladen.
Aber die eigenen Dateien operieren auf der produktiven Datenbank?
Ich habe mich für eine Subdomain entschieden.
Wie aber stelle ich sicher, dass beim Aufruf der Subdomain dieses Verzeichnis herangezogen wird?
Wenn die Verwaltungsoberfläche, die der Hoster bereitstellt, die Einrichtung von Subdomains ermöglicht, dann sollte dazu auch die Möglichkeit gehören, dieser Subdomain einen eigenen Ordner zuzuordnen. Bei dem früheren Hoster meiner privaten Website war es sogar so, dass das automatisch geschah. foo.example.com und example.com/foo zeigten auf den gleichen Ordner, ohne dass ich etwas konfigurieren musste.
Nachdem one.com die Preisschraube per Akkuschrauber betätigt hatte, bin ich zum Selfhtml-Hoster Manitu gewechselt und dort lege ich Subdomains in der Verwaltungsoberfläche fest und gebe an, auf welchen Ordner meines Webspace sie zeigen soll. Dort kann ich auch Datenbanken erzeugen, für eine Testkopie der Produktionsdatenbank beispielsweise.
Sag jetzt nicht, euer Webauftritt kann nur eine Datenbank. Dann wären wir doch wieder bei der Hobbyklitsche und nicht bei professionellem Umfeld. Ein größeres Hostingpaket ist nicht so viel teurer, und die zusätzliche Sicherheit einer vollständigen Testinstanz ist unbezahlbar.
Rolf
Hallo Rolf,
Hallo Hellmut,
ich arbeite seit über 40 Jahren in der EDV einer Versicherung.
<s> Und was hast du vorher gemacht? </s>
Wahnsinn, das schafft von uns keiner mehr!
Bis bald!
Jonathan
Hallo Jonathan,
Und was hast du vorher gemacht?
ab ca 1980 Computer als Hobby mit BASIC, C, Assembler
1984 Abi
1984/85 Bund. Der zählt mit, deshalb sind die 40 Jahre jetzt schon voll.
ab 1985 Ausbildung zum Math. Techn. Assistenten
ab 1988 Arbeit beim Ausbildungsunternehmen, mit COBOL, Clipper (dBase), Smalltalk, C++, C#, SQL. Batchprogramme, Windows Services, Webseiten, Windows-Dialogprogramme. Einiges in betrieblichen Fortbildungen gelernt, noch viel mehr bei Tante Google und bei Selfhtml.
ab 2030 peile ich die Rente an 😀
Wenn ich ab 1988 rechne, ok, dann sind's erst 37 Jahre. Mit der Hobbyzeit hingegen…
Hätte ich erstmal Informatik studiert, dann würden mir 5-6 Jahre an den 40 fehlen. Informatik habe ich nach der Ausbildung versucht, fernzustudieren. Ganz ehrlich? Das, was ich dort gelernt habe, hat mir im Berufsleben genau gar nichts genützt, drum habe ich vor dem Vordiplom aufgehört.
Rolf
Hallo,
also auf 40 Jahre komme ich auch noch nicht, egal wie ich es drehe und wende.
Wenn ich ab 1988 rechne, ok, dann sind's erst 37 Jahre. Mit der Hobbyzeit hingegen…
Ja wenn ich die noch mitrechne ... 😁
Ganz ehrlich? Das, was ich dort gelernt habe, hat mir im Berufsleben genau gar nichts genützt, drum habe ich vor dem Vordiplom aufgehört.
Also vieles, was ich im Studium gelernt haben sollte, kannte und wusste ich vorher schon. Ein paar wertvolle Dinge hat mir das Studium aber doch vermittelt, etwa die Basics von C (no pun intended) oder Grundkenntnisse über Unix.
Einen schönen Tag noch
Martin