GR Testers - August 12, 2013 Greg's Notes: • Pain points: o Paradigm shift: • Waterfall to Scrum • Scripted to ET • Manual to Automated o Requirements • Change / Shift / Unclear • Changed by mandate • Difficulty understanding well enough to design test  "Works as designed"  Nebulous o Resources • People, Human Capital • Hardware o Platforms (OS, etc.) o Complexity of the System • Adding features to an existing software system • Slow to change • Error prone when changing o No unit test (specific example the project leads don't even have the concept of it) o Competing / conflicting priorities o Backlog is too big (too many "pending" features", excessive Work in Progress) o Release management and timeframes o Release Management timeframe • Missed deadlines o Builds fail o Process "weenies" • Things have to be done for the sake of fulfilling a process o Difficulty in getting a good test plan o How to determine you have adequate test coverage • Functionality • Function points • Usability o Dealing with people who don't want to do their jobs (i.e. "lazy weenies") o Finger pointing •Narrow the list down to 1 or 2 topics to work on o Selected Topic: No Unit Tests •Describe the problem: o "Harder" o Lack of support for them o Unit may work • Unit Integration may not (units might not integrate for the build) o Culture doesn't support Unit Test (EE doing the work) o Look at how to embed tests so the build fails without the unit tests passing o No baseline costs to point out how expensive no unit test is; all projects before were done this way, so there doesn't appear to be any added cost. o No metrics to point what time or costs are lost by not doing UT up-front. o "You can't test your own code." •What do you do about it? o Bring in outside (therefore impartial) people to explain the process / problems •How do you make it happen? o Boss is an EE, so he doesn't grasp the concept of unit testing • Point out that individual electrical components are tested before they build their circuit boards. o Point out cost / benefit analysis. o Point out that skipping UT is violating their development process • Verify it's actually in the process document.  Then point out where things are not getting done. o Present tests to the developers, "If these [3, 4, 5…] basic 'happy path' tests don't pass, then I'll…" o "3 Amigos" meeting (emphasis on friends), Biz / Dev / Tester to review testing and development • Very hard to build from the bottom up • Easier if you can get some management buy-in • Experiment.. ("What if….") o Try bringing in a couple developers in to "help with testing" and show them the value of unit tests o Informal pairing: • Ask a friendly developer to come over and help you test something, for 15 - 30 minutes (minimal time invested)  Let them be the expert, so it doesn’t appear like you're trying to teach them. o Bring them to a meeting with food • Makes it a bit more fun / less antagonistic • Recognize that the testers are scary; they judge the devs o Involve / Invite the devs to participate in what you do. • What constitutes success for this problem? o Build / repair relationships o "Get a few managers interested in this." • Shift focus from "Make the date" to "Make it right" (which are not mutually exclusive goals) • Now, how do we do that? o What steps do we have to take? o How do we get it considered? o Who might get in the way? • Aside: SWOT Analysis o Strengths o Weaknesses o Opportunities o Threats o Put into a 2x2 grid and lay out thoughts in each quadrant as a way to explicitly call out issues === Pete's note - Using a SWOT style analysis you can break out the steps described above, then look for ways to implement them. THis also will help you consider possible blocks/constraints in the process (Weaknesses - lack of ability in the team, stuff in the team that may get in the way; Threats - Things/people external to the team that may prevent or block progress.)