5. The two most common ways to use a debugger:
1. Wasting time
2. Quality time
6. Wasting time:
Not knowing what your hypothesis is at any given time
Getting into a rot mindlessly hitting F10
Quality time:
Apply the Scientific Method, religiously
Simplify the scenario, then write a test!
The Debugging Process Overview
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
13. • Synthesis and refinement of practices stemming from TDD & ATDD
• User story:
"As a [role] I want [feature] so that [benefit]”
• Acceptance Criteria
Given [initial context]
When [event occurs]
Then [ensure some outcome]
What’s this BDD thing?
15. • Use natural language to express intentions (Given…When…Then)
• Use a general purpose programming language
to express test mechanics
• Use a tool that will let you operate in either domain seamlessly
BDD offers a solution
21. Having flakey tests is a lot worse than having no tests at all.
A flakey test is like a virus –
quarantine it, then triage.
Visual Studio Integration Tests Pro-Tip
30. Visual Studio 2017 will warn users about extensions that are slowing things down.
Performance as a Feature
31. 1. Delay loading your extension as much as possible (using UIContextRule)
2. When you do load, load in the background. (using AsyncPackage)
Performance as a Feature
35. Memory Leaks vs. GC Pressure
Pro-Tip: Don’t Close your Diagnostics Tools Window!
36. Dealing with GC Pressure
Memory Leaks vs. GC Pressure
• Always be measuring (allocations, % time spent in GC)
• Watch out for duplicate strings
• Use object pooling / a string intern pool
• Use Roslyn Heap Allocation Analyzer
39. Which means…
…a business sponsor could request that the current
development version of the software can be deployed
into production at a moment's notice - and nobody
would bat an eyelid, let alone panic.
Got good Subcutaneous Tests?
Start practicing True Continuous Delivery!
Martin Fowler