Advertisement

Unit and integration Testing

Software Developer at BetTech Gaming
Oct. 29, 2014
Advertisement

More Related Content

Advertisement

Unit and integration Testing

  1. UNIT & INTEGRATION TESTING David Berliner
  2. Why Test Types of Tests PHPUnit Writing Tests Getting Stuck In
  3. WHY TEST?
  4. TESTS REDUCE BUGS
  5. TESTS REDUCE BUGS TESTS ARE GOOD DOCUMENTATION
  6. TESTS REDUCE BUGS TESTS ARE GOOD DOCUMENTATION TESTS ALLOW SAFE REFACTORING
  7. TESTS REDUCE BUGS TESTS ARE GOOD DOCUMENTATION TESTS ALLOW SAFE REFACTORING TESTS REDUCE THE COST OF CHANGE
  8. TESTS REDUCE BUGS TESTS ARE GOOD DOCUMENTATION TESTS ALLOW SAFE REFACTORING TESTS REDUCE THE COST OF CHANGE TESTING FORCES YOU TO THINK
  9. TESTS REDUCE BUGS TESTS ARE GOOD DOCUMENTATION TESTS ALLOW SAFE REFACTORING TESTS REDUCE THE COST OF CHANGE TESTING FORCES YOU TO THINK TESTS REDUCE FEAR
  10. A study conducted by Microsoft and IBM showed that writing tests can add 15% – 35% to development time but reduce the number of bugs by 40% – 90%. http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
  11. TYPES OF TESTS
  12. Black Box White Box Unit Integration Functional System Regression Performance Smoke Canary Usability A/B …
  13. Black Box White Box Unit Integration Functional System Regression Performance Smoke Canary Usability A/B …
  14. UNIT TESTS The goal of unit testing is: 1. to isolate each part of the program, and
  15. UNIT TESTS The goal of unit testing is: 1. to isolate each part of the program, and 2. show that the individual parts are correct.
  16. UNIT TESTS The goal of unit testing is: 1. to isolate each part of the program, and 2. show that the individual parts are correct. Unit tests have a very narrow and well-defined scope.
  17. UNIT TESTS Pro’s: 1. Fast
  18. UNIT TESTS Pro’s: 1. Fast 2. Simple to understand
  19. UNIT TESTS Pro’s: 1. Fast 2. Simple to understand 3. Reliable
  20. UNIT TESTS Pro’s: 1. Fast 2. Simple to understand 3. Reliable Con’s: 1. Large time investment
  21. UNIT TESTS Pro’s: 1. Fast 2. Simple to understand 3. Reliable Con’s: 1. Large time investment 2. Requires maintenance
  22. UNIT TESTS A unit test should NOT: 1. Access the network
  23. UNIT TESTS A unit test should NOT: 1. Access the network 2. Hit a database
  24. UNIT TESTS A unit test should NOT: 1. Access the network 2. Hit a database 3. Use the file system
  25. UNIT TESTS A unit test should NOT: 1. Access the network 2. Hit a database 3. Use the file system 4. Call other non-trivial components
  26. INTEGRATION TESTS Test the inter-operation of multiple subsystems. Pro’s: 1. Make sure nuts and bolts fit together
  27. INTEGRATION TESTS Test the inter-operation of multiple subsystems. Pro’s: 1. Make sure nuts and bolts fit together 2. Test behaviour and infrastructure
  28. INTEGRATION TESTS Test the inter-operation of multiple subsystems. Pro’s: 1. Make sure nuts and bolts fit together 2. Test behaviour and infrastructure 3. (tested code) / test % is high
  29. INTEGRATION TESTS Test the inter-operation of multiple subsystems. Pro’s: 1. Make sure nuts and bolts fit together 2. Test behaviour and infrastructure 3. (tested code) / test % is high Con’s: 1. Hard to test all critical paths
  30. INTEGRATION TESTS Test the inter-operation of multiple subsystems. Pro’s: 1. Make sure nuts and bolts fit together 2. Test behaviour and infrastructure 3. (tested code) / test % is high Con’s: 1. Hard to test all critical paths 2. Harder to localise source of errors
  31. TEST HIERARCHY
  32. PHPUnit
  33. 1. Unit Testing Framework written in PHP by Sebastian Bergmann 2. De facto standard 3. Major Frameworks use it (Zend, Cake, Laravel, Symphony etc.)
  34. Installation: https://phpunit.de/manual/current/en/installation.html Be sure to install xDebug in order to generate code coverage. Note: PECL no longer supported
  35. WRITING TESTS
  36. ORGANISING TESTS - The tests for class Foo are placed in a class FooTest - Most of the time you will inherit from PHPUnit_Framework_TestCase PHPUnit_Extensions_Database_TestCase - Tests are public methods named test* - Inside the test methods, assertion methods such as assertEquals() are used.
  37. ORGANISING TESTS Tests should mirror the code being tested. SRC SomeFolder Baz.php Foo.php Bar.php TEST SomeFolder FooTest.php BarTest.php BazTest.php
  38. PHPUNIT.XML
  39. BOOTSTRAP.PHP
  40. ASSERTIONS assertArrayHasKey() assertClassHasAttribute() assertClassHasStaticAttribute() assertContains() assertContainsOnly() assertContainsOnlyInstancesOf() assertCount() assertEmpty() assertEqualXMLStructure() assertEquals() assertFalse() assertFileEquals() assertFileExists() assertGreaterThan() assertGreaterThanOrEqual() assertInstanceOf() assertInternalType() assertJsonFileEqualsJsonFile() assertJsonStringEqualsJsonFile() assertJsonStringEqualsJsonString() assertLessThan() assertLessThanOrEqual() assertNull ( ) assertObjectHasAttribute() assertRegExp() assertStringMatchesFormat() assertStringMatchesFormatFile() assertSame() assertStringEndsWi th() assertStringEqualsFile() assertStringStartsWi th() assertThat() assertTrue() assertXmlFileEqualsXmlFile() assertXmlStringEqualsXmlFile() assertXmlStringEqualsXmlString()
  41. ASSERTIONS
  42. ANNOTATIONS @DEPENDS
  43. ANNOTATIONS @DATAPROVIDER
  44. ANNOTATIONS @EXCEPTIONS
  45. What do you do if the code you want to test is dependent on other components that cannot be used in the test environment?
  46. MOCKS & STUBS
  47. DATABASE TESTING Four stages of a DB test 1. Set up fixture 2. Exercise System Under Test 3. Verify outcome 4. Teardown
  48. DATABASE TESTING (CONT) Give it a connection
  49. DATABASE TESTING (CONT) Flat XML DataSet
  50. DATABASE TESTING (CONT)
  51. DATABASE TESTING (CONT)
  52. GETTING STUCK IN
  53. Demo: https://github.com/manatok/talk-demo-ci
  54. • db - Database Skel file and patches • src - Project Code • test/Output - Code coverage • test/SportsBet - Projects Tests • test/TestingCore - Uti l i ties • tools - CI tools including ANT build file
Advertisement