1 00:00:00,340 --> 00:00:06,190 So when it comes to QA, what we really like to focus on a lot is process. 2 00:00:06,190 --> 00:00:10,040 Process can seem like kind of a dry and boring word. 3 00:00:10,040 --> 00:00:14,820 But what it helps is in ensuring that quality practices are always used across 4 00:00:14,820 --> 00:00:15,730 all of development. 5 00:00:16,900 --> 00:00:20,190 First let's review the basic development process. 6 00:00:20,190 --> 00:00:24,360 We introduce a new idea, turn that idea into a feature, 7 00:00:24,360 --> 00:00:29,250 development then codes it, QA tests it, and then we release it. 8 00:00:29,250 --> 00:00:29,940 Simple, right? 9 00:00:31,220 --> 00:00:36,030 In QA it's important to remember that we are trying to avoid huge design and 10 00:00:36,030 --> 00:00:41,210 technical challenges at launch by being involved in all of these steps and 11 00:00:41,210 --> 00:00:44,770 by testing a lot, like as much as possible. 12 00:00:46,340 --> 00:00:50,640 Most of the time we are dealing with incremental changes in the software, or 13 00:00:50,640 --> 00:00:53,700 in other words, adding new features. 14 00:00:53,700 --> 00:00:58,510 Features are just the capabilities that the software can effectively do. 15 00:00:58,510 --> 00:01:03,850 Your word processor has the feature of typing characters onto the screen, 16 00:01:03,850 --> 00:01:08,150 printing the document, and saving the document to a file. 17 00:01:08,150 --> 00:01:10,400 Those are all the features of that software. 18 00:01:10,400 --> 00:01:15,360 So we have our RSVP app, and we want to add a new feature on top of it. 19 00:01:15,360 --> 00:01:19,540 We want the add the Hide those who haven't responded feature. 20 00:01:19,540 --> 00:01:20,950 Let's take a step back though and 21 00:01:20,950 --> 00:01:25,060 talk about how those features get defined in the first place. 22 00:01:25,060 --> 00:01:28,464 Usually we have a product manager define it first, but 23 00:01:28,464 --> 00:01:32,250 it could be other people, even the developers themselves. 24 00:01:32,250 --> 00:01:35,624 Let's assume it's a product manager asking one 25 00:01:35,624 --> 00:01:39,088 of our developers to create this hiding feature. 26 00:01:39,088 --> 00:01:42,900 To help me illustrate this, I'm going to have someone pose as our product manager. 27 00:01:44,070 --> 00:01:47,160 Hey Ryan, I wanna add a feature that lets users 28 00:01:47,160 --> 00:01:51,280 hide those who haven't responded to the RSVP app yet. 29 00:01:51,280 --> 00:01:56,670 Okay, great, but what do you expect this feature to do exactly? 30 00:01:56,670 --> 00:02:01,200 This is when the product manager should be a little more explicit about that feature. 31 00:02:02,270 --> 00:02:06,020 So I want the user to be able to click a button, and 32 00:02:06,020 --> 00:02:12,210 when they click it, every user who hasn't responded gets hidden on the page. 33 00:02:12,210 --> 00:02:16,050 Awesome, where should that button go on the page? 34 00:02:16,050 --> 00:02:19,390 Just right above all of the invitees. 35 00:02:19,390 --> 00:02:21,810 Cool, one more thing though. 36 00:02:21,810 --> 00:02:23,810 After clicking that button, 37 00:02:23,810 --> 00:02:28,390 do we want to still be able to add more people to the invitee list? 38 00:02:28,390 --> 00:02:30,900 They won't show up on the page if they haven't responded. 39 00:02:32,240 --> 00:02:33,820 Yes, that makes sense. 40 00:02:33,820 --> 00:02:36,550 Let's show anyone who has just been invited, 41 00:02:36,550 --> 00:02:39,540 along with everyone else who has responded. 42 00:02:39,540 --> 00:02:40,905 Anything else? 43 00:02:40,905 --> 00:02:42,950 Nope, that's it, thank you. 44 00:02:42,950 --> 00:02:48,070 So in that last discussion, we clarified a few things about our hiding feature. 45 00:02:48,070 --> 00:02:53,080 We found that when the button is clicked anyone who hasn't responded gets hidden. 46 00:02:54,230 --> 00:02:59,110 The button goes directly above the current invitees on the page. 47 00:02:59,110 --> 00:03:00,330 And finally, 48 00:03:00,330 --> 00:03:05,830 any new invitees will show up on the page even though they haven't responded. 49 00:03:05,830 --> 00:03:09,950 So what we're defining here is a set of acceptance criteria or 50 00:03:09,950 --> 00:03:13,960 a formal set of rules for how a feature must work. 51 00:03:13,960 --> 00:03:18,270 Other aspects about the feature might get decided along the way, 52 00:03:18,270 --> 00:03:21,840 like what the font should be or how large the button is. 53 00:03:22,970 --> 00:03:27,630 But the absolute necessary parts of the feature are the acceptance 54 00:03:27,630 --> 00:03:32,170 criteria and what we want to do is pin them down as much as possible. 55 00:03:34,000 --> 00:03:37,780 A lot of defects that happen when a product gets released are due to just 56 00:03:37,780 --> 00:03:41,620 poor planning and not defining the features very well. 57 00:03:41,620 --> 00:03:45,270 That's why a system of creating acceptance criteria before 58 00:03:45,270 --> 00:03:49,030 anyone starts to code is so important. 59 00:03:49,030 --> 00:03:53,230 It's really common for developers to see a vaguely defined feature, but 60 00:03:53,230 --> 00:03:54,610 start coding on it anyway. 61 00:03:56,340 --> 00:04:01,060 When can a QA engineering help with defining acceptance criteria? 62 00:04:01,060 --> 00:04:05,550 Usually in the planning stage when product managers are introducing the feature to 63 00:04:05,550 --> 00:04:06,700 the team to be worked on. 64 00:04:07,780 --> 00:04:12,050 We're going to come back to doing QA at the planning stage later in the series. 65 00:04:12,050 --> 00:04:16,830 But keep in mind that simply asking clarifying questions can drastically 66 00:04:16,830 --> 00:04:20,850 improve the quality of your product later on, and it's so simple to do.