Immer wissen, was läuft

Visual Studio IntelliTrace: erfolgreiches Qualitätsmanagement
Kommentare

Softwareentwicklung kann nervenaufreibend sein. Als Entwickler glaubt man oft, die Arbeit sei getan, wenn die Software eingecheckt ist. Doch oft macht man dabei die Rechnung ohne die Qualitätssicherung, die überraschenderweise doch noch viele Fehler in der Software entdeckt. Obschon der Proband bereits erfolgreich seine Komponententests absolviert hat. Da diese Tests oft im Blackbox-Verfahren durchgeführt werden, kann die Ursachenanalyse für Entwickler zu einer nervigen Angelegenheit werden. Doch IntelliTrace aus dem neuen Visual Studio 2013 könnte dem intransparenten Anwendungsverhalten aus den Systemtests den Schleier entreißen. Nebenbei stellt Ihnen dieser Artikel die wichtigsten neuen Features der gerade veröffentlichten 2013er-Version vor. Ein Ausblick auf die Visual-Studio-Version 2014 soll den Artikel abrunden. So können Sie Ihren Entwicklerkollegen in der Kaffeerunde schon heute erklären, wo es zukünftig in Sachen Visual Studio langgeht.

Qualität ist teuer. Testteams oder gar Testlabors benötigen ein entsprechend großes Budget. Von Testingenieuren initiierte Anfragen und Klärungen halten Entwickler von ihrer eigentlichen Arbeit ab. Der Zeitplan ist durch hohe Fehlerzahlen bedroht, und der Kunde lässt sich leicht vom billigsten Angebot bei einer Ausschreibung überzeugen. Entscheidungsträger in der Softwarebranche führen allzu oft diese oder ähnliche Argumente an, wenn das Thema Softwarequalität oder Softwaretest angeschnitten wird. Sie klingen fast schon wie Entschuldigungen, um umfangreiche Qualitätssicherungsstrategien nicht einführen zu müssen.

Um es gleich vorweg zu sagen: Die Einführung eines QM-Systems ist grundsätzlich ein nicht zu unterschätzender Kostenfaktor. In der Regel sind bei einer Systemeinführung alle Prozesse des Unternehmens betroffen, die es auf die hohen Anforderungen hin anzupassen gilt. Auch Testsysteme werden in Bezug auf ihre tatsächlichen Anschaffungs – und vor allem Unterhaltskosten – ungeachtet der Branche – zu gering abgeschätzt. Dies gilt auch für die Softwareindustrie.

So erklärte Bill Gates (damals CEO der Microsoft) bereits in der Dezember-Ausgabe 2002 der Information-Week: „Wir beschäftigen genauso viele Tester wie Entwickler. Wenn wir ein neues Windows-Release vorbereiten, geht über die Hälfte des Budgets allein in die Qualitätskontrolle“ (ins Deutsche übersetzt). Microsoft stellt sich also schon seit Langem folgende Fragen:

  • Wie können QS-Prozesse in Softwareentwicklungsprozessen optimiert werden?
  • Wie müssen QS-Werkzeuge beschaffen sein, um effektive Qualitätssicherungsmaßnahmen zu unterstützen?
  • Wie kann eine umfassende Transparenz in der Qualitätssicherung etabliert werden, damit Entscheidungen auf einer guten Informationsbasis getroffen werden?

Diese Fragen führten zu einem kontinuierlichen Ausbau und der Weiterentwicklung von Tools zur Unterstützung der Qualitätssicherung im Bereich von Team Foundation Server und Visual Studio. Das neue Visual Studio 2013 bietet gerade dem Qualitätsingenieur neue Optionen für eine effektive Arbeit im Softwaretest. Mit IntelliTrace lassen sich ganz neue Wege innerhalb der Qualitätssicherung beschreiten, die es Entwicklern erlaubt, schneller die Problemursachen zu Fehlwirkungen zu erkennen. Entsprechend reduziert sich die Bugfixing-Zeit pro Defekt.

A Fool with a Tool is still a Fool!

Sicherlich kennen Sie den Ausdruck: Er betont, dass allein ein hochentwickeltes Werkzeug noch lange kein Garant für den Erfolg ist. Gerade an diesen Satz sollte man sich wieder erinnern, wenn man an IntelliTrace und dessen Möglichkeiten denkt. Es scheint die berühmte „eierlegende Wollmilchsau“ zu sein: der Quantensprung in der Softwareentwicklung schlechthin. Doch auch hier sind die Entwicklung und Umsetzung geeigneter Strategien entscheidend, um die gesteckten Qualitätsziele tatsächlich zu erreichen. Im Bereich der Softwarequalität ist es deshalb wichtig,

  • geeignete Teststrategien zu entwickeln,
  • eine hinreichend präzise Planung zu realisieren, deren Vorhersagequalität sich kontinuierlich verbessert,
  • effektive und effiziente Prüfprozesse einzuführen
  • und ein gut funktionierendes Berichtswesen mit aussagefähigen Reports aufzubauen.

Microsofts Visual Studio bringt die notwendigen Werkzeuge mit, um diese Punkte zu unterstützen. Hochentwickelte Testwerkzeuge, wie das IntelliTrace, setzen eine profunde Konzeption und Planung voraus: Erst hierdurch entfaltet diese Toolgattung ihr ganzes Potenzial. Es würde jedoch den Rahmen dieses Fachartikels sprengen, ein Beispiel für eine umfassende Testkonzeption und -planung zu erläutern. In einigen Infoboxen finden Sie jedoch weitere Informationen zu diesem Thema.

Team Foundation Server

Wie in Abbildung 1 zu sehen, ist der Team Foundation Server (TFS) das zentrale System, das die verschiedenen Microsoft-Systeme – wie beispielsweise Visual Studio und Sharepoint – oder gar Third-Party-Produkte in die Entwicklungsumgebung integriert.

 Abb. 1: Die verschiedenen Teilsysteme einer TFS-/Visual-Studio-Entwicklungsumgebung

Der Team Foundation Server bietet die Möglichkeit, den kompletten Prozess über das Application Lifecycle Management abzubilden. Anforderungs- und Projektmanagement werden mit der Funktion Planning abgedeckt. Versionsmanagement verbirgt sich hinter SCM (Sourcecode-Management). Work Item Tracking ist ein ganz zentraler Punkt im Team Foundation Server und meint die Nachvollziehbarkeit von der Anforderung über die Aufgabe bis zum Quellcode und Test. So ist genau nachvollziehbar, welche Anforderung in welchem Quellcode umgesetzt wurde und wann Anforderungen tatsächlich getestet wurden. Continuous Delivery bedeutet die fortwährende Lieferung von Mehrwerten in Form von neuer Funktionalität. So kann schneller und genauer auf Kunden- und Marktanforderungen reagiert werden. Build Automation beinhaltet das automatische Erstellen und Testen der Anwendung und ist meist der zweite Baustein nach dem Versionsmanagement, der von Kunden eingeführt wird. Feedback Management heißt, permanent die Einschätzung der Nutzer in den Entwicklungsprozess aufzunehmen und anhand dessen Entscheidungen zu treffen. Die Funktionen werden je nach Bedarf in den Projekten genutzt. Sie müssen also nicht alle Bausteine in allen Projekten nutzen. Allerdings ziehen Sie den größten Nutzen aus dem Team Foundation Server, wenn Sie ihn möglichst durchgängig nutzen.

Natürlich stehen bereits Standardprozesstemplates für Scrum, MSF Agile und MSF CMMI zur Verfügung. Diese können auf die eigenen Bedürfnisse hin angepasst oder auch um weitere Templates ergänzt werden, sodass eine umfassende Anpassung der Entwicklungslandschaft an das vorherrschende Entwicklungsumfeld möglich ist. Als Clients kommen für den Entwickler Visual Studio oder auch Eclipse in Frage. Somit eignet sich der Team Foundation Server neben der .NET-Entwicklung auch für weitere Plattformen von Web bis Android. Über die Git-Integration kann selbst ein iOS-Entwickler den Team Foundation Server nutzen. Daneben können aber auch Projektleiter, Product Owner oder Tester ihre Daten auf besagtem Server ablegen. Das komfortable Berichtswesen über MS Office unterstützt eine hohe Projekttransparenz bezüglich den erfolgskritischen Aspekten zu Zeit, Budget und auch Qualität und liefert die entscheidungsrelevanten Kennzahlen für das Management.

Visual Studio: Kurzvorstellung

Die neuen Versionen bringen Verbesserungen in vielen Produktbereichen, wie beispielsweise bei dem .NET Frameworks (Version 4.5.1), den Programmiersprachen, dem ASP.NET, vielen Modellierungswerkzeugen, der Teamkollaboration und dem Testmanagement.

