Business Software Solutions
 
Test Driven Development



Test Driven Development
(TDD)
   
 

 

 
ist eine Software Entwicklungstechnik, welche das Testen einzelner Softwarefunktionen verkürzen soll. Der Entwickler schreibt als erstes einen Testfall, welcher durch die Software noch nicht abgedeckt wird, bzw. eine Verbesserung darstellt, welche noch nicht implementiert ist und deshalb ein Fehler als Resultat retourniert. Danach erstellt der Entwickler den Code, welcher das zu erwartende Resultat zurückgibt und dadurch den Test bestehen lässt.

Beim Test Driven Development ist zu unterscheiden zwischen dem Testen im Kleinen
(Unit-Tests) und dem Testen im Großen (Systemtests, Akzeptanztests), wobei Becks Methode auf Unit-Tests ausgelegt ist.


Test Driven Development ist wesentlicher Bestandteil des Extrem Programming und anderen agilen Methoden. Momentan existieren 3 meistverwendete Frameworks: Microsoft's MSTest und das open-source framework NUnit und MbUnit. Ein anderes Framework ist xUnit.

MBUnit und Gallio Website
Weitere Informationen über MBUnit und Gallio, sowie die Downloads finden Sie unter dem Link:
http://www.gallio.org/


Icarus GUI Testrunner
Der Icarus Testrunner ist eine Standalone Exe Applikation, in der die Testresultate in einer übersichtlichen Form dargestellt werden können. Auf die Verwendung des Tools gehe ich nachfolgend detailliierter ein und beschreibe das Vorgehen für die Verwendung.


Nachfolgend Beispiele mit MBUnit und Gallio
Unter Visual Studio.Net wird bei der Erstellung eines neuen Testprojekts folgender Code automatisch angelegt. Wobei der grün markierte Teil optional verwendet werden kann, um vor dem eigentlichen Test bestimmte Variablen zu setzen, objekte zu öffnen und diese auch wieder zu löschen.

Imports System
Imports System.Text
Imports System.Collections.Generic
Imports Microsoft.VisualStudio.TestTools.UnitTesting

<TestClass()> Public Class UnitTest1

Private testContextInstance As TestContext

'''<summary>
'''Ruft den Textkontext mit Informationen über
'''den aktuellen Testlauf sowie Funktionalität für diesen auf oder legt diese fest.
'''</summary>
Public Property TestContext() As TestContext
Get
Return testContextInstance
End Get
Set(ByVal value As TestContext)
testContextInstance = Value
End Set
End Property

#Region "Zusätzliche Testattribute"
' Sie können beim Schreiben der Tests folgende zusätzliche Attribute verwenden:
'
' Verwenden Sie ClassInitialize, um vor Ausführung des ersten Tests in der Klasse Code auszuführen.
' <ClassInitialize()>
Public Shared Sub MyClassInitialize(ByVal testContext As TestContext)
' End Sub
'
' Verwenden Sie ClassCleanup, um nach Ausführung aller Tests in einer Klasse Code auszuführen.
' <ClassCleanup()>
Public Shared Sub MyClassCleanup()
' End Sub
'
' Mit TestInitialize können Sie vor jedem einzelnen Test Code ausführen.
' <TestInitialize()> Public Sub MyTestInitialize()
' End Sub
'
' Mit TestCleanup können Sie nach jedem einzelnen Test Code ausführen.
' <TestCleanup()> Public Sub MyTestCleanup()
' End Sub
#End Region

<TestMethod()>
Public Sub TestMethod1()
' TODO: Testlogik hier einfügen
End Sub
End Class



Beispiel eines Tabellenvergleichs zwischen zwei identischen Datenbank-Tabellen.

Imports System
Imports System.Text
Imports System.Data
Imports System.Collections.Generic
Imports Microsoft.VisualStudio.TestTools.UnitTesting

<TestClass()> Public Class UnitTest1

Private testContextInstance As TestContext
Private DBConn1 As New SqlClient.SqlConnection
Private DBConn2 As New SqlClient.SqlConnection

'''<summary>
'''Ruft den Textkontext mit Informationen über
'''den aktuellen Testlauf sowie Funktionalität für diesen auf oder legt diese fest.
'''</summary>
Public Property TestContext() As TestContext
Get
Return testContextInstance
End Get
Set(ByVal value As TestContext)
testContextInstance = Value
End Set
End Property

Public Sub New()'Contructor
'Datenbankverbindung herstellen
DBConn1 = New SqlClient.SqlConnection
DBConn1.ConnectionString = "Connectionstring"
DBConn1.Open()

DBConn2 = New SqlClient.SqlConnection'Ziel-Datenbank
DBConn2.ConnectionString = "Connectionstring"
DBConn2.Open()
End Sub

#Region "Zusätzliche Testattribute"
'
' Sie können beim Schreiben der Tests folgende zusätzliche Attribute verwenden:
'
' Verwenden Sie ClassInitialize, um vor Ausführung des ersten Tests in der Klasse Code auszuführen.
' <ClassInitialize()> Public Shared Sub MyClassInitialize(ByVal testContext As TestContext)
' End Sub
'
' Verwenden Sie ClassCleanup, um nach Ausführung aller Tests in einer Klasse Code auszuführen.
' <ClassCleanup()> Public Shared Sub MyClassCleanup()
' End Sub
'
' Mit TestInitialize können Sie vor jedem einzelnen Test Code ausführen.
' <TestInitialize()> Public Sub MyTestInitialize()
' End Sub
'
' Mit TestCleanup können Sie nach jedem einzelnen Test Code ausführen.
' <TestCleanup()> Public Sub MyTestCleanup()
' End Sub
'
#End Region

<TestMethod()> Public Sub TestMethod1()
' TODO: Testlogik hier einfügen
TestStoredProc()
End Sub

Private Function TestStoredProc()
Dim cmd1 As New Data.SqlClient.SqlCommand
Dim cmd2 As New Data.SqlClient.SqlCommand
Dim Rec As Data.DataRow

Dim dr1 As Data.SqlClient.SqlDataReader
Dim dr2 As Data.SqlClient.SqlDataReader

cmd1.Connection = DBConn1
cmd1.CommandType = CommandType.Text
cmd1.CommandText = "Select * From Liste where ID = 57798"
dr1 = cmd1.ExecuteReader

cmd2.Connection = DBConn2
cmd2.CommandType = CommandType.Text
cmd2.CommandText = "Select * From Liste where ID = 57798"
dr2 = cmd2.ExecuteReader

Dim FieldCount = dr1.FieldCount

While dr1.Read()
While dr2.Read
For x = 0 To FieldCount - 1
Assert.AreEqual(dr1.GetValue(x).ToString, dr2.GetValue(x).ToString)
Next
End While
End While
End Function
End Class

 


Copyright © Business Software Solutions
Designed by Suchportal-Schweiz

Webkatalog - zum Finden
| de-links.info Webkatalog | Schaufenster.ch das Shop-Portal | Linkfox-Webkatalog | TopSurftips.de | Shareware.de
   
Home | Partners | Service | Support | Referenzen | Info | Contact Us