Frage

Ich schreibe eine Software und möchte sie Open Source veröffentlichen.

Sollte ich einfach versuchen, es auf meinem Computer stabil zu machen (bei normalem Gebrauch; keine "Dinge, die ein Affe nicht einmal tun würde"), bevor ich es freigebe, oder sollte ich einen anderen Ansatz wählen?


Was ich gerade tue, ist:

  1. Schreiben Sie es selbst während der pre-alpha -Phase, um es teilweise nutzbar zu machen.Spielen Sie mit den Funktionen herum (wie es ein normaler Mensch tun würde).
  2. Veröffentliche es öffentlich und füge während der alpha -Phase ein paar Schnickschnack hinzu
  3. Sagen wir, es ist im Jahr beta , wenn alle Funktionen abgeschlossen sind, und führen Sie dann zusammen mit einigen anderen (hoffentlich) den "Affentest" durch.
  4. Generiere die Werbung für mein [ziemlich einfach und langweilig, aber immer noch gut genug für kostenlos und stable ] Projekt.

Dann verbessere es weiter.Dies scheint ein übliches System zu sein (für mich, denjenigen, der das Ganze noch nie wirklich gemacht hat).


Gibt es etwas, das ich tun könnte, um automatisch auf grundlegende Fehler zu testen, bevor ich zur Alpha-Version gehe?Oder ist das eines der besten Dinge, die ich tun kann?Wie soll ich beim Testen vorgehen?

War es hilfreich?

Lösung

Da ich etwas in Ihrer Situation bin (derzeit ein PHP-basiertes CMS entwickle) hoffe ich, dass meine Erfahrung Ihnen helfen kann.

Testen ist der Schlüssel.Wiederholen Sie das, bis Sie glauben.Es hängt jedoch von der Programmiersprache ab, wie einfach es ist.Da ich in PHP entwickle, werde ich einige Beispiele dazu geben.

Entwicklung

Der wichtigste Punkt ist: Sie entwickeln die Software in erster Linie selbst.Wenn Sie in Ihrer Freizeit etwas tun, tun Sie es für sich selbst, machen Sie es zum Spaß.Tun Sie es nicht in der Erwartung „Ich möchte, dass andere zum Projekt beitragen“.Wenn Sie eine leere Codebasis erstellen, wird niemand dazu beitragen.Für die ersten Mitwirkenden benötigen Sie eine laufende Demo, die Ihre Software populär macht.

Für dieses Ziel müssen Sie die Software in erster Linie entwickeln.

  • Erstellen Sie eine Feature-Liste.
  • Fragen Sie sich: Was soll in dem Produkt enthalten sein, was nicht?

Diese Feature-Liste ist nicht heilig.Es wird sich während der Entwicklung ändern und Sie werden nicht alles wie geplant realisieren können.Aber es gibt Ihnen eine allgemeine Richtung, einige Ziele, auf die Sie zielen können.

Testen

Erstellen Sie eine testfreundliche Software.Verwenden Sie Dependency Injection, verhindern Sie Singletons und verwenden Sie Unit-Tests.Verwenden Sie am besten testgetriebene Entwicklung.Das heißt, Sie erstellen zuerst den Test und dann die getestete Klasse.Auf diese Weise müssen Sie die Spezifikation Ihrer Klasse kennen, bevor Sie sie schreiben.Es erspart später viel Ärger und motiviert die Mitwirkenden (sie müssen nur ihre eigenen Klassen testen).Änderungen der Implementierung können einfach getestet werden und wenn sie fehlschlagen, können Sie die Fehler sofort beheben.

Freisetzung

Kündigen Sie die Software nur an, wenn sie funktioniert und ohne Probleme.Verwenden Sie jedoch Github oder eine andere Code-Hosting-Site, um frühen Mitwirkenden die Möglichkeit zu geben, den Code zu sehen.Wenn sie wollen, können sie dazu beitragen.Aber Sie sind der Hauptentwickler der ersten Version.

Sobald die erste Version der Beta nahe kommt (alle Komponenten wurden hauptsächlich geschrieben und getestet und funktionieren zusammen), können Sie eine öffentliche Demo bereitstellen (die Ihr Produkt im Falle von Websoftware vorführt).Sammeln Sie Feedback der allgemeinen Benutzer der Software (Was fehlt?, Was kann besser gemacht werden?).So verpassen Sie den Kundenstamm nicht.Ihre anfängliche Funktionsliste wird sich auf die Funktionen konzentrieren, auf die sich Entwickler konzentrieren.Das ist natürlich und OK.Aus diesem Grund benötigen Sie jedoch dieses Beta-Feedback Ihrer potenziellen Benutzer.

Gehen Sie dann das Feedback durch, entwickeln Sie fehlende Funktionen, beheben Sie vorhandene Fehler usw. Wenn alles funktioniert (automatische Tests wie Unit-Tests und Funktionstests werden das viel einfacher machen), können Sie Ihr Produkt veröffentlichen.

Wartung

Ihre Arbeit ist nicht erledigt, wenn sie draußen ist.Wenn es draußen ist, beginnt Ihr richtiger Job.Jetzt müssen Sie Ihr Produkt (sowohl Nutzung als auch Codeentwicklung) auf der Website Ihres Produkts bewerben.Schreiben Sie eine gute Entwicklerdokumentation (zusätzlich zu der aus Codekommentaren generierten API-Dokumentation), die Dinge erklärt, die Sie in der API-Dokumentation nicht finden (Best Practices, Do's and Don'ts usw.).

Andere Tipps

Unit-Tests sind für Ihr Projekt aus verschiedenen Gründen erforderlich.

  1. Ermöglicht Ihnen, die grundlegende Funktionalität Ihrer Anwendung zu testen.
  2. Ermöglicht Ihnen sicherzustellen, dass neue Funktionen keine Rückschritte verursachen.
  3. Gute Komponententests geben Verbrauchern und Betreuern eine Vorstellung davon, wozu Ihre Anwendung fähig ist.
  4. Gute prägnante Unit-Tests ermutigen Sie, guten prägnanten Code zu schreiben.Schließlich ist guter, prägnanter Code einfacher zu testen.

Unit-Tests erhöhen Ihre anfängliche Entwicklungszeit.Aber als Ausgleich werden Sie viele dieser heimlich auftretenden Fehler vermeiden, wenn Ihr System wächst.Wenn Sie ein gewisses Maß an Projektkomplexität erreicht haben, können Ihre Unit-Tests außerdem beginnen, Entwicklungszeit zu sparen, da die meisten Codierungen wahrscheinlich vorherigen Code beinhalten und Unit-Tests Ihnen eine ziemlich solide Sicherheit geben, dass nichts beschädigt wird, was zuvor funktioniert hat.

Ein weiterer Punkt, der für die Codierung von Unit-Tests spricht, besteht darin, dass sie tendenziell zu besserem Code führt, da testbarer Code im Allgemeinen weniger gekoppelt ist als schwer zu testender Code.

Wenn Sie eine Webanwendung entwickeln, sind funktionale automatisierte Tests eine sehr gute Möglichkeit, Ihre Anwendung nach einigen Änderungen rückgängig zu testen.Ich habe Selen für diesen Zweck schon einmal verwendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top