Keeping your users happy with testable apps - Greg Shackles

870 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
870
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Keeping your users happy with testable apps - Greg Shackles

  1. 1. Greg ShacklesOLO@gshacklesgreg@gregshackles.comgithub.com/gshacklesKeeping Your UsersHappyWith Testable AppsThursday, May 9, 13
  2. 2. TDDThursday, May 9, 13
  3. 3. TDDKISSSOLIDBDDDRYSOCYAGNIDDDSRP OCPLSP ISPDIPXPIOC CQSThursday, May 9, 13
  4. 4. Thursday, May 9, 13
  5. 5. Why Test?Thursday, May 9, 13
  6. 6. StabilityThursday, May 9, 13
  7. 7. Stability•Obvious, but importantThursday, May 9, 13
  8. 8. Stability•Obvious, but important•Refactor and iterate with a safety netThursday, May 9, 13
  9. 9. Stability•Obvious, but important•Refactor and iterate with a safety net•Compilation is only the first unit testThursday, May 9, 13
  10. 10. Stability•Obvious, but important•Refactor and iterate with a safety net•Compilation is only the first unit test•Verify cross-platform compatibilityThursday, May 9, 13
  11. 11. “I don’t have time to writetests!”Thursday, May 9, 13
  12. 12. “I don’t have time to NOT writetests!”Thursday, May 9, 13
  13. 13. Once It’s Out, It’s OutThursday, May 9, 13
  14. 14. Once It’s Out, It’s Out•This isn’t the webThursday, May 9, 13
  15. 15. Once It’s Out, It’s Out•This isn’t the web•Difficult and expensive tofixThursday, May 9, 13
  16. 16. Once It’s Out, It’s Out•This isn’t the web•Difficult and expensive tofix•Quality bar has beenThursday, May 9, 13
  17. 17. The Happy PathThursday, May 9, 13
  18. 18. •Improves designThe Happy PathThursday, May 9, 13
  19. 19. •Improves design•More shared code (not just mobile apps)The Happy PathThursday, May 9, 13
  20. 20. •Improves design•More shared code (not just mobile apps)•Optimize independently of a platformThe Happy PathThursday, May 9, 13
  21. 21. •Improves design•More shared code (not just mobile apps)•Optimize independently of a platform•IterationSpeed++The Happy PathThursday, May 9, 13
  22. 22. •Improves design•More shared code (not just mobile apps)•Optimize independently of a platform•IterationSpeed++•FACT: Green tests are good for the soulThe Happy PathThursday, May 9, 13
  23. 23. What To Test?Thursday, May 9, 13
  24. 24. What to Test?Thursday, May 9, 13
  25. 25. What to Test?•100% code coverage != the goalThursday, May 9, 13
  26. 26. What to Test?•100% code coverage != the goal•Test parts that provide valueThursday, May 9, 13
  27. 27. What to Test?•100% code coverage != the goal•Test parts that provide value•Testing platform code can be difficultThursday, May 9, 13
  28. 28. What to Test?•100% code coverage != the goal•Test parts that provide value•Testing platform code can be difficult•Start smallThursday, May 9, 13
  29. 29. Thursday, May 9, 13
  30. 30. !!Unit  TestsThursday, May 9, 13
  31. 31. !!!!Unit  TestsIntegra-on  TestsThursday, May 9, 13
  32. 32. !!!!!!Unit  TestsIntegra-on  TestsUI  /  UX  TestsThursday, May 9, 13
  33. 33. !!!!!!Unit  TestsIntegra-on  TestsUI  /  UX  TestsMixedAutomatedThursday, May 9, 13
  34. 34. Unit / Integration TestsThursday, May 9, 13
  35. 35. Unit / Integration Tests•AutomatedThursday, May 9, 13
  36. 36. Unit / Integration Tests•Automated•Low frictionThursday, May 9, 13
  37. 37. Unit / Integration Tests•Automated•Low friction•Leverage toolingThursday, May 9, 13
  38. 38. Unit / Integration Tests•Automated•Low friction•Leverage tooling•NUnit (Lite)Thursday, May 9, 13
  39. 39. Unit / Integration Tests•Automated•Low friction•Leverage tooling•NUnit (Lite)•Run on allplatformsThursday, May 9, 13
  40. 40. Unit / Integration Tests•Automated•Low friction•Leverage tooling•NUnit (Lite)•Run on allplatforms•Simulator vsDeviceThursday, May 9, 13
  41. 41. MockingThursday, May 9, 13
  42. 42. Mocking•Limited optionsThursday, May 9, 13
  43. 43. Mocking•Limited options•Manual mockingThursday, May 9, 13
  44. 44. Mocking•Limited options•Manual mocking•Code generation, T4github.com/gshackles/MuntzThursday, May 9, 13
  45. 45. 0102030405060708091011121314Mockinginterface IService{! string Foo(string bar);}!class MockService : IService{! public Func<string> FooBody { get; set; }! !! public Foo(string bar)! {! ! return FooBody();! }}Thursday, May 9, 13
  46. 46. Manual TestingThursday, May 9, 13
  47. 47. Manual Testing•User feedback iscriticalThursday, May 9, 13
  48. 48. Manual Testing•User feedback iscritical•UX testingThursday, May 9, 13
  49. 49. Manual Testing•User feedback iscritical•UX testing•Exploratory testingThursday, May 9, 13
  50. 50. MVVMThursday, May 9, 13
  51. 51. MVVM•MvvmCrossThursday, May 9, 13
  52. 52. MVVM•MvvmCross•Shared, testable view modelsThursday, May 9, 13
  53. 53. MVVM•MvvmCross•Shared, testable view models•Improved IoC supportThursday, May 9, 13
  54. 54. MVVM•MvvmCross•Shared, testable view models•Improved IoC support•Databinding keeps views thinThursday, May 9, 13
  55. 55. DEMOThursday, May 9, 13
  56. 56. Q&AThursday, May 9, 13

×