Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Refactoring and Testing 2016

Refactoring and Testing 2016

Presented at the 2016 International Workshop on Refactoring and Testing (RefTest 2016), Edinburgh, UK. May 24 2016

5358df52bd2ef4f57da1b1cc8634cfd9?s=128

Nat Pryce

May 24, 2016
Tweet

Transcript

  1. Refactoring & Testing 2016 Nat Pryce info@natpryce.com @natpryce github.com/npryce speakerdeck.com/npryce

  2. External & Internal Quality

  3. It's about time!

  4. The engineer's balancing act

  5. System Test Automation How good is the system? test results

    = external quality feedback
  6. changes = internal quality feedback Refactor & abstract Eliminate source

    of developer error Refactor & abstract test results = external quality feedback System Test Automation instrumentation, bugs = external quality feedback How good are the tests?
  7. changes = internal quality feedback Refactor & abstract Eliminate source

    of developer error test results = external quality feedback instrumentation, bugs = external quality feedback difficulty testing = internal quality feedback Refactor & abstract System Test Automation How maintainable is the software?
  8. Eliminate source of developer error test results = external quality

    feedback instrumentation, bugs = external quality feedback difficulty testing = internal quality feedback Refactor & abstract changes = internal quality feedback System Test Automation Refactor & abstract How maintainable are the tests?
  9. changes = internal quality feedback instrumentation, bugs = external quality

    feedback difficulty testing = internal quality feedback Refactor & abstract Refactor & abstract test results = external quality feedback System Test Automation Eliminate source of developer error Can we eliminate the need for tests?
  10. changes = internal quality feedback instrumentation, bugs = external quality

    feedback difficulty testing = internal quality feedback Refactor & abstract Refactor & abstract test results = external quality feedback System Test Automation Eliminate source of developer error Tests and the system-under-test form a system
  11. Why are developers uncomfortable with design as continual, gradual, never-ending

    adaptation?
  12. I will contend that conceptual integrity is the most important

    consideration in system design. –Fred Brooks The Mythical Man Month, 1975
  13. It is better to have a system omit certain anomalous

    features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas. –Fred Brooks The Mythical Man Month, 1975
  14. Modernism Modernist [styles] shared certain underlying principles: a rejection of

    history and applied ornament; a preference for abstraction; and a belief that design and technology could transform society. http://www.vam.ac.uk/page/m/modernism/
  15. 1889, Carson, Pirie, Scott and Company Building

  16. 1938 Auto Union V16 Streamliner

  17. 1946 Eames Chair

  18. The dynamic nature of [Taoist and Zen] philosophy laid more

    stress upon the process through which perfection was sought than upon perfection itself. True beauty could be discovered only by one who mentally completed the incomplete. The virility of life and art lay in its possibilities for growth. ... Uniformity of design was considered fatal to the freshness of imagination. –Kakuzo Okakura The Book of Tea, 1906
  19. None
  20. None
  21. From http://vintageleatherjackets.blogspot.co.uk 1930s leather jacket

  22. N. Nagappan, A. Zeller, T. Zimmermann, K. Herzig, and B.

    Murphy. Change Bursts as Defect Predictors. 2010 “What happens if code changes again and again in some period of time? … Such change bursts have the highest predictive power for defect-prone components [and] significantly improve upon earlier predictors such as complexity metrics, code churn, or organizational structure.”
  23. Fin