Viele Optimierungen im Vergleich zur 2012er-Version fanden im Detail statt. So können nun Testergebnisse und Work-Items direkt mit dem betreffenden Programmcode assoziiert werden. So kann der Programmierer über neue Aufgaben oder Testergebnisse informiert werden, die dann im Zusammenhang mit dem betreffenden Code angezeigt werden. Das Debugging für asynchronen Code wurde verbessert, und es wird auch Git, das dezentrale Open-Source-Versionskontrollsystem in TFS, unterstützt. Ferner gibt es nun Migrationspfade von den Microsoft-Tool-Ergänzungen Visual Studio Lightswitch und WebMatrix nach Visual Studio.

Visual Studio Lightswitch: Bei Lightswitch handelt es sich um eine Entwicklungsumgebung für datengetriebene Geschäftsanwendungen, die nun mit den Professional-, Premium- und Ultimate-Editionen von Visual Studio ausgeliefert wird. Das Tool vereinfacht den Aufbau von Anwendungen, die auf die Eingabe, die Anzeige und das Ändern von Daten im SQL Server, SQL Azure oder Sharepoint fokussieren. Lightswitch wurde entwickelt, um zum Beispiel Rapid Prototyping von Businessanwendungen zu unterstützen. Mithilfe von mitgelieferten Vorlagen für Lightswitch wird die Komplexität einer Visual-Studio-Umgebung reduziert beziehungsweise verborgen. Es stehen auch Tools für die Generierung von Visual Basic und C#-Code bereit, sodass der entwickelte Geschäftslogikcode auf die volle Visual-Studio-Umgebung umgesetzt werden kann, um dann die fortgeschrittenen Entwicklungstools von Visual Studio zu nutzen. So kann Lightswitch im Rahmen eines großen Projekts in der Vorstudie genutzt werden, um tiefere Erkenntnisse über die projektierte Anwendung zu erfahren. Da von Lightswitch nach dem vollumfänglichen Visual Studio ohne Migration gewechselt werden kann, können die Arbeiten der Vorstudie im Rahmen des eigentlichen Entwicklungsprojekts problemlos weiterverwendet werden. Lightswitch-Anwendungen können auch mit Office-Anwendungen wie Excel, Word und Outlook integriert und als eigenständiges Ausführungsprogramm etabliert werden.

WebMatrix: Hierbei handelt es um eine IDE zur Entwicklung von Websites. Die Entwicklungsumgebung ist auf kleine Entwicklungsteams hin ausgerichtet. Die IDE unterstützt PHP und ASP. Es gibt Migrationspfade zu Visual Studio und SQL Server.

Neue Features in Visual Studio 2013

In Abbildung 2 ist die Roadmap von Microsoft für die Visual-Studio-Produktreihe abgebildet.

Abb. 2: Microsoft Roadmap für Visual Studio

Die Visual-Studio-Version 2013 wurde im November 2013 der Öffentlichkeit vorgestellt und wird seitdem von Microsoft ausgeliefert. Microsoft plant für dieses Jahr quartalsweise Updates für die aktuelle Version. Ende 2014 soll dann das neue Release erscheinen. Die Planung sieht vor, dass Visual Studio 2014 mit dem .NET Framework 5 ausgeliefert wird.

Im aktuellen Visual Studio sind die folgenden vier zentralen Neuerungen Plan, Develop, Operate und Release eingeführt worden.

Plan: Agile Portfolio Management ermöglicht einen unternehmensweiten Product Backlog. Anforderungen können in mehreren Ebenen verschachtelt und unterschiedlichen Teams zugordnet werden. Wenn eine flache Liste von Anforderungen im Product Backlog nicht ausreichend ist, dann ist diese Funktionalität sehr hilfreich. Kanban wurde aus der Automobilfertigung auf die Softwareentwickung übertragen, wonach ein kontinuierlicher Fluss notwendig ist, um Kunden neue Funktionalität bereitstellen zu können. Mit dem anpassbaren Kanban Board kann der Zustand der Anforderungen einfach und übersichtlich dargestellt werden. Welche Anforderungen sind genehmigt, implementiert, getestet und ausgeliefert worden? Solche Fragen können dann auf einen Blick beantwortet werden. Work Item Tagging bietet die Möglichkeit, Anforderungen oder Aufgaben mit Schlagworten zu versehen und diese danach zu durchsuchen.

