Bringing Quality Upstream5:05 with Ryan Saul
QA is usually seen as being the very last piece of the development puzzle, something you do right before releasing the product to the public. But it doesn’t need to be! Putting QA earlier in development can save you time and money by finding defects before they’re even written.
Coverage Report example
Version 1.0.0 Release Coverage Report
- Login - 100% automated tests
- 2 tests
- 2 automated
- 2 tests
- Creating Cards - 60%% manual tests | 20% automated tests | 20% untested
- 5 tests
- 3 manual tests
- 1 automated test
- 1 untested feature
- 5 tests
- Printing Cards - 100% untested
- 0 tests
Escaped Bug Report example
Version 1.0.0 Escaped Bug Report
|Bugs found in Regression Testing||10|
|Bugs fixed before Release||9|
|New bugs found by customers||3|
User Feedback Report example
Version 1.0.0 User Feedback
Positive feedback: 90
Negative feedback: 10
Other feedback: 3
- "Great UI!"
- "Why can't I send a link to my friend?"
- Test Driven Development: The process of writing unit tests before writing the code.
- Code Reviews: Developers reviewing each other's code before merging it.
- Continuous Integration: The practice of always running all automated tests each time new code is checked in. Can be further expanded by only deploying software through this system after all checks pass.
Travis CI: https://travis-ci.org/ (works great with GitHub!)
This is our final video, we made it. 0:00 And it happens to be one of my favorite topics in the world of QA. 0:03 This is a subject called bringing quality upstream. 0:07 The main idea here is that QA is usually seen as being the very last 0:11 piece of the development puzzle. 0:15 Something you do right before releasing the product to the public. 0:18 But it doesn't need to be. 0:22 I believe that putting QA earlier in the development process can save you 0:24 a lot of time and money by finding defects before they're even written. 0:29 Okay, so lets demonstrate what I mean here. 0:34 In a typical development process we have planning, followed by development, 0:37 then testing, and finally release. 0:42 In our example the people in charge of planning decide that we need to add 0:44 a button that appears over the screen to ask the user if they would like to 0:49 subscribe to a newsletter. 0:54 Development takes this idea and implements it. 0:55 It gets down to testing and we discover that the button squashes everything 0:59 on the webpage to the bottom of the page, which just looks terrible. 1:03 Development works on a fix and it gets back to testing. 1:07 Everything looks good from the QA side. 1:10 There's a button at the top of the page and nothing is getting squashed. 1:12 But the people who planned this feature take a look and 1:17 realize that it's also not what they wanted. 1:19 They wanted a button to go over everything else on the site. 1:22 We push this feature back to development. 1:25 They work on a totally new way to show the button and 1:28 it finally shows up in testing a couple days later. 1:30 QA approves it and it gets released. 1:33 Wow, that was a lot of wasted time though. 1:35 What would have been good is if we talked about what the button should look like 1:38 up at the planning stage. 1:42 And then maybe have some people recheck it along the way. 1:43 There are some pretty simple ways we can solve these issues 1:47 by bringing quality assurance up stream. 1:50 First is putting everyone involved in the planning session. 1:53 QA and developers get a chance to ask technical and design related questions. 1:56 Is the button just at the top of the screen or 2:02 is it going to be over all of the other buttons. 2:04 This saves us a lot of time spent reworking the entire feature. 2:07 Then when development is ready, they should review the code with other 2:12 developers and testers to look for problems with it. 2:16 It turns out that there was a simple issue with the code that another developer 2:19 spotted during the review. 2:23 Sure, we are involving more people in the early stages of development. 2:25 But when we look at both the amount of time spent between a bunch of 2:29 people versus the amount of time it took to release a simple feature, 2:33 the time saved is huge. 2:38 Of course, not every situation is going to be solved this way. 2:39 But the point is to lower the amount of backtracking that we typically do. 2:44 To me, this also feels like a much more agile software development experience. 2:49 Let's go over some simple tricks you can do to bring quality upstream. 2:54 Join planning and design discussions. 2:59 This will help expose potential technical problems early and 3:02 help smooth out user experience problems. 3:06 QA engineers have a great sense of how the app gets used so 3:09 why not be a resource when planning the next features. 3:14 You can also bring existing user data and feedback to provide more 3:18 insight into how users might actually interact with these features. 3:23 Make code reviews mandatory. 3:27 Before a developer checks in code they should be required to have at least one 3:30 other developer review the code. 3:35 This catches a lot of simple problems before they ever get introduced. 3:37 Encourage more testing within the development process. 3:41 Get developers to write unit tests alongside their code. 3:46 Set up a continuous integration server to run before the code gets to QA. 3:50 This will run automated tests before they ever get to manual testing. 3:55 This will prevent bad builds from being tested and wasting time in QA. 4:01 See our notes for links to Jenkins and Travis CI, 4:06 which are popular tools for doing continuous integration. 4:09 Test driven development is also a great way of bringing quality upstream. 4:13 This is a way of making sure that your developers are always 4:18 trying to build unit tests as part of the development process. 4:22 It often takes more work and a little practice, but 4:26 it's a wonderful tool to ensure quality code is getting deployed. 4:30 Treehouse offers a course in unit testing and 4:36 test driven development for more on this topic. 4:39 Well, that's it for our QA engineering course. 4:42 I hope you've enjoyed this topic as much as I have teaching it. 4:45 Quality is a very broad category with many different ways of getting the job done. 4:48 But it's also essential to making sure that our customers and 4:54 users are happy with the software. 4:58 Testing is not just a nice thing to do, it's required. 5:00 Thanks for watching. 5:03
You need to sign up for Treehouse in order to download course files.Sign up