all you need know about testing

Download All you need know about testing

Post on 27-Aug-2014

287 views

Category:

Software

1 download

Embed Size (px)

DESCRIPTION

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

TRANSCRIPT

  • Something You Always Wanted to Know About Testing* *But Were Afraid to Ask Jorge Juan Barroso Carmona Android Expert @ipper83 jorge@karumi.com
  • TESTS
  • What is Testing?
  • Checking is conrmation, verication, and validation. By machines. Testing is exploration, discovery, investigation, and learning. By humans. versus
  • Why Testing? Martin Fowler
  • ! more Functionality more Quickly Bad code aect to your Costumer
  • What are Unit Tests?
  • Black-Box before White-Box
  • creating tests in an environment where they have some Control over their own Destiny. Be careful, sometimes Context is Everything.
  • more Information in a test than in code. Paranoid?
  • Dont create your own Problems. Turn most unit tests into Assertions. Dont test Implementation Details.
  • Si tu Unit test tarda ms de 1 segundo, cmprate un pony y no me vendas que eso es un Unit test @Jordi9
  • Mock or Stub?
  • Stubs are canned answers to calls. Mocks are objects pre-programmed with expectations.
  • Avoid creating methods only for stubs.
  • A Big dependency of Robolectric and PowerMock is a sign of bad code.
  • Mock dilema: your test only checks that your mocks works.
  • What are Integration Tests?
  • Dont test all your Layers at the same time Or at least Be aware you are doing it
  • Duplicated tests. Write O(n!) tests. where n its the number of collaborators
  • Dont test the System or External Libraries. Sometimes is a Good practice to test all your layers.
  • Why you should use Continuous Integration
  • The best test is the one that is Never executed. Increase your Time to develop. Everyone has the latest executable and can see whats happening.
  • automated crap is still crap. James O Coplien
  • How to decide the Test Coverage?
  • Low level coverage says that the code is badly tested, but you cannot claim the opposite with just high level coverage
  • 100% coverage is to test all possible code paths. Is TDD here? Tests are code, we need to maintain them.
  • Risk-based Testing: prioritize the test over the risk of failure, the importance and the impact of failure.
  • 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 condence Kent Beck In most businesses, the only tests that have business value are those that are derived from business requirements. James O Coplien
  • Recap
  • Silver bullets do not exist.
  • The really important thing is to write Faster and better code
  • And please, expose your Dependencies and write Readable code
  • your Code is more important that your tests.
  • If you nd your testers splitting up functions to support the testing process, youre destroying your system architecture and code comprehension along with it. Test at a coarser level of granularity. James O Coplien
  • + James Bach and michael bolton. checking vs testing (2009 - 2013) + Workows of Refactoring. martin fowler. (oop 2014) + Why Most Unit Testing is Waste. James O Coplien (2013) + 467 tests, 0 failures, 0 condence. 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
  • Q&A?@ipper83 jorge@karumi.com