Develop: In einem Team Room können Teammitglieder sich über Arbeitsaufgaben oder auch Quellcode austauschen. Darüber hinaus können Ereignisse, wie z. B. Check-ins oder Build-Vorgänge, protokolliert werden. Gerade für Reviews ist diese Art der Dokumentation sehr hilfreich. Beim Team Foundation Server 2013 können Sie beim Anlegen eines neuen Projekts zwischen dem bisherigen Versionsmanagementsystem oder auch Git wählen. Git erfreut sich für verteiltes Versionsmanagement großer Beliebtheit und vermeidet unnötigen Migrationsaufwand bei der Nutzung von Git. Code Information Indicators blenden ähnlich einem HeadUp-Display Informationen, wie z. B. Referenzen oder letzte Änderungen an einer Methode, im Editor ein, die besonders häufig benutzt werden. Mit dem .NET Memory Dump Analyzer kann die Ursache eines Absturzes schneller eingegrenzt werden. Load Testing as a Sevice ermöglicht Lasttests mit Visual Studio Online in der Cloud binnen fünf Minuten, ohne eine aufwändige Infrastruktur von Testagenten selbst aufzusetzen.

Operate: Unter dem Begriff DevOps wird eine engere Zusammenarbeit zwischen dem Betrieb und der Entwicklungsabteilung verstanden, um Probleme im Betrieb einer Applikation schneller in der Entwicklung beheben zu können. Mit der Integration von System Center ist eine automatische Übertragung von Incidents an den Team Foudation Server mit weiteren Informationen zu Performanceproblemen oder Fehlern möglich.

Release: Bisher endete der Entwicklungsprozess mit dem Erstellen der Anwendung, und häufig wurde die Frage gestellt, wie denn die Anwendung beispielsweise in das Test-, Integrations- oder Produktivsystem übertragen werden kann. Mit dem neuen Releasemanagement können die hierzu notwendigen Verteilungsprozesse definiert und überwacht werden.

Aufmacherbild: business man writing quality management concept von Shutterstock / Urheberrecht: Dusit [ header = Seite 2: IntelliTrace-Einsatzgebiete ]

IntelliTrace-Einsatzgebiete

IntelliTrace ist dem – von der Luftfahrtindustrie her bekannten – Verfahren eines Flugschreibers sehr ähnlich. Für auf .NET basierende Anwendungen ab der Version 2.0 kann diese Methode erfolgreich eingesetzt werden. Darüber hinaus können auch C#- oder Visual-Basic-Anwendungen, die auf ASP, .NET, WPF, WCF oder Windows Workflow Foundation basieren, bis hin zu Sharepoint-Anwendungen IntelliTrace einsetzen. Nicht unterstützt werden hingegen C++, Script und andere, hier nicht erwähnte, Programmiersprachen.

Das Thema Cloud beziehungsweise Software as a Service (SaaS) ist in den letzten Jahren zum absoluten Hype geworden. Microsoft unterstützt Entwickler mit dem neuen Visual Studio 2013 auch umfänglich bei der Entwicklung derartiger IT- und Anwendungssysteme. So kann IntelliTrace in der neuen Version 2013 auch diese Bereiche umfassend bedienen. Bei Windows-Azure-Projekten kann der Softwareentwickler im Visual Studio in den Optionen zum Veröffentlichen angeben, ob IntelliTrace aktiv sein soll.

Mit der Version Visual Studio 2010 war es ursprünglich für eine engere Abstimmung zwischen Test- und Entwicklungsabteilung gedacht. Ab Visual Studio 2012 ist es auch für den Betrieb einsetzbar und ein wesentlicher Bestandteil der so genannten DevOps-Initiative, um die Abstimmung zwischen Betrieb und Entwicklung zu verbessern. Eine häufig gestellte Frage ist die, in welcher der vielen Editionen von Visual Studio diese Funktionalität enthalten ist und wer diese benötigt. IntelliTrace ist lediglich in der Ultimate-Edition von Visual Studio enthalten. Diese Version wird aber nur für die Auswertung der IntelliTrace-Daten benötigt, nicht jedoch für die Datenaufzeichnung.

IntelliTrace-Funktionsprinzip

IntelliTrace kann in der Entwicklung wie auch im Betrieb zur besseren Beschreibung von Fehlersituationen verwendet werden und so verschiedene Abschnitte des Entwicklungsprozesses beschleunigen.

Abb. 3: Funktionsweise von IntelliTrace

Wie in Abbildung 3 dargestellt ist, wird IntelliTrace zum Laufzeitpunkt eingeschaltet. Dies kann beispielsweise über die System-Center-Integration oder über Kommandozeilentools geschehen. Der Testingenieur wird es aber in aller Regel über den Testmanager aktivieren und der Entwickler direkt aus Visual Studio heraus. Aber dazu später mehr.

