testing especially unit testing. v-model wikipedia: software_development)software_development)

Post on 30-Dec-2015

228 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TestingEspecially Unit Testing

V-model

Wikipedia: http://en.wikipedia.org/wiki/V-Model_(software_development)

Verification & Validation

• Verification Phases• Requirements analysis• System Design• Architecture Design• Module Design

• Validation Phases• Unit Testing• Integration Testing• System Testing• User Acceptance Testing

Types (or Stages) of Testing(Validation)• Developer Testing

• Normal testing by the developer / programmer – to see it do work

• Independent and Stakeholder Testing• Independent Testing denotes the test design and implementation that it is most appropriate for someone independent from the team of developers

to do.

• Unit Tests • Systematic automatic test of a unit (testing from a black box view) – our focus

• Integration Test • integration testing is performed to ensure that the components in combination do work (e.g. that classes across packages do work)

• System Test • System testing is done when the software is functioning as a whole. Do the whole system works

• Acceptance Test • The users do the testing and accepting as a final test action prior to deploying the software. Check that all use-cases and all non-functional

requirements work

Unit testing

• White box testing • where you check all programming lines have been executed with an accepted

result

• Black box testing• where you check all methods have been executed and all parameter

boundaries have been checked – of cause again with an accepted result

Black-box (UPedu)

• input argument • Normal values from each equivalence class.• Values on the boundary of each equivalence class.• Values outside the equivalence classes.• Illegal values.

• output argument• Normal values from each equivalence class.• Values on the boundary for each equivalence class.• Values outside the equivalence classes.• Illegal values.

Set up test-cases

• Follow / Fill out schema

Test case # Description of test case

Expected value

Passed succesfully

1 . . . . . .

Example - Person

Constrains:•ID a number between 1000-99999•Name a text which is not null and at least 4 character long•Phone a number of 8 digits

Person

Attributes

- ID : int- Name : string- Phone : int

Operations

Test case #

Description of test case Expected value Passed successfully

1 Default constructor Object created 2 Set ID – value 999 ArgumentException 3 Set ID – value 1000 ID == 1000 4 Set ID – value 99999 ID == 99999 5 Set ID – value 100000 ArgumentException 6 Set ID – value 5678 ID == 5678 7 Set ID – value -5 ArgumentException 8 Set Name – value null ArgumentException 9 Set Name – value empty (“”) ArgumentException 10 Set Name – value not empty but less than 4

value “123”ArgumentException

11 Set Name – value not empty and 4 value “1234”

Name == “1234”

12 Set Name – value not empty and 15 value “123456789012345”

Name == “123456789012345”

13 Set Phone – value 9999999 ArgumentException

14 Set Phone – value 10000000 Phone == 10000000

15 Set Phone – value 99999999 Phone == 99999999

16 Set Phone – value 100000000 ArgumentException

17 Set Phone – value 56781234 Phone == 56781234

18 Set Phone – value -5 ArgumentException

19 Constructor(2222,”Susanne”,12345678) ID == 2222Name == “Susanne”Phone == 12345678

20 Constructor(00999,”Susanne”,12345678) ArgumentException

21 Constructor(2222,null,12345678) ArgumentException

22 Constructor(2222,”Per”,12345678) ArgumentException

23 Constructor(2222,”Susanne”,1234567890) ArgumentException

Model Driven Development>

Identify New Functionality

Write Test Run TestImplement

Functionality and Refactor

Pass

Fail

Running tests in Visual Studio

[Test

Method

]

publ

ic voi

d conv

ertToI

nt()

{

} public static int convertToInt(string

binaryNumber)

{

throw new

NotImplementedException();

}

A class that needs to be implementedpublic class BinaryHelper { public static bool greaterThan(string p1, string p2) { throw new NotImplementedException(); }

public static bool smallerThan(String p1, String p2) { throw new NotImplementedException(); }

Unit tests [TestClass]

public class BinaryHelperTest

{

[TestMethod]

public void greaterThanTest()

{

}

[TestMethod]

public void smallerThan()

{

}

Tool to generate first part of Unit Test• Unit Test Generator

– to download and install• Link:• http://visualstudiogallery.msdn.microsoft.com/45208924-e7b0-45df-8

cff-165b505a38d7

• For more information:• http://vsartesttoolingguide.codeplex.com/releases/view/102290

The Assert class

Method Name DEscription

AreEqual(Object, Object) Verifies that two specified objects are equal. The assertion fails if the objects are not equal. (Overwritten with allprimitive datatypes)

AreNotEqual(Object, Object) Verifies that two specified objects are not equal. The assertion fails if the objects are equal.(Overwritten with allprimitive datatypes)

AreSame(Object, Object) Verifies that two specified object variables refer to the same object. The assertion fails if they refer to different objects.

AreNotSame(Object, Object) Verifies that two specified object variables refer to different objects. The assertion fails if they refer to the same object.

The Assert class continued

Method Name DEscription

IsFalse(Boolean) Verifies that the specified condition is false. The assertion fails if the condition is true.

IsTrue(Boolean) Verifies that the specified condition is true. The assertion fails if the condition is false.

IsNull(Object) Verifies that the specified object is null. The assertion fails if it is notnull.

IsNotNull(Object) Verifies that the specified object is not null. The assertion fails if it isnull.

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.assert.aspx

Mock objects

Test Student Class

Student

FirstNAmeLastNamecoursesJoinCourseListCourses

Course

NameECTSpoints

Using Mock objects

Student

FirstNAmeLastNamecoursesJoinCourseListCourses

Mock Object

Moq4A mock object framework for MStest

Moq4 example

public void CompleteCourseTest() { // setup mock activity var c = new Mock<IActivity>(); c.Setup(m => m.GetName()).Returns("Programming"); c.Setup(m => m.getECTS()).Returns(15);

// test with mock activity Student s = new Student(); Assert.IsTrue(s.EnrollActivity(c.Object)); }

top related