Zum Inhalt springen

Just about .Net

It's just a blog about .Net…

Archiv

Tag: Test

Seit wenigen Tagen ist mein Onlinekurs zum Thema „Universal Apps automatisch testen“ bei der Microsoft Virtual Academy verfügbar. Mit 6 Modulen ist er dabei umfangreicher geworden als ich zunächst geplant hatte und doch hätte ich noch weit mehr Module erstellen müssen um wirklich alle Aspekte abzudecken.

So wird zunächst auf die grundsätzlichen Features zum automatisierten Test in Visual Studio eingegangen, bevor es mit einem Schlenker über die Architektur mit MVVM zu den Unit Tests, der Testisolation, Unit Tests von Java Script Apps und abschließend den Coded UI Tests geht.

Continue reading “MVA: Universal Apps automatisch testen” »

A colleague of mine asked me this week how he can emulate special keys in Coded UI Tests. I knew that I wrote that in my book but actually did not find the official reference in the MSDN. That’s why I will provide it here again.

The Keyboard class provides different methods with which you can send texts or key codes to the UI element currently selected. Some of these methods also allow the use of modifier keys like Ctrl or Alt.

Keyboard.SendKeys(“Message{ENTER}”);
Keyboard.SendKeys(“{F4}”, ModifierKeys.Alt);

All special keys are shown in the following list. They are usually surrounded by curly braces and can be part of any string (see also the example above).

Key Code
Backspace {BACKSPACE}, {BS} or {BKSP}
Pause {BREAK}
Capslock {CAPSLOCK}
Delete {DELETE} or {DEL}
End {END}
Return {ENTER} or ~
Esc {ESC}
Help {HELP}
Pos1 {HOME}
Insert {INSERT} or {INS}
Numlock {NUMLOCK}
Page Down {PGDN}
Page Up {PGUP}
Print {PRTSC}
Scrollock {SCROLLLOCK}
Tab {TAB}
F1… {F1}
Cursor up {UP}
Cursor down {DOWN}
Cursor left {LEFT}
Cursor right {RIGHT}
Addition (num block) {ADD}
Subtraction (num block) {SUBTRACT}
Multiplication (num block) {MULTIPLY}
Division (num block)) {DIVIDE}