Die Kommandozeilentools werden in Form der Datei IntelliTraceCollection.cab bereitgestellt und benötigen ca. 13 MB Speicherplatz auf der Festplatte. Zusätzlich wird ein Verzeichnis für Log-Dateien benötigt. In meinem Beispiel heißt dieses Verzeichnis LogFileLocation. Da die Größe der Log-Datei begrenzt werden kann, wird ein Vollschreiben des Plattensystems verhindert. Die Datei wird nach dem Erreichen der maximalen Größe nach dem FiFo-Prinzip (First in – First out) überschrieben.

Bei Administratoren erfreut sich die PowerShell großer Beliebtheit, und so sollte ein kleines Beispiel hilfreich sein, wie IntelliTrace aktiviert werden kann. Um IntelliTrace-Kommandos nutzen zu können, importieren Sie in der PowerShell-Konsole das IntelliTrace-PowerShell-Modul mit dem folgenden Kommando:

Import-Module 
c:IntelliTraceMicrosoft.VisualStudio.IntelliTrace.PowerShell.dll.

Das Starten von IntelliTrace erfolgt über das Kommando Start-IntelliTraceCollection. Die Parameter können Sie sich mittels

Get-Help Start-IntelliTraceCollection 

anzeigen lassen. In meinem Beispiel starte ich dann IntelliTrace durch den Aufruf

Start-IntelliTraceCollection "FabrikamFiber.Extranet.Web" 
c:IntelliTracecollection_plan.ASP.NET.trace.xml c:LogFileLocation.

In der Datei collection_plan.ASP.trace.xml werden die Einstellungen für IntelliTrace spezifiziert, die in dem Abschnitt „Optionen“ näher beschrieben werden. Der aktuelle Status kann über

Get-IntelliTraceCollectionStatus -ApplicationPool "FabrikamFiber.Extranet.Web" 

angezeigt werden. Das Stoppen von IntelliTrace erfolgt über

Stop-IntelliTraceCollection "FabrikamFiber.Extranet.Web".

Danach steht in dem Verzeichnis LogFileLocation eine Trace-Datei zur Auswertung von Fehlersituationen zur Verfügung. Wenn der IT-Betrieb bereits den System Center Operations Manager (SCOM) nutzt, steht eine Integration über das IntelliTrace Profiling Management Pack zur Verfügung.

Für den Tester stellt der Microsoft-Testmanager das Standardtool dar, um Tests zu planen und auszuführen. Hier wird IntelliTrace in den Datenkollektoren der Test-Settings eingeschaltet. Im Fehlerfall wird die IntelliTrace-Datei dann automatisch an einen Bug im Team Foundation Server herangehängt. Die Informationen der Datenkollektoren verringern die Nachfragen des Entwicklers an den Tester, unter welchen Bedingungen der Fehler aufgetreten ist, und die Fehlerbehebung erfolgt wesentlich schneller.

Auch bei „normalen“ .NET-Projekten kann IntelliTrace im Visual Studio in den Einstellungen TOOLS | OPTIONS | INTELLITRACE eingeschaltet werden. Warum sollte ein Entwickler IntelliTrace verwenden, wenn er doch den Debugger hat? Mit IntelliTrace können Softwareentwickler auch zeitlich vor- und zurückgehen und sich so von der Fehlersituation zur eigentlichen Ursache bewegen. Mit dem Debugger ist es für einen Softwareentwickler oftmals mehrfach notwendig, die Fehlersituation nachzustellen. Gerade bei sporadisch auftretenden Fehlern ist diese Voraussetzung jedoch meist nicht gegeben.

IntelliTrace-Optionen

Die Optionen sind bei allen zuvor vorgestellten Aktivierungsvarianten gleich. Im Rahmen der Arbeiten mit IntelliTrace beschäftigte uns immer wieder die Frage, ob IntelliTrace entscheidenden Einfluss auf die Anwendungs- oder Systemleistung hat. In der Tat kann IntelliTrace das System deutlich verlangsamen. Doch zum Glück gibt es im Rahmen der IntelliTrace-Benutzung zwei Haupteinstellungen: Hierbei hat die Einstellung IntelliTrace events only einen geringen Einfluss auf die Performance, während IntelliTrace events and call information die Anwendungsgeschwindigkeit deutlich reduziert. Letztere Einstellung macht sicherlich nur auf Entwicklungsumgebungen Sinn.

Jedoch bekommt hier die Entwicklung wirklich umfassende Ablaufdetails beziehungsweise -informationen geliefert, die für eine rasche Ursachenanalyse notwendig sind.

In dem Dialog Advanced kann insbesondere der erfahrene Entwickler IntelliTrace mit Fokus auf die Log-Informationen auf seine Bedürfnisse hin abstimmen. So können hier die maximale Größe der Log-Datei, der Ablageort sowie die Symbol- und Quellpfade angepasst werden.

