Presentation is loading. Please wait.

Presentation is loading. Please wait.

Building Rock-Solid Software Svetlin Nakov Telerik Software Academy Manager Technical Training

Similar presentations


Presentation on theme: "Building Rock-Solid Software Svetlin Nakov Telerik Software Academy Manager Technical Training"— Presentation transcript:

1 Building Rock-Solid Software Svetlin Nakov Telerik Software Academy http://academy.telerik.com Manager Technical Training http://www.nakov.com

2

3 A unit test is a piece of code written by a developer that exercises a very small, specific area of functionality of the code being tested. “Program testing can be used to show the presence of bugs, but never to show their absence!” Edsger Dijkstra, [1972]

4 int sum(int[] array) { int sum = 0; int sum = 0; for (int i=0; i<array.length; i++) for (int i=0; i<array.length; i++) sum += array[i]; sum += array[i]; return sum; return sum;} void testSum() { if (sum(new int[]{1,2}) != 3) if (sum(new int[]{1,2}) != 3) throw new TestFailedException("1+2 != 3"); throw new TestFailedException("1+2 != 3"); if (sum(new int[]{-2}) != -2) if (sum(new int[]{-2}) != -2) throw new TestFailedException("-2 != -2"); throw new TestFailedException("-2 != -2"); if (sum(new int[]{}) != 0) if (sum(new int[]{}) != 0) throw new TestFailedException("0 != 0"); throw new TestFailedException("0 != 0");}

5  Tests are pieces of code (small programs)  In most cases unit tests are written by developers, not by QA engineers  Unit tests are released into the code repository (TFS / SVN / Git) along with the code they test  Unit testing framework is needed  Visual Studio Team Test (VSTT)  NUnit, MbUnit, Gallio, etc. 5

6

7  JUnit  The first popular unit testing framework  Based on Java, written by  Based on Java, written by Kent Beck & Co.Kent Beck  Similar frameworks have been developed for a broad range of computer languages  NUnit – for C# and all.NET languages  cppUnit, jsUnit, PhpUnit, PerlUnit,...  Visual Studio Team Test (VSTT)  Developed by Microsoft, integrated in VS 7

8  JUnit – the first unit testing framework  www.junit.org www.junit.org  Based on Java  Developed by Erich Gamma and Kent Beck  Unit testing frameworks have been developed for a broad range of computer languages  NUnit – for C#, VB.NET and.NET languages  cppUnit, DUnit, jsUnit, PhpUnit, PerlUnit,...  List of xUnit frameworks can be found at: http://www.testingfaqs.org/t-unit.html http://www.testingfaqs.org/t-unit.html

9  Test code is annotated using Java 5 annotations  Test code contains assertions  Tests are grouped in test fixtures and test suites  Several execution interfaces  Eclipse integrated plug-in  Console interface: java org.junit.runner.JUnitCore java org.junit.runner.JUnitCore

10  @Test  Annotates a test case method  @Before, @After  Annotates methods called before/after each test case  @BeforeClass, @AfterClass  Annotates methods called one time before and after all test cases in the class  @Ignore  Ignores a test case 10

11  Using org.junit.Assert class  Assertions check a condition and throw exception if the condition is not satisfied  Comparing values  assertEquals ([message], expected value, calculated value)  Comparing objects  assertNull([message], object)  assertNotNull([message], object)  assertSame ([message], expected obj, calculated obj)

12  Conditions  assertTrue(condition)  assertFalse(condition)  Forced test fail  fail()  Expecting exception  @Test(expected=IndexOutOfBoundsExcept ion.class)

13  Java class that needs unit testing: public class Sumator { public int sum(int a, int b) { public int sum(int a, int b) { int sum = a + b; int sum = a + b; return sum; return sum; } public int sum(int... nums) { public int sum(int... nums) { int sum = 0; int sum = 0; for (int i = 0; i < nums; i++) for (int i = 0; i < nums; i++) sum += nums[i]; sum += nums[i]; return sum; return sum; }}

14  JUnit based test class (fixture): import org.junit.Test; import static org.junit.Assert.*; public class SumatorTest { @Test @Test public void testSum() { public void testSum() { Sumator sumator = new Sumator(); Sumator sumator = new Sumator(); int sum = sumator.sum(new int[] {2,3,4}); int sum = sumator.sum(new int[] {2,3,4}); assertEquals(sum, 9); assertEquals(sum, 9); }}

15  JUnit text fixture with setup and cleanup: public class SumatorTest { private Sumator sumator; private Sumator sumator; @Before public void setUpTestCase() { @Before public void setUpTestCase() { this.sumator = new Sumator(); this.sumator = new Sumator(); } @Test public void testSum() { @Test public void testSum() { int sum = sumator.sum(2, 3); int sum = sumator.sum(2, 3); assertEquals(sum, 5); assertEquals(sum, 5); } @After public void cleanUpTestCase() { @After public void cleanUpTestCase() { this.sumator = null; this.sumator = null; }}

16  Suits are sets of JUnit test classes  We can define test suits with annotations: import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(value=Suite.class) @SuiteClasses(value={Test1.class, Test2.class}) public class AllTests { }

17  Eclipse has built-in support for integration with JUnit  Can create, run and debug JUnit tests

18 Live Demo

19 форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен SEO курс - оптимизация за търсачки уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop уроци по програмиране и уеб дизайн за ученици ASP.NET MVC курс – HTML, SQL, C#,.NET, ASP.NET MVC безплатен курс "Разработка на софтуер в cloud среда" BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране, книги – безплатно от Наков безплатен курс "Качествен програмен код" алго академия – състезателно програмиране, състезания ASP.NET курс - уеб програмиране, бази данни, C#,.NET, ASP.NET курсове и уроци по програмиране – Телерик академия курс мобилни приложения с iPhone, Android, WP7, PhoneGap free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране http://academy.telerik.com

20  C# Programming @ Telerik Academy  csharpfundamentals.telerik.com csharpfundamentals.telerik.com  Telerik Software Academy  academy.telerik.com academy.telerik.com  Telerik Academy @ Facebook  facebook.com/TelerikAcademy facebook.com/TelerikAcademy  Telerik Software Academy Forums  forums.academy.telerik.com forums.academy.telerik.com


Download ppt "Building Rock-Solid Software Svetlin Nakov Telerik Software Academy Manager Technical Training"

Similar presentations


Ads by Google