EDIT: Dank der ncie commenters, erhalte ich den Unterschied zwischen Einheit und automatisierten Tests, so umbenannt ich das ThemaWie startet man das automatisierte Testen einer großen Anwendung?
Environement: .net 2.0, SQL Server 2005, Windows Server 2003
ich diesen Artikel lesen :
http://www.codeproject.com/KB/tips/convince.aspx
spricht Dieser Kerl darüber, wie Sie ohne changng alles automatisierte Tests zu einer bestehenden App hinzufügen können.
Und ich muss sagen, dass dieser Artikel wirklich genial ist und mich dazu bringen möchte, es auszuprobieren!
Also unser System ist fast das gleiche: alle Daten sind über Web-Dienste zugänglich, so können wir leicht (mit soapui zum Beispiel) einige automatisierte Tests gegen diese Webdienste durchführen.
ABER: Was ist mit der Datenbank? Um automatisierte Tests durchführen zu können, benötigen wir die korrekten Daten in der Datenbank, die dem automatisierten Test entsprechen.
Zum Beispiel, wenn ich einen automatisierten Test machen möchte, der überprüft, dass die Software einen Fehler erzeugt, wenn der Name des Klienten leer ist, muss ich in meinem db einen Klienten mit einem leeren Namen hinzufügen.
hier ist, wie ich glaube, ich kann es tun:
- schaffen einen Server mit allem, was es braucht (IIS, SQL Server ...)
- etwas hinzufügen, damit das Datum dieses Servers nie so ändern ich habe nicht die Zeit, in meinem automatisierten Test ändern
- in meiner Datenbank hinzufügen, die Datensätze ich brauche meinen automatisierter Test
Problem zu tun: die Datenbank wird ein großes Durcheinander in seinem nach 10 automatisierten Test, und ich werde ne ver wissen, welcher Datensatz für welchen automatisierten Test ist. Die Idee wäre, eine Tabelle "TEST_NAME" zu jedem Tisch hinzuzufügen, aber es ist ein bisschen schmutzig in meinem Kopf.
Also hast du jemals diese Art von Technik ausprobiert? Haben Sie bestimmte Werkzeuge benutzt? Ist meine Art zu denken die Gute? (oder zumindest ein gutes).
Dank
EDIT: Ich habe 2 -1 für diesen Thread, Ich mag gerne wissen, warum so werde ich den gleichen Fehler zweimal nicht.
Sie möchten mehr Komponententests durchführen (verwenden Sie Mocks and Fakes anstelle der realen Datenbank) und weniger Tests auf Systemebene, die häufig unterbrochen werden, da diese Tests stark von der Umgebung und der realen Datenbank mit bestimmten Datensätzen abhängen. Dies wird für Sie eine größere Herausforderung sein, da Sie Ihre Tests nicht vor der Entwicklung geschrieben haben. Das Buch "Michael Feathers", das effektiv mit Legacy-Code funktioniert, kann Ihnen bei Ihrem Szenario helfen. –
@Remi - Sie könnten den 'Komponententest' in 'automatischen Test' ändern. Komponententests sind von externen Ressourcen wie Datenbanken, Dateisystemen und Netzwerken isoliert. –
@Jeff: Hier möchte ich nur meine Business-Schicht (= Web-Service) testen, nicht meine Datenbank, aber ich muss Testdaten in meiner Datenbank hinzufügen, damit es funktioniert. @Chris O: Wie Omar in dem Artikel sagt, hier ist das Ziel, nur Komponententest zu schreiben, unser Code ist nicht bereit zum Spott (und auch die Entwickler), also denke ich, dass wir unsere Datenbank benutzen müssen. –