In den Einstellungen „IntelliTrace Events“ können Sie festlegen, welche Events aufgezeichnet werden sollen. Die Praxis hat gezeigt, dass es meist ausreicht, mit den Standardeinstellungen zu beginnen. Dennoch kann es sinnvoll sein, die Protokollierung von Events einzuschränken, wenn der Fokus auf einem ganz bestimmten Bereich liegt.

Die zuvor genannten Adaptionen können in Kombination mit dem letzten Optionsabschnitt besonders sinnvoll sein, da hier die Module angegeben werden können, welche Ereignisse protokollieren sollen.

Übertragung der iTrace-Datei

Nicht immer werden alle Fehlwirkungen im Entwicklungslabor erkannt. Ein beträchtlicher Teil der Defekte wird auf Testumgebungen erkannt oder gar noch in Produktionsumgebungen festgestellt, die oft nicht im direkten Zugriff des Entwicklers stehen. Gerade hier stellt das Nachvollziehen und Nachstellen von Fehlerzuständen für den Entwickler eine echte Herausforderung dar. Mithilfe von IntelliTrace gestaltet sich diese Situation jedoch deutlich einfacher, da auch Aufzeichnungen in den zuvor genannten Umgebungen möglich sind und diese Informationen an das Entwicklungsteam in Form einer iTrace-Datei zur Verfügung gestellt werden.

Im einfachsten Fall kann die iTrace-Datei dem Entwickler als Kopie übergeben werden. Viel eleganter ist jedoch die Kombination mit dem Team Foundation Server. So kann z. B. der Tester in den Datenkollektoren angeben, dass automatisch eine iTrace-Datei an einen Bug als Anhang beigefügt wird. Der Bug wird dann an den Entwickler übergeben. Dieser öffnet die iTrace-Datei und startet den Debug-Modus im Visual Studio. Hierüber kann der Entwickler auf seiner eigenen Umgebung den konkreten Ablauf Codezeile für Codezeile mit den betreffenden Ergebnissen aus der Produktions- oder Testumgebung simulieren. Es liegt auf der Hand, dass hiermit selbst bei komplexen Fehlersituationen oder so genannten „maskierten Fehlern“ die Ursachen rasch zu analysieren sind. Sind die Ursachen ermittelt, so ist die Änderung oft zügig umgesetzt. Nach dem Einchecken der Codekorrektur fließt die Fehlerbehebung im nächsten Build ein und wird nach erfolgreichem Durchlaufen der Qualitätssicherung entsprechend released.

IntelliTrace-Auswertungen

Die IntelliTrace-Datei (Abb. 4) wird mit Visual Studio geöffnet und zeigt zuerst die aufgetretenen Exceptions und Events an. Der Entwickler kann aus den Events schlussfolgern, welche Aktionen auf der Oberfläche durchgeführt, welche Dateien geöffnet oder welche Datenbankaufrufe vor dem Auftreten des Fehlers getätigt wurden. Anhand dieser Informationen kann er dann meist sehr schnell den Bereich eingrenzen und so die Ursachenbestimmung vornehmen.

Abb. 4: Beispiel einer IntelliTrace-Datei

In dem Beispiel wurde auf der Weboberfläche beim Aufrufen eines Servicetickets eine Fehlermeldung angezeigt. In der Exception-Liste tritt dreimal die Exception System.NullReferenceException auf. Beim Anklicken der ersten Exception ist in dem Autos-Fenster zu sehen, dass dem Attribut AssignedTo ein Null-Wert zugewiesen ist. In der Folge führt dies zu einer NullReferenceException. Ein Blick in die Datenbank zeigt bei diesem Datensatz in der Spalte AssignedTo einen Null-Wert an. Der Entwickler benötigt also weder die Kundendaten noch eine laufende Anwendung, um mithilfe der IntelliTrace-Datei binnen kürzester Zeit Fehler beheben zu können.

Auswertung komplexer Probleme

IntelliTrace bietet auch einen Debug-Modus an. Wenn IntelliTrace mit Call-Informationen gestartet wurde, kann der Entwickler im Visual Studio auf Quellcodeebene debuggen, sich den Wert der Variablen ansehen und sogar zeitlich vor- und zurückgehen, wie in Abbildung 5 dargestellt.

Abb. 5: IntelliTrace im Debug-Modus