Dieses Jahr war ich für Microsoft als Sprecher auf den Testing Info Days unterwegs. Dies waren zwei Veranstaltungen im März, bei denen ich jeweils in München und Hamburg über Unit Testing mit Visual Studio gesprochen habe. Der entsprechende Mitschnitt dazu findet sich auf Channel 9 und kann nachfolgend auch angesehen werden. Leider gab es wohl beim Schnitt ein paar Probleme mit den Folien wodurch diese nach einiger Zeit asynchron angezeigt werden :(

Weitere Informationen gibt es auch auf der entsprechenden Webseite von Channel9.

Ich gebe gern zu, dass ich mich am Anfang eher schwer mit TDD getan habe. Der Grund dafür war, dass die Lehren die ich aus Büchern und Dojos zog, so gar nicht in meinen Entwickleralltag passen wollten. Kleine Umsetzungsschritte die nicht selten durch sinnlos scheinende Zwischenaktionen geprägt waren, haben mich fast zur Weißglut getrieben. Wenn ich dann TDD anwendete verzichtete ich also auf diese Schritte und fand mich nach einiger Zeit wiederum damit konfrontiert, dass meine Tests viel zu komplex wurden und die angeblichen Vorteile von TDD praktisch nicht präsent waren.

Continue reading “„Ausprägungen des TDD“ aka „Die Triangulations-Baby-Step-Holzkeule“” »

„Agilität, Agilität, Agilität.“ So rauscht(e) es durch die Softwareentwicklungslandschaft. Jeder der nicht wenigstens iterativ arbeitet ist uncool, ewig gestrig, arbeitet fernab jeder Realität und wird auf Dauer einen langen und qualvollen Tot in der Change-Request-Refaktorisierungs-Bug-Ping-Pong-Hölle sterben. Na gut, letzteres passiert meiner Erfahrung nach eher denjenigen die sich all zu unvorsichtig auf die Agilität eingelassen haben ohne ihre tatsächlich gelebten Vorgehen einmal in Frage zu stellen.

Die Verschmelzung zweier Welten hat immer zur Folge, dass Teile dieser zwei in die Neue übergehen und das ist völlig richtig so. Dumm nur, wenn Dinge konvergieren die eigentlich besser nicht kombiniert werden sollten. Dann wird aus dem Elysion sehr schnell der Tataros. Genau das passiert meiner Meinung nach wenn sich die Qualitätssicherung nicht daran anpasst, dass Requirements verändert werden. Denn so viel hat das Mantra der Agilität erreicht: In den Köpfen ist angekommen, dass es besser ist auf Veränderung zu reagieren als einem strikten Plan zu folgen. Im Umkehrschluss also: Alles bleibt anders!

Continue reading “Agilität, Qualität & andere Missverständnisse…” »

… and all I got was this lousy Christmas tree.

I like TDD and I like test automation. It is great to see the application growing with each successful test and to be sure that it will work even if a lot of changes are made on the code base. On the other I see (especially) TDD as a practice which is hard to master and I can understand people who drop any ambition because it feels intricate and some times frustrating in real projects.

One of these things is for example the advice to use baby steps to drive the implementation. I thing this advice is essentially to TDD and makes, from my point of view, the difference between Test First and Test Driven Development. Baby steps means, that you are not allowed to implement more functionality than needed by your tests. If the test expects a 1 as return value of your method, than your first step would be to simply return a 1. Your algorithm will also grow with each test you write and that’s why it is called Test Driven Development. This has also the advantage that the your tests get more robust, they are easier to change and to read, at least in theory.

Continue reading “All I wanted was a pyramid…” »

Jedes Blog, in dem gelegentlich über Tests geschrieben wird und welches etwas auf sich hält, muss mindestens einmal etwas über das Testen von privaten Klassenmembern schreiben. Zugegeben in einem anderen Post habe ich bereits gezeigt wie das geht, nun habe ich aber endlich ein Praxisbeispiel an dem sich sehr gut zeigen lässt wann man evtl. einen anderen, sichereren Weg gehen sollte.

Entwickelt man seinen Code tatsächlich mit TDD, sollte sich die Frage nach dem Test von privaten Membern eigentlich kaum stellen. Dadurch dass nur Code geschrieben wird, der auch durch Tests abgesichert ist sollten sich in jedem Fall genügend Vorbedingungen ergeben um auch jede private Methode irgendwie durch die öffentlichen Schnittstellen zu prüfen.

Continue reading “Privates testen in dem es public wird…” »

Automatisiertes Testen mit Visual Studio 2012_kleinAnfang letzter Woche hat mein Video Training zur Testautomatisierung mit Visual Studio 2012, welches ich Ende letzten Jahres bei Video2Brain aufgenommen habe, endlich das Licht der Welt erblickt. Der Name des Trainings ist dabei Programm. Mir geht es nicht darum zu beschreiben wie Unit Tests oder sogar TDD mit Visual Studio realisiert werden können, sondern wie Tests generell automatisiert werden.

Ich mache diese Trennung, da aus meiner Sicht Visual Studio einen etwas schlechten Ruf im Bereich der Unit Tests hat, über diese hinaus aber noch wesentlich mehr Möglichkeiten bietet, die gern vergessen werden. Welche das im Einzelnen sind kann man der Beschreibung des Trainings entnehmen. Denn darin beschreibe ich mehr als die Hälfte der Zeit Themen wie Lasttests, Coded UI Tests oder Webleistungs Tests.

Ich mache in dem Training also keine direkte Unterscheidung zwischen Testern und Entwicklern, was auch der Grund ist warum ich im kurzen Theorieteil vor allem auf Beschreibungen aus dem Buch „Basiswissen Softwaretest“ von Andreas Spillner und Tilo Linz, statt auf die Definition einschlägiger englischsprachiger Autoren zurückgegriffen habe. Für mich ist Testautomatisierung ein generelles Thema mit dem ein Team sich insgesamt viel Arbeit ersparen kann und sollte nicht mit der Erstellung von Unit Tests enden.

Ich hoffe also, dass das Training nützlich ist und manchem vielleicht sogar den Weg zu test getriebenen Entwicklung ebnet, denn wo ein Test ist, da folgen sicher noch mehr…

Nun ist er vorbei, der Developer Openspace 2012 und hat mal wieder einen bleibenden Eindruck in meinem Langzeitgedächtnis hinterlassen. Dies fing schon mit dem interessanten und lehrreichen Workshop zu Windows Azure an. Danke an der Stelle an Sascha Dittmann für die (kostenlos) dargebotenen Informationen und die spätere Session zu Azure Service Bus.

Damit sind wir auch schon beim Thema, denn ich bin erneut überrascht mit welcher Qualität an Workshops und Sessions hier aufgewartet wurde. Alle Leute waren hoch motiviert, begeistert bei der Sache und nicht zögerlich Wissen aufzusaugen oder zu verbreiten, selbst wenn es um Themen ging die Entwickler laut Stereotyp nur peripher interessieren.

Continue reading “Developer Openspace 2012 – Erneut ein Erlebnis” »

Specflow und Gherkin sind sehr praktisch wenn es darum geht Tests zu verfassen und anschließend zu automatisieren. Dabei werden Tests klarsprachlich mit Gherkin formuliert und anschließend von Specflow in automatische Tests übertragen. Leider gibt es hier aber ein „kleines“ Problem bei der Zusammenarbeit mit den Coded UI Tests von Visual Studio. Diese verwenden, im Gegensatz zum sonst üblichen TestClass-Attribut, das Attribut CodedUITest.

Da Specflow für jede Feature Datei aber nur das TestClass Attribut verwendet, müssen wir nur also Hand anlegen und den Code Generator ein wenig erweitern. Wie man genau vorgeht ist bereits bei GitHub beschrieben, wo ich auch den Code für Version 1.9 nachgetragen habe. Ich würde das Vorgehen dennoch hier ein wenig ausführlicher beschreiben, damit es auch in Deutsch verfügbar ist.

Continue reading “Specflow 1.9 mit Coded UI Tests verheiraten” »