Created
August 20, 2012 23:45
-
-
Save MichaelDrogalis/3409349 to your computer and use it in GitHub Desktop.
Architecture and Testing talk notes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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