Dort ist links im zentral positionierten Editorfenster ein roter Pfeil dargestellt, der die aktuelle Position im Programm darstellt. Mithilfe der doppelten Pfeile nach oben kann der Entwickler zum Beispiel zeitlich zurückgehen, um so die Fehlerursache herausfinden zu können. Daneben befindet sich links das IntelliTrace-Fenster mit den korrespondierenden Exceptions und weiterführenden Informationen über den betreffenden Vorfall. Unterhalb des Editorfensters werden Variablen und deren Inhalte in Bezug auf die Positionierung des Cursors im Editorfenster angezeigt. Daneben zeigt das Output-Fenster die Bildschirmausgaben bezogen auf die aktuelle Cursorposition im Editorfenster an.

Gerade die Beziehungen Fehlermeldung zu aktueller Position im Code und den entsprechenden Variableninhalten liefert neue Erkenntnisse über das Systemverhalten. Ohne IntelliTrace lassen sich diese Informationen herleiten, jedoch ist der hierzu notwendige Zeitbedarf deutlich höher. Die Vorteile von IntelliTrace sind noch einmal kompakt im gleichnamigen Kasten aufgelistet.

[ header = Seite 3: Die Vorteile von IntelliTrace ]

Die Vorteile von IntelliTrace

Im Vergleich zu klassischen Softwaretests konnten bei Softwaretests mit IntelliTrace in der Praxis bereits folgende Vorteile erkannt werden:

  • Aus den Blackbox-Tests in Systemtests oder Systemintegrationstests werden mithilfe von IntelliTrace quasi Whitebox-Tests, wodurch sich Fehlerursachen schneller nachvollziehen und finden lassen.
  • Das Risiko von Fehlinterpretationen oder dem Nichterkennen aller Ursachen bei maskierten Fehlern reduziert sich.
  • Defekte werden schneller gefixt. Ohne IntelliTrace können Entwickler nur auf die Exception-Informationen bei der Analyse zurückgreifen. Mit IntelliTrace kann der Entwickler auch die Schritte vor dem Auslösen einer Exception prüfen, welche oft den Grund für das Fehlverhalten liefern.
  • Das Time-to-Market im Rahmen der Softwareentwicklung verringert sich bei konsequentem Einsatz von IntelliTrace über alle Entwicklungsphasen.
  • Durch die neu gewonnene Transparenz auf Test- und Produktionsumgebungen wird ein besseres Systemverständnis im Zusammenhang mit betriebs- und produktionsrelevanten Themen erzielt.
  • Der Bedarf, Breakpoints zu setzen, um Erfahrungen aus dem Laufzeitverhalten des Systems zu gewinnen, wird reduziert. Das aktivierte IntelliTrace stellt die Beziehung zwischen Code, Variableninhalte und den geworfenen Exceptions aus dem betreffenden Prozess auch bei einer retrospektiven Betrachtung her.
Demo-Image von Visual Studio

Microsoft stellt für interessierte Entwickler ein Demo-Image zur Verfügung. Hierin können die neuen Visual-Studio-Features eingehend geprüft werden. Dies gilt natürlich auch für IntelliTrace im Speziellen: Wenn Sie das verwendete Beispiel selbst ausprobieren wollen, können Sie sich hier ein fertiges Demo-Image für Visual Studio herunterladen. Das Demo-Image heißt „Visual Studio 2013 ALM Virtual Machine and Hands-on-Labs/Demo Scripts“ und beinhaltet mehrere Beschreibungen für die Nutzung von IntelliTrace. Darüber hinaus können Sie auch hier eine kostenlose Testversion von Visual Studio Ultimate herunterladen und Ihre Anwendungen testen.

Tabelle 1: Visual-Studio-Editionen und deren unterschiedliche Möglichkeiten im Vergleich
Wichtige Dokumente im Bereich der Softwarequalität für Planung und Organisation

 
Oft wird die Komplexität von Testprozessen unterschätzt. Die Softwarequalität kennt folgende Dokumente im Rahmen der Konzeption der Qualitätssicherung:

1. Teststrategie: Festlegung der allgemeinen Richtlinien und Regeln, die über alle Testprojekte beziehungsweise Testobjekte gelten. Anmerkung: Der Begriff Teststrategie kommt auch im Dokument Testkonzept vor. Er kann jedoch als eine Art Regelwerk und Sammlung der zugelassenen Verfahren verstanden werden, welche über alle Tests gelten soll. Der Begriff hier ist im letzteren Sinne gemeint.
2. Mastertestplan: Im Mastertestplan werden die relevanten Testparameter über mehrere Testprojekte für ein Testobjekt festgelegt. Diese stellen dann Vorgaben zur Entwicklung der betreffenden Testkonzepte dar. Der Mastertestplan ist insbesondere für lang laufende Projekte (z. B. ein Jahr oder länger) oder im Rahmen der Produktentwicklung besonders geeignet, um langfristig angelegte Qualitätsstrategien umzusetzen. Ein Mastertestplan könnte so beispielsweise mehrere Product Lifecycles eines Testobjekts abdecken. Dies ist in einem Testkonzept nicht möglich. Jedoch ist bei kurz laufenden Projekten die Etablierung eines Mastertestplans nicht empfehlenswert.
3. Testkonzept: Das Testkonzept beschreibt die eigentliche Planung und Konzeption einer oder mehrerer Teststufen zu einem Testobjekt. Hierin befinden sich alle relevanten Informationen über alle Testphasen von der Planung bis zum Abschluss beziehungsweise zur Archivierung eines Testprojekts.
4. Testorganisation: Insbesondere in Test Centern und Test Factories empfiehlt sich die Ausarbeitung einer Testorganisation, welche Themen wie Berichtswesen, Rollen und Verantwortlichkeiten, Organisationsstrukturen oder auch zentrale Prozesse wie Change Management, Risk Management, Eskalationspfade etc. festlegt beziehungsweise gegebenenfalls auf andere Dokumente verweist.

Testfallableitung auf Basis von Überdeckungsgrad und Testdesigntechnik

Testfälle werden auch heute meistens „irgendwie“ abgeleitet. Plötzlich sind sie da. Zumindest gewinne ich immer wieder diesen Eindruck, wenn ich Mitarbeiter aus QS-Abteilungen befrage, warum der Testfall gerade so und nicht anders erstellt wurde. Oft kann diese Frage nicht einmal der Ersteller des betreffenden Testfalls umfassend beantworten. Grund hierfür ist oft, dass im Rahmen der Planung und Konzeption die Art und Weise der Testfallableitung nicht definiert wurde. In Wirklichkeit bilden hier jedoch der Überdeckungsgrad und die Testdesigntechnik zwei wichtige Parameter zur Ausprägung des Ableitungsverfahrens.

Abb. 6: Wechselwirkungen zwischen verschiedenen Test- und AbleitungsparameternDie Erfahrungen haben gezeigt, dass sich – je nach Kombination von Überdeckungsgrad und der Designtechnik – die Effizienz der Prüfprozesse verändert. Die Bewertung der Effizienz hängt dabei auch maßgeblich von den definierten Qualitätszielen ab. Jedoch ist diese Zieldefinition nicht immer in Testprojekten umgesetzt. Ohne diese Festlegungen kann jedoch keine optimale Wahl geeigneter Ableitungsverfahren erfolgen: Es gibt Kombinationen von Überdeckungsgrad und Testdesigntechnik, die keine Aussagen zu bestimmten Qualitätszielen liefern können und somit deren Einsatz nur Aufwände ohne Nutzen verursachen.

 
Wichtige Normen und Best-Practices

Im Rahmen der Planung, Steuerung und Organisation von Testorganisation muss man das Rad zum Glück nicht neu erfinden. Es empfiehlt sich hier der Einsatz einiger der zahlreichen Normen. Dies verringert Konzeptions- und Implementationsaufwände. Und man profitiert von den Erfahrungen zahlreicher Experten auf diesem Gebiet:

  • BS 7925-1: Verzeichnis von Softwaretestbegriffen
  • BS 7925-2: Softwarekomponententest
  • IEEE 829: Norm für Testdokumentation im Bereich Software- und Systemtest
  • IEEE 1008: Unit Testing
  • IEEE 1012: Norm zu Softwarevalidierung und -verifizierung
  • ISO/IEC 9126: Norm zu Softwarequalität und Qualitätsmerkmalen
  • ISO/IEC 15504 (ff): SPICE/Software Process Improvement and Capability Determination
  • ISO/IEC 25000 (ff): novellierte und erweiterte Norm der 9126; Qualitätskriterien und Bewertung von Softwareprodukten
  • ISO/IEC/IEEE 29119 (ff): neuer Software-Testing-Standard; ersetzt IEEE 829, IEEE 1008, BS 7925-1 und 7925-2
  • ISTQB®: Test Best Practices und genormte Schulungsinhalte zu Softwarequalität der ISQI
  • TestSPICE: Bereitstellung eines Process Reference Models (RPM) und Process Assessment Models (PAM) für Testprozesse; einsetzbar in Test Centern und Test Factories

Mithilfe einer Internetsuchmaschine lassen sich leicht die betreffenden Informationen im Web recherchieren. Gerne können auch Fragen hierzu an Torsten Zimmermann gerichtet werden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -