1 00:00:00,540 --> 00:00:04,180 In this video, we're going to show you how to create a bug report 2 00:00:04,180 --> 00:00:09,280 that your team can use to reproduce and fix problems in your software. 3 00:00:09,280 --> 00:00:13,440 Bug reports are important to get correct, because it costs a lot of time for 4 00:00:13,440 --> 00:00:18,090 developers to reproduce issues and find the right fix for them. 5 00:00:18,090 --> 00:00:21,170 The better we can lead developers to the true defect, 6 00:00:21,170 --> 00:00:22,820 the quicker the fix can happen. 7 00:00:23,930 --> 00:00:29,050 Much of the bug fixing process involves recreating or reproducing the issue 8 00:00:29,050 --> 00:00:33,570 in a way the developer can see in their own version of the software. 9 00:00:33,570 --> 00:00:36,190 Bug reports need to give the developer 10 00:00:36,190 --> 00:00:39,490 all of the details they would need to reproduce it. 11 00:00:39,490 --> 00:00:43,520 So a bug report will include the following necessary parts. 12 00:00:43,520 --> 00:00:48,070 A description or name of the bug, the steps to reproduce, 13 00:00:48,070 --> 00:00:52,310 the expected result, and the actual result. 14 00:00:52,310 --> 00:00:56,000 These are the most important things to the developer and 15 00:00:56,000 --> 00:00:58,000 others who need to reproduce the defect. 16 00:00:59,160 --> 00:01:03,700 A description or name of the bug should probably include where the bug happened in 17 00:01:03,700 --> 00:01:07,400 a short blurb about what the bug is. 18 00:01:07,400 --> 00:01:12,361 So like, Header bar- Logout 19 00:01:12,361 --> 00:01:19,370 button does not log user out when clicked. 20 00:01:19,370 --> 00:01:24,910 Try to do better than undescriptive names like, logout button does not work. 21 00:01:24,910 --> 00:01:28,110 This doesn't really tell us anything about the actual problem, and 22 00:01:28,110 --> 00:01:31,100 it will probably create some issues down the road 23 00:01:31,100 --> 00:01:34,680 when we inevitably have another problem with the logout button. 24 00:01:34,680 --> 00:01:38,320 I like to include a when in the name that quickly describes 25 00:01:38,320 --> 00:01:40,510 how that problem came to be. 26 00:01:40,510 --> 00:01:43,590 So in this case, I say, when clicked. 27 00:01:43,590 --> 00:01:48,090 The steps to reproduce are directions for the developer on how to make 28 00:01:48,090 --> 00:01:52,110 this defect happen locally, or maybe one of the test servers. 29 00:01:52,110 --> 00:01:56,110 So here we list steps, kind of like how we would in a test case. 30 00:01:56,110 --> 00:02:00,050 So we follow a simple step one, step two, step three type of formula. 31 00:02:01,210 --> 00:02:02,670 And that's it. 32 00:02:02,670 --> 00:02:05,220 More criteria to reproduce the issue 33 00:02:05,220 --> 00:02:08,638 means that you need to add more qualifying steps. 34 00:02:08,638 --> 00:02:13,800 So if our logout button only has a problem when logged in as an administrator, 35 00:02:13,800 --> 00:02:16,770 we probably want to mention that in the first step. 36 00:02:16,770 --> 00:02:22,210 In this case, our steps to reproduce would be log in to the application, 37 00:02:23,920 --> 00:02:30,230 and then click the logout button in the header, simple. 38 00:02:30,230 --> 00:02:33,290 So I'm going to add on to that last step, 39 00:02:33,290 --> 00:02:37,077 click into the application as an administrator. 40 00:02:39,461 --> 00:02:42,329 Now we want to write up the expected results, 41 00:02:42,329 --> 00:02:45,520 which is what we want the application to do. 42 00:02:45,520 --> 00:02:49,540 When I click the log out button, I want the application to log out and 43 00:02:49,540 --> 00:02:51,630 take me to the log in screen. 44 00:02:51,630 --> 00:02:53,940 So I'll write this in the expected results section. 45 00:02:55,220 --> 00:02:58,070 Take the user back to the log in screen. 46 00:02:59,460 --> 00:03:04,040 This is important to write down each time, because often the developer does not have 47 00:03:04,040 --> 00:03:08,670 the same context that you do for what is expected to happen here. 48 00:03:08,670 --> 00:03:12,620 And the reason that we're here is what is actually happening. 49 00:03:12,620 --> 00:03:16,880 So we'll write down the actual outcome in the actual results section. 50 00:03:16,880 --> 00:03:19,650 The button doesn't do anything when I click on it. 51 00:03:19,650 --> 00:03:20,900 So I'll write that down here. 52 00:03:22,250 --> 00:03:29,287 The logout button does not do anything when clicked. 53 00:03:29,287 --> 00:03:32,590 Great, this is important so the developer can look for 54 00:03:32,590 --> 00:03:35,940 what you are seeing and report if they are seeing something different. 55 00:03:35,940 --> 00:03:39,980 Maybe they're seeing what happens in expected results for instance. 56 00:03:39,980 --> 00:03:42,240 Maybe they're seeing something else entirely. 57 00:03:43,250 --> 00:03:45,700 That's a pretty good start to our bug report, and 58 00:03:45,700 --> 00:03:50,520 our developer could reasonably reproduce the issue and see what is wrong. 59 00:03:50,520 --> 00:03:55,680 On top of all that, we probably want to include a bunch of other pieces of data, 60 00:03:55,680 --> 00:03:58,490 so the location of the defect in the app. 61 00:03:58,490 --> 00:04:00,740 I like to include this in the name of the bug, but 62 00:04:00,740 --> 00:04:04,650 often bug reporting systems have a special place to categorize this. 63 00:04:05,680 --> 00:04:10,710 Any particular data set or user role that needs to be used in recreating it. 64 00:04:10,710 --> 00:04:15,220 In our log out bug example, we needed to use an administrator. 65 00:04:15,220 --> 00:04:20,450 Any configuration notes, so if the bug is only seen in Firefox, 66 00:04:20,450 --> 00:04:22,720 that would be a good piece of information to include. 67 00:04:24,130 --> 00:04:27,980 Any screenshots or videos of the defect happening. 68 00:04:27,980 --> 00:04:30,460 This is extremely helpful. 69 00:04:30,460 --> 00:04:33,240 When you're demonstrating what is happening, 70 00:04:33,240 --> 00:04:37,160 you can show things a lot better than you can describe them. 71 00:04:37,160 --> 00:04:39,860 A picture is worth a thousand words. 72 00:04:39,860 --> 00:04:44,780 A lot of screenshot programs include these big red arrows and text boxes that 73 00:04:44,780 --> 00:04:49,590 you can put in your screenshots to make sure the problem is much more obvious. 74 00:04:49,590 --> 00:04:53,880 Finally, any workaround used to get around the defect. 75 00:04:53,880 --> 00:04:58,720 A workaround is simply how the user can still do what they wanna do 76 00:04:58,720 --> 00:05:03,290 despite running into that defect, like how you might need to click through a few 77 00:05:03,290 --> 00:05:07,080 other pages to get somewhere when another button isn't working. 78 00:05:08,190 --> 00:05:11,920 Maybe the log out button works as long as you go back to the home page. 79 00:05:13,030 --> 00:05:17,270 This is helpful if the defect is high or critical severity and 80 00:05:17,270 --> 00:05:19,790 the user needs a way to keep working. 81 00:05:19,790 --> 00:05:22,320 And this is how we file a defect. 82 00:05:22,320 --> 00:05:25,170 Let's try to put this into practice by writing up the bug 83 00:05:25,170 --> 00:05:27,350 we found in our last video. 84 00:05:27,350 --> 00:05:31,490 If you remember, our defect was an issue where when we click submit, 85 00:05:31,490 --> 00:05:35,650 the app creates a new card below with no name. 86 00:05:35,650 --> 00:05:38,260 We expected an error to happen instead 87 00:05:38,260 --> 00:05:42,450 that would tell the user that they need to include a name before they can submit. 88 00:05:42,450 --> 00:05:46,400 So let's go over and try to create a new bug report for that. 89 00:05:46,400 --> 00:05:48,470 First, let's name the bug. 90 00:05:48,470 --> 00:05:53,897 We wanna put the location of the bug in the name, which is Invite Someone, so 91 00:05:53,897 --> 00:06:01,520 Invite Someone, and we want to describe what happens and when. 92 00:06:01,520 --> 00:06:06,070 So I'll call this Invite Someone- Empty 93 00:06:06,070 --> 00:06:11,780 card created when submitting with no name. 94 00:06:11,780 --> 00:06:15,740 This tells the developer where this happened, Invite Someone, and 95 00:06:15,740 --> 00:06:20,380 it tells them what exactly happened and what the simple condition was. 96 00:06:20,380 --> 00:06:23,190 That's the with no name part. 97 00:06:23,190 --> 00:06:26,380 Since we do have a location here, I'm gonna add it right here, 98 00:06:26,380 --> 00:06:27,920 which is Invite Someone. 99 00:06:29,450 --> 00:06:31,730 For steps to reproduce, 100 00:06:31,730 --> 00:06:35,250 we wanna list every step that we needed to get to this state. 101 00:06:35,250 --> 00:06:37,710 So first we need to open the RSVP app. 102 00:06:39,290 --> 00:06:40,810 This step is fairly obvious, but 103 00:06:40,810 --> 00:06:44,170 I'm going to include it here anyway just to be complete. 104 00:06:44,170 --> 00:06:50,460 And without typing a name, Click the Submit button. 105 00:06:52,420 --> 00:06:56,270 Now I'm only including the without typing a name part because it might not be 106 00:06:56,270 --> 00:07:01,320 totally obvious to the developer what the conditions were to get this defect. 107 00:07:01,320 --> 00:07:04,010 These are all steps we need to reproduce this. 108 00:07:04,010 --> 00:07:06,770 Now let's add expected results. 109 00:07:06,770 --> 00:07:10,940 Errors should appear letting the user 110 00:07:12,350 --> 00:07:18,730 know that they need to enter a name before submitting. 111 00:07:20,970 --> 00:07:25,120 I'll let the developer decide how to handle exactly what it should look like 112 00:07:25,120 --> 00:07:29,740 since a simple red box around Invite Someone would probably suffice. 113 00:07:29,740 --> 00:07:33,280 They could also add a message in there telling the user what to do. 114 00:07:33,280 --> 00:07:36,190 But we're not gonna tell them exactly what to do to fix that. 115 00:07:37,250 --> 00:07:38,800 Now let's add the actual result. 116 00:07:40,220 --> 00:07:48,620 A card is added to the invitee's list with no name. 117 00:07:48,620 --> 00:07:51,610 By now the developers should be noticing that too, but 118 00:07:51,610 --> 00:07:54,890 we wanna call attention to what the problem is specifically. 119 00:07:54,890 --> 00:07:58,638 I'm also going to add a screen shot to the issue of the defect so 120 00:07:58,638 --> 00:08:02,112 the developer knows exactly what they're looking for. 121 00:08:05,960 --> 00:08:07,500 And that's it. 122 00:08:07,500 --> 00:08:10,590 We don't need to provide a data set or any workarounds here, so 123 00:08:10,590 --> 00:08:12,120 let's leave it at that. 124 00:08:12,120 --> 00:08:16,590 In our next video we'll learn about bug severity versus priority.