Testing Especially Unit Testing
V-model Wikipedia:
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 Name a text which is not null and at least 4 character long Phone a number of 8 digits
Test case # Description of test caseExpected value Passed successfully 1Default constructorObject created 2Set ID – value 999ArgumentException 3Set ID – value 1000ID == Set ID – value 99999ID == Set ID – value ArgumentException 6Set ID – value 5678ID == Set ID – value -5ArgumentException 8Set Name – value nullArgumentException 9Set 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” 12Set Name – value not empty and 15 value “ ” Name == “ ”
13Set Phone – value ArgumentException 14Set Phone – value Phone == Set Phone – value Phone == Set Phone – value ArgumentException 17Set Phone – value Phone == Set Phone – value -5ArgumentException 19Constructor(2222,”Susanne”, ) ID == 2222 Name == “Susanne” Phone == Constructor(00999,”Susanne”, )ArgumentException 21Constructor(2222,null, )ArgumentException 22Constructor(2222,”Per”, )ArgumentException 23Constructor(2222,”Susanne”, )ArgumentException
Model Driven Development> Identify New Functionality Write TestRun Test Implement Functionality and Refactor Pass Fail
Running tests in Visual Studio [TestMethod] public void convertToInt() { } public static int convertToInt(string binaryNumber) { throw new NotImplementedException(); }
A class that needs to be implemented public 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: 8cff-165b505a38d7 8cff-165b505a38d7 For more information:
The Assert class Method NameDEscription 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 NameDEscription 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.
Mock objects
Test Student Class
Using Mock objects
Moq4 A mock object framework for MStest
Moq4 example public void CompleteCourseTest() { // setup mock activity var c = new Mock (); 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)); }