Skip to content

Instantly share code, notes, and snippets.

@MichaelDrogalis
Created August 20, 2012 23:45
Show Gist options
  • Save MichaelDrogalis/3409349 to your computer and use it in GitHub Desktop.
Save MichaelDrogalis/3409349 to your computer and use it in GitHub Desktop.
Architecture and Testing talk notes
Ripping the Heart out of Complexity
- Here to talk about 2 things:
- Simple architectures
- Multidimensional testing
- What's a simple architecture?
- Not a measure of LOC
- Not a measure of time spent producing it
- Not about least amount of work done
- Measure of understandablility, clarity, independence
- What's multidimensional testing?
- Testing at the various levels of abstraction
- Peeling the layers of an onion off
- Core => Domain login
- Exercise boundaries of subsystems
- Exercise whole system
- How does it apply to RJM web services?
- Is it possible to have one without the other?
- No!
- Simple architecture requires continuous refactoring
- Not easy to get solution right off the bat
- Refactoring can lead to bugs
- Need tests to catch those bugs
- Testing not just for verfication behavior
- Defines how we "grip" the system
- Where are the things to grab onto when you climb the rock wall?
- Shapes interfaces, dependencies
- Affects cohesion and coupling
- Listening to the tests drives towards a simpler architecture
- Simple vs Easy
- Show the graph
- RJM testing strategy
- Does this need a literal translation, or a design transformation?
- 3 dimensions
- Unit: Parsing API input
- Integration: Test the DB login
- Acceptance: Exercise as a black box
- Begin with failing acceptance
- Test integration
- Test API
- Pass acceptance
- Red, green, refactor
- Impossible develop without tests
- RJM implementation strategies
- Immutability
- Short functions
- Data, not objects
- Reuse of services
- Continuous elimination of duplication
- Show fat code
- Why is this complex? Does 5 things
- Show data hurricane
- Why is this complex?
- Introduce Abstract Data Testing
- Toolset: Emacs, Swank, Lazytest
- Show how multiple services are developed
- Summary
- Refactoring the ENTIRE architecture is a CONTINUOUS effort
- Ensure quality at every step of the way.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment