kesslerd / dotnet_testat Goto Github PK
View Code? Open in Web Editor NEWTestat for .Net and WPF
Testat for .Net and WPF
Eine Reservation muss 24 Stunden oder mehr dauern. Prüfen Sie dies und stellen Sie auch
sicher, dass das «bis» Datum nicht nach dem «von» Datum liegt. Falls nicht muss eine
InvalidDateRangeException ausgelöst werden (noch nicht implementiert).
Kapseln Sie die Logik in eine separate Methode, damit das Schreiben von Tests (siehe unten)
einfacher bleibt.
• Abfragen einer Liste
• Suche anhand des Primärschlüssels
• Suche anhand eines ungültigen Primärschlüssels
• Einfügen
• Löschen
• Updates
• Abfrage der Verfügbarkeit eines Auto (je einmal true / false als Antwort)
Ausserdem muss das Fault-Handling darauf hin geprüft werden, ob Exceptions sauber
gefangen und in Faults verpackt werden
• Updates mit Optimistic Concurrency Verletzung auf allen 3 Entitäten
• Alle Entitäten lesen
• Eine Entität anhand des Primärschlüssels lesen
• Einfügen
• Update
• Löschen
Als Administrator möchte ich ein Auto hinzufügen können. Ich bin zufrieden, wenn ich in
einem Fenster ein Auto mit all seinen Eigenschaften erfassen und in der DB speichern kann
Fault Handling from service
Als Administrator möchte ich ein einen Kunden entfernen können. Ich bin zufrieden, wenn ich ein
einen Kunden in der Liste/Tabelle markieren und dieses/diesen nach Bestätigen einer
Sicherheitsrückfrage aus der Liste/Tabelle und der DB entfernen kann.
Dies sollte mindestens fünf Tests ergeben (2+ gültige Kombinationen, 3+
ungültige Kombinationen).
Beim Erstellen / Updaten einer Reservation muss geprüft werden, ob ein Auto für den
gewünschten Zeitraum zur Verfügung steht. Autos können nahtlos (Ende = Start), aber nicht
überlappend gebucht werden. Falls ein Auto nicht verfügbar ist, muss eine
AutoUnavailableException ausgelöst werden (noch nicht implementiert).
Kapseln Sie die Logik in eine separate Methode, damit das Schreiben von Tests (siehe unten)
einfacher bleibt.
Als Administrator möchte ich einen Kunden hinzufügen können. Ich bin zufrieden, wenn ich in
einem Fenstereinen Kunden mit all seinen Eigenschaften erfassen und in der DB speichern kann
Als Administrator möchte ich alle verfügbaren Autosangezeigt bekommen, um mir einen
Überblick über die verfügbaren Basisdaten zu verschaffen. Ich bin zufrieden, wenn alle Eigenschaften in
einer Liste/Tabelle angezeigt werden und ich diese nach den Eigenschaften/Spalten sortieren kann.
• Abfragen einer Liste
• Suche anhand des Primärschlüssels
• Suche anhand eines ungültigen Primärschlüssels
• Einfügen
• Löschen
• Updates
• Abfrage der Verfügbarkeit eines Auto (je einmal true / false als Antwort)
Ausserdem muss das Fault-Handling darauf hin geprüft werden, ob Exceptions sauber
gefangen und in Faults verpackt werden.
• Updates mit Optimistic Concurrency Verletzung
• Alle Entitäten lesen
• Eine Entität anhand des Primärschlüssels lesen
• Einfügen
• Update
• Löschen
• Abfragen einer Liste
• Suche anhand des Primärschlüssels
• Suche anhand eines ungültigen Primärschlüssels
• Einfügen
• Löschen
• Updates
• Abfrage der Verfügbarkeit eines Auto (je einmal true / false als Antwort)
Ausserdem muss das Fault-Handling darauf hin geprüft werden, ob Exceptions sauber
gefangen und in Faults verpackt werden.
• Updates mit Optimistic Concurrency Verletzung
• Insert mit ungültigem Date Range
• Update mit ungültigem Date Range
• Insert mit nicht verfügbarem Auto
• Update mit nicht verfügbarem Auto
Ist der Code sauber strukturiert (einheitlicher Stil, keine TODOs, Dokumentation nichttrivialer
Stellen)? Ist der Code in einem Repository eingecheckt? Sind Tests vorhanden?
Als Administrator möchte ich eine Reservation erstellen können. Ich bin zufrieden, wenn ich ein Auto und
einen Kunden auswählen, die Eckdaten der Reservation festlegen und diese in der DB speichern kann.
Als Administrator möchte ich ein Auto entfernen können. Ich bin zufrieden, wenn ich ein
Auto in der Liste/Tabelle markieren und dieses/diesen nach Bestätigen einer
Sicherheitsrückfrage aus der Liste/Tabelle und der DB entfernen kann.
Damit auf allen Rechnern des Teams der gleiche
Connection String verwendet werden kann, führen Sie bitte folgendes Script aus:
Assets\AutoReservation.CreateInstance.bat
Prüfen Sie nach dem Ausführen des Scripts den Output auf der Kommandozeile. In der Liste
der lokalen Micros
Dies sollte mindestens fünf Tests ergeben (2 gültige Kombination 3
ungültige Kombinationen von Datumswerten).
Bisher hat keine der Entities irgendwelche Constraints und/oder Validierungen für zwingende Felder. Diese werden aber gebraucht, damit nicht ungültige Einträge in die Datenbank hineinkommen.
Jede Update-Methode muss nach dem Optimistic Concurrency-Prinzip implementiert werden.
Entity Framework löst bei einer Optimistic Concurrency-Verletzung eine Exception vom Typ
DbUpdateConcurrencyException aus. Im Falle des Auftretens einer solchen Exception soll
eine OptimisticConcurrencyException (existiert bereits) geworfen, welche die neuen in der
Datenbank vorhandenen Werte beinhaltet.
Für das Handling dieser Exception kann die bereits bestehende Methode ManagerBase.
CreateOptimisticConcurrencyException(…) direkt im catch-Block aufgerufen und weiter
geworfen werden
Als Administrator möchte ich alle verfügbaren Kunden angezeigt bekommen, um mir einen
Überblick über die verfügbaren Basisdaten zu verschaffen. Ich bin zufrieden, wenn alle Eigenschaften in
einer Liste/Tabelle angezeigt werden und ich diese nach den Eigenschaften/Spalten sortieren kann.
Behandelt die App Fehler und gibt dazu Feedback? Ist die Nutzerführung verständlich?
Entspricht das User Interface den besprochenen Prinzipien?
Als Administrator möchte ich eine Reservation entfernen können. Ich bin zufrieden, wenn ich eine
Reservation in der Liste/Tabelle markieren und diese aus der Liste/Tabelle und der DB entfernen kann.
• Alle Entitäten lesen
• Eine Entität anhand des Primärschlüssels lesen
• Einfügen
• Update
• Löschen
Als Administrator möchte ich die aktuellen Reservationen anzeigen können, um den Betrieb des
Reservationssystems überwachen zu können. Ich bin zufrieden, wenn ich die Reservationen in einer
chronologisch sortierten Liste/Tabelle ansehen kann, welche sich selbst in regelmässigen Zeitabständen
von einigen Sekunden aktualisiert (Optional: Aktualisierung des User Interfaces in Echtzeit). Zudem hätte
ich gerne einen (standardmässig gesetzten) Filter, um nur die laufenden Reservationen anzuzeigen
Alle Tabellen erhalten einen Zeitstempel, welcher bei jedem Update automatisch von
der Datenbank aktualisiert wird. Beim Speichern wird geprüft, ob der Zeitstempel in der
Tabelle noch gleich dem des zu speichernden Objektes ist. Falls nicht, wurde der
Datensatz in der Zwischenzeit geändert. Dieser Ansatz wird hier empfohlen.
Relativ geringer Aufwand. Es muss aber berücksichtigt werden, dass der Zeitstempel
immer korrekt über die Schichten weitergegeben wird und nie verloren/vergessen
geht.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.