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

Nat Pryce

May 24, 2016
Tweet

More Decks by Nat Pryce

Other Decks in Programming

Transcript

  1. 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?
  2. 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?
  3. 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?
  4. 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?
  5. 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
  6. I will contend that conceptual integrity is the most important

    consideration in system design. –Fred Brooks The Mythical Man Month, 1975
  7. 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
  8. 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/
  9. 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
  10. 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.”
  11. Fin