Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

All you need know about testing

A guide of good practices on testing and how write good tests.

  • Login to see the comments

All you need know about testing

  1. 1. Something You Always Wanted to Know About Testing* *But Were Afraid to Ask Jorge Juan Barroso Carmona Android Expert @flipper83
  2. 2. if the time should come when you have to make a choice between what is right, and what is easy!!
  3. 3. What is Testing?
  4. 4. Checking is confirmation, verification, and validation. By machines. Testing is exploration, discovery, investigation, and learning. By humans. versus
  5. 5. Why Testing? Martin Fowler
  6. 6. “ more Functionality more Quickly ” “ Bad code affect to your Costumer ”
  7. 7. “ Trabajar con una base de tests en condiciones es un puto gustazo!!! ” @pedro_g_s
  8. 8. What are Unit Tests?
  9. 9. Black-Box before White-Box
  10. 10. creating tests in an environment where they have some Control over their own Destiny. Be careful, sometimes Context is Everything.
  11. 11. more Information in a test than in code. Paranoid?
  12. 12. Don’t create your own Problems. Turn most unit tests into Assertions. Don’t test Implementation Details.
  13. 13. “ Si tu Unit test tarda más de 1 segundo, cómprate un pony y no me vendas que eso es un Unit test ” @Jordi9
  14. 14. Mock or Stub?
  15. 15. Stubs are canned answers to calls. Mocks are objects pre-programmed with expectations.
  16. 16. Avoid creating methods only for stubs.
  17. 17. A Big dependency of Robolectric and PowerMock is a sign of bad code.
  18. 18. Mock dilema: your test only checks that your mocks works.
  19. 19. What are Integration Tests?
  20. 20. Don’t test all your Layers at the same time Or at least Be aware you are doing it
  21. 21. Duplicated tests. Write O(n!) tests. where “n” it’s the number of collaborators
  22. 22. Don’t test the System or External Libraries. Sometimes is a Good practice to test all your layers.
  23. 23. Why you should use Continuous Integration
  24. 24. The best test is the one that is Never executed. Increase your Time to develop. Everyone has the latest executable and can see what’s happening.
  25. 25. “ automated crap is still crap. ” James O Coplien
  26. 26. How to decide the Test Coverage?
  27. 27. Low level coverage says that the code is badly tested, but you cannot claim the opposite with just high level coverage
  28. 28. 100% coverage is to test all possible code paths. Is TDD here? Tests are Code, we need to maintain them.
  29. 29. Risk-based Testing: prioritize the test over the risk of failure, the importance and the impact of failure.
  30. 30. “ I get paid for code that works, not for tests, so my philosophy is to test as little as possible to reach a given level of confidence ” Kent Beck “ In most businesses, the only tests that have business value are those that are derived from business requirements. ” James O Coplien
  31. 31. How Does it affect to my code?
  32. 32. Silver bullets do not exist.
  33. 33. The really important thing is to write Faster and better code
  34. 34. And please, expose your Dependencies and write Readable code
  35. 35. your Code is more important than your tests.
  36. 36. “ If you find your testers splitting up functions to support the testing process, you’re destroying your system architecture and code comprehension along with it. Test at a coarser level of granularity. ” James O Coplien “ When you are very thirsty, even dirty water will keep you alive. ” J. B. Rainsberger
  37. 37. + James Bach and michael bolton. checking vs testing (2009 - 2013) + Workflows of Refactoring. martin fowler. (oop 2014) + Why Most Unit Testing is Waste. James O Coplien (2013) + 467 tests, 0 failures, 0 confidence. Katrina Owen (Railsberry 2013) + Mocks Aren't Stubs. martin fowler (2007) + Integrated Tests Are A Scam. J.B. Rainsberger (2013) + Exploratory and Risk Based Testing. Bach, J. Kaner, C. (2004) + Decomposing into modules. D.L. Parnas (1972) + The Art of Unit Testing. Roy Osherove + Test Driven Development: By Example. Kent Beck + UnitTest. Martin fowler 2014 References
  38. 38. Q&A?@flipper83