All language subtitles for Software Testing A Web Application - Case Study - complete course

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian Download
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,320 --> 00:00:03,840 So this course is a case study. I tested 2 00:00:03,840 --> 00:00:08,160 an application. It was tracks and I made 3 00:00:08,160 --> 00:00:10,719 a bunch of notes and I tracked what I 4 00:00:10,719 --> 00:00:13,679 did and I did debriefs as I was testing. 5 00:00:13,679 --> 00:00:15,440 So I've recorded all the videos for 6 00:00:15,440 --> 00:00:17,520 those and they will be injected in the 7 00:00:17,520 --> 00:00:19,840 course. You will also see sections like 8 00:00:19,840 --> 00:00:22,000 this which are essentially theory which 9 00:00:22,000 --> 00:00:23,760 are slide based and I'm going to talk 10 00:00:23,760 --> 00:00:26,800 about the aspects that I was working on 11 00:00:26,800 --> 00:00:30,560 because what I've done is I've uh taken 12 00:00:30,560 --> 00:00:32,399 an application 13 00:00:32,399 --> 00:00:34,880 tested it to try and demonstrate how to 14 00:00:34,880 --> 00:00:38,160 test it um in practice. So I'm not 15 00:00:38,160 --> 00:00:40,160 covering all the theory of testing right 16 00:00:40,160 --> 00:00:42,800 because with each application we will 17 00:00:42,800 --> 00:00:45,360 only ever use subsets of our knowledge 18 00:00:45,360 --> 00:00:48,960 but in practical terms if I look at a 19 00:00:48,960 --> 00:00:51,440 single application and a single feature 20 00:00:51,440 --> 00:00:53,840 I can go into real detail on what I 21 00:00:53,840 --> 00:00:55,280 actually did and why I did it and 22 00:00:55,280 --> 00:00:57,760 hopefully that will come through. Now 23 00:00:57,760 --> 00:01:01,120 what I've done as a result of this is 24 00:01:01,120 --> 00:01:06,479 I've modeled the uh basic process that I 25 00:01:06,479 --> 00:01:10,479 used and the basic uh I guess sessions 26 00:01:10,479 --> 00:01:13,200 that I've used when I was doing testing 27 00:01:13,200 --> 00:01:15,119 and I've put them here. So you'll see 28 00:01:15,119 --> 00:01:17,040 this diagram as we go through. This 29 00:01:17,040 --> 00:01:20,640 diagram is not meant to be um a full 30 00:01:20,640 --> 00:01:22,640 scope of what we do when we're testing, 31 00:01:22,640 --> 00:01:24,799 right? It's what I did when I tested 32 00:01:24,799 --> 00:01:28,640 this particular application. In any part 33 00:01:28,640 --> 00:01:30,240 of your applications, when you're 34 00:01:30,240 --> 00:01:32,079 testing it, you may have other sessions 35 00:01:32,079 --> 00:01:34,560 that you use. Um, I have generic 36 00:01:34,560 --> 00:01:36,240 sessions in here. Like the exploratory 37 00:01:36,240 --> 00:01:37,840 session is very generic. I can do 38 00:01:37,840 --> 00:01:40,159 anything in there. The admin section is 39 00:01:40,159 --> 00:01:41,840 basically if there's something I did 40 00:01:41,840 --> 00:01:43,360 that I haven't covered, I'll throw it in 41 00:01:43,360 --> 00:01:45,280 the admin section. So, that could easily 42 00:01:45,280 --> 00:01:48,000 be spun out. But I wanted to try and 43 00:01:48,000 --> 00:01:51,840 simplify the important aspects of what I 44 00:01:51,840 --> 00:01:54,479 was doing. Planning, setting things up, 45 00:01:54,479 --> 00:01:56,240 checking things are working, doing some 46 00:01:56,240 --> 00:01:58,719 recon and modeling and doing and the 47 00:01:58,719 --> 00:02:00,159 difference between a coverage session 48 00:02:00,159 --> 00:02:02,079 and an exploratory session. An 49 00:02:02,079 --> 00:02:03,280 exploratory session, a technical 50 00:02:03,280 --> 00:02:05,360 session, debrief. These are really 51 00:02:05,360 --> 00:02:07,360 important aspects. An admin is really 52 00:02:07,360 --> 00:02:08,800 important, but it covers a whole bunch 53 00:02:08,800 --> 00:02:11,120 of processes. So when you see this, this 54 00:02:11,120 --> 00:02:13,200 isn't saying this is what you do. This 55 00:02:13,200 --> 00:02:15,760 is saying this is a high-level 56 00:02:15,760 --> 00:02:18,239 diagrammatic representation of what I 57 00:02:18,239 --> 00:02:21,120 think I did when I was testing and I 58 00:02:21,120 --> 00:02:22,480 didn't necessarily do it in this order 59 00:02:22,480 --> 00:02:24,800 although it came close. Um so you would 60 00:02:24,800 --> 00:02:27,040 mix and match the different aspects even 61 00:02:27,040 --> 00:02:29,680 though it's showing it as a flow model. 62 00:02:29,680 --> 00:02:31,200 It's looping around. We do different 63 00:02:31,200 --> 00:02:32,480 things at different times. I just 64 00:02:32,480 --> 00:02:34,640 haven't put all the connections and 65 00:02:34,640 --> 00:02:36,879 relationships in there. So you will see 66 00:02:36,879 --> 00:02:40,080 that as we go through. Now this is a 67 00:02:40,080 --> 00:02:42,959 micro case study. So essentially I 68 00:02:42,959 --> 00:02:46,800 performed about a day of testing. So 4 69 00:02:46,800 --> 00:02:50,239 hours of hands-on testing that was 70 00:02:50,239 --> 00:02:53,680 pretty intense. And then I debriefed 71 00:02:53,680 --> 00:02:56,080 that. Then I tidied up my notes. Then I 72 00:02:56,080 --> 00:02:57,360 thought about it. Then I figured out 73 00:02:57,360 --> 00:02:58,959 what I was going to do next. So all 74 00:02:58,959 --> 00:03:01,280 those extra bits are kind of equivalent 75 00:03:01,280 --> 00:03:03,360 to the admin processes we would do that 76 00:03:03,360 --> 00:03:05,519 would take up probably like a full 8 77 00:03:05,519 --> 00:03:07,760 hour day, but we never have full 8our 78 00:03:07,760 --> 00:03:09,680 days at work. So this is about a day day 79 00:03:09,680 --> 00:03:11,920 and a half of actual testing wrapped 80 00:03:11,920 --> 00:03:15,599 into this. Um then what I'm doing is I'm 81 00:03:15,599 --> 00:03:17,360 looking at what I did at a micro level 82 00:03:17,360 --> 00:03:20,640 and extrapolating it up to a what can I 83 00:03:20,640 --> 00:03:22,959 learn in general about testing at a 84 00:03:22,959 --> 00:03:25,280 macro level. That's what this means. And 85 00:03:25,280 --> 00:03:27,360 so it means not everything that I've did 86 00:03:27,360 --> 00:03:29,040 will be discussed. Not all testing will 87 00:03:29,040 --> 00:03:30,319 be discussed. We won't look at all 88 00:03:30,319 --> 00:03:32,400 testing techniques. But everything that 89 00:03:32,400 --> 00:03:36,560 I'm talking about has some context. So 90 00:03:36,560 --> 00:03:39,120 there's quite a few lectures in here. Uh 91 00:03:39,120 --> 00:03:41,519 there should be uh slides available and 92 00:03:41,519 --> 00:03:44,720 the PDF for my notes and we'll see what 93 00:03:44,720 --> 00:03:46,400 else we we put in here. But hopefully 94 00:03:46,400 --> 00:03:49,440 there's enough in there to give you an 95 00:03:49,440 --> 00:03:51,200 understanding of how I approached 96 00:03:51,200 --> 00:03:53,920 testing. And do ask questions as you go 97 00:03:53,920 --> 00:03:56,640 through. Leave um comments because then 98 00:03:56,640 --> 00:04:00,720 I may be able to answer by text or um 99 00:04:00,720 --> 00:04:02,400 possibly create another lectures. But 100 00:04:02,400 --> 00:04:04,959 it's useful to know how much of my test 101 00:04:04,959 --> 00:04:06,480 process and thought process actually 102 00:04:06,480 --> 00:04:10,599 gets communicated through this. 103 00:04:19,120 --> 00:04:22,079 So this micro course is a spin-off of a 104 00:04:22,079 --> 00:04:23,759 talk that I'm going to do. And I'm going 105 00:04:23,759 --> 00:04:25,520 to do this talk twice. It's an unusual 106 00:04:25,520 --> 00:04:27,919 thing. I'm going to do this talk at an 107 00:04:27,919 --> 00:04:31,520 online conference in December and a 108 00:04:31,520 --> 00:04:36,800 conference in America in April 2020. 109 00:04:36,800 --> 00:04:39,759 Don't normally repeat talks, but uh I'm 110 00:04:39,759 --> 00:04:41,199 making I'm trying to make my life a 111 00:04:41,199 --> 00:04:44,000 little bit easier. And as part of that, 112 00:04:44,000 --> 00:04:46,160 I'm also going to record it as a micro 113 00:04:46,160 --> 00:04:49,360 course for Patreon. Now, the the intent 114 00:04:49,360 --> 00:04:51,680 for this is 115 00:04:51,680 --> 00:04:53,520 I get asked, how do I test? How do I 116 00:04:53,520 --> 00:04:55,199 know what to do? What tools do I use? 117 00:04:55,199 --> 00:04:57,840 what was the thought process etc etc and 118 00:04:57,840 --> 00:05:00,400 that's this course so but in order but I 119 00:05:00,400 --> 00:05:02,160 don't want to work in theory so in order 120 00:05:02,160 --> 00:05:04,720 to work as a practical exercise I'm 121 00:05:04,720 --> 00:05:06,880 actually going to think through from 122 00:05:06,880 --> 00:05:09,199 start to finish and these are going to 123 00:05:09,199 --> 00:05:12,000 be short sessions so finish is a fairly 124 00:05:12,000 --> 00:05:15,600 arbitrary term um how I go about testing 125 00:05:15,600 --> 00:05:18,160 a web application and this is a kind of 126 00:05:18,160 --> 00:05:20,240 micro example so what I'm going to do is 127 00:05:20,240 --> 00:05:22,240 once I've done a test session I'm going 128 00:05:22,240 --> 00:05:24,479 to go macro to that and see what lessons 129 00:05:24,479 --> 00:05:26,800 learned learned that apply across the 130 00:05:26,800 --> 00:05:30,400 board to other sessions. So, I'm going 131 00:05:30,400 --> 00:05:34,919 to use the tracks API. 132 00:05:43,440 --> 00:05:45,440 Okay, so this might seem a little bit of 133 00:05:45,440 --> 00:05:46,880 an odd section, choosing the right 134 00:05:46,880 --> 00:05:49,280 person for the job, right? Cuz I am 135 00:05:49,280 --> 00:05:52,160 testing this on my own. But what I'm 136 00:05:52,160 --> 00:05:55,039 really talking about is the notion that 137 00:05:55,039 --> 00:05:57,840 I had to choose which application I was 138 00:05:57,840 --> 00:06:01,440 going to test. And I did that based on 139 00:06:01,440 --> 00:06:04,479 uh my technical knowledge, my 140 00:06:04,479 --> 00:06:05,840 understanding of the web, my 141 00:06:05,840 --> 00:06:07,840 understanding of uh open source 142 00:06:07,840 --> 00:06:10,880 applications, my knowledge. So I'm 143 00:06:10,880 --> 00:06:13,039 choosing the right application for me. 144 00:06:13,039 --> 00:06:14,720 But in the real world, this translates 145 00:06:14,720 --> 00:06:16,960 into choosing the right person for the 146 00:06:16,960 --> 00:06:19,280 job. So I've chosen tracks, not because 147 00:06:19,280 --> 00:06:21,120 I've used it before, although I have. So 148 00:06:21,120 --> 00:06:23,039 my familiarity with it before means that 149 00:06:23,039 --> 00:06:24,639 I know that it's a web app. It's got a 150 00:06:24,639 --> 00:06:26,880 lot of JavaScript. It has an API, it has 151 00:06:26,880 --> 00:06:29,039 a database, there's a lot of scope for 152 00:06:29,039 --> 00:06:30,960 testing, there's a lot of richness in 153 00:06:30,960 --> 00:06:33,840 there. So tracks is a an open-source 154 00:06:33,840 --> 00:06:36,560 to-do management system where you create 155 00:06:36,560 --> 00:06:39,520 actions, next actions. You put them into 156 00:06:39,520 --> 00:06:41,600 context, i.e. where are you going to do 157 00:06:41,600 --> 00:06:43,759 them, and you can create projects for 158 00:06:43,759 --> 00:06:45,520 them, and you can set up reminders. and 159 00:06:45,520 --> 00:06:48,000 it's a a to-do app based on um Dave 160 00:06:48,000 --> 00:06:51,120 Allen's getting things done methodology, 161 00:06:51,120 --> 00:06:53,360 but ignoring the domain, it's a very 162 00:06:53,360 --> 00:06:55,840 useful open-source app that I think is 163 00:06:55,840 --> 00:06:57,440 very easy to install because I can 164 00:06:57,440 --> 00:06:59,759 download a a virtual machine or docker 165 00:06:59,759 --> 00:07:01,759 and use it that way. So, I'm using 166 00:07:01,759 --> 00:07:03,599 tracks 167 00:07:03,599 --> 00:07:07,680 and I have used it before, but it's been 168 00:07:07,680 --> 00:07:10,560 so long since I used it and previously 169 00:07:10,560 --> 00:07:12,080 I've looked at different parts in the 170 00:07:12,080 --> 00:07:13,199 application. And so every time we 171 00:07:13,199 --> 00:07:14,560 approach a different an application, 172 00:07:14,560 --> 00:07:17,440 we'll learn something different. Going 173 00:07:17,440 --> 00:07:20,160 macro to this, like most of the time we 174 00:07:20,160 --> 00:07:22,400 don't get to choose what we test cuz 175 00:07:22,400 --> 00:07:25,120 we'll be working in um environments, we 176 00:07:25,120 --> 00:07:26,720 working in companies, there'll be a 177 00:07:26,720 --> 00:07:28,319 manager, the manager will choose what we 178 00:07:28,319 --> 00:07:31,039 work on. But the thing is we um 179 00:07:31,039 --> 00:07:34,479 influence that because we have skills 180 00:07:34,479 --> 00:07:36,479 and experience and some of our skills 181 00:07:36,479 --> 00:07:38,319 and experience and domain knowledge will 182 00:07:38,319 --> 00:07:40,960 not translate into some applications. So 183 00:07:40,960 --> 00:07:44,000 we will not be suitable people to test 184 00:07:44,000 --> 00:07:46,000 that without additional training or 185 00:07:46,000 --> 00:07:48,720 without um offering a risk essentially 186 00:07:48,720 --> 00:07:50,560 to the project cuz we may not know what 187 00:07:50,560 --> 00:07:52,880 we're doing. Um if I have to test a 188 00:07:52,880 --> 00:07:55,599 Hadoop app um I really need to work on a 189 00:07:55,599 --> 00:07:57,280 team that really understands Hadoop 190 00:07:57,280 --> 00:07:59,599 because I will be learning that um from 191 00:07:59,599 --> 00:08:02,000 scratch. So I've done consultancy on 192 00:08:02,000 --> 00:08:04,240 Hadoop teams and but I was relying on 193 00:08:04,240 --> 00:08:06,560 their um massive amounts of technical 194 00:08:06,560 --> 00:08:09,280 knowledge, me reading around the subject 195 00:08:09,280 --> 00:08:11,840 and conducting experiments from me 196 00:08:11,840 --> 00:08:13,120 asking them questions when they didn't 197 00:08:13,120 --> 00:08:14,800 know the answer so we could deep dive 198 00:08:14,800 --> 00:08:17,599 into it, me applying my technical domain 199 00:08:17,599 --> 00:08:19,680 testing domain knowledge onto their 200 00:08:19,680 --> 00:08:22,319 project and mixing it that way. So we 201 00:08:22,319 --> 00:08:24,240 have to combine the right people at the 202 00:08:24,240 --> 00:08:27,120 right time to have the right team mix. 203 00:08:27,120 --> 00:08:28,479 This can be hard when you're in 204 00:08:28,479 --> 00:08:29,599 management. Any of you that are in 205 00:08:29,599 --> 00:08:30,879 management will know that this can be 206 00:08:30,879 --> 00:08:33,839 hard because um someone that you need on 207 00:08:33,839 --> 00:08:35,279 a project may not be available because 208 00:08:35,279 --> 00:08:36,560 they're on another project and you're 209 00:08:36,560 --> 00:08:38,159 trying to juggle things around and 210 00:08:38,159 --> 00:08:40,640 projects get delayed and put people off. 211 00:08:40,640 --> 00:08:42,399 So that means we have to have some slack 212 00:08:42,399 --> 00:08:44,320 in our teams or we as managers have to 213 00:08:44,320 --> 00:08:46,480 have the ability to support people or 214 00:08:46,480 --> 00:08:48,320 know that they'll be supported on the 215 00:08:48,320 --> 00:08:50,240 team and sometimes we allocate people to 216 00:08:50,240 --> 00:08:52,160 teams because of their um soft skills, 217 00:08:52,160 --> 00:08:54,560 their personality and how they will fit 218 00:08:54,560 --> 00:08:57,120 into that team. But it is a key lesson 219 00:08:57,120 --> 00:09:00,399 that we have to choose the right people 220 00:09:00,399 --> 00:09:02,480 for the right technology for the right 221 00:09:02,480 --> 00:09:04,640 job. Otherwise there's a risk otherwise 222 00:09:04,640 --> 00:09:06,240 there's a process that means we have to 223 00:09:06,240 --> 00:09:07,680 manage it to make sure that they 224 00:09:07,680 --> 00:09:10,720 understand what they were doing. So that 225 00:09:10,720 --> 00:09:14,240 is a tiny tiny lesson but it's massive. 226 00:09:14,240 --> 00:09:16,399 I mean it's it's essentially what is 227 00:09:16,399 --> 00:09:18,399 test management choosing the right 228 00:09:18,399 --> 00:09:21,360 person for the job. What is our career 229 00:09:21,360 --> 00:09:23,279 management? making sure we have the 230 00:09:23,279 --> 00:09:26,399 skills we need for the job. This is 231 00:09:26,399 --> 00:09:28,480 absolutely key to what we do. But a 232 00:09:28,480 --> 00:09:31,040 micro level, it's choosing a particular 233 00:09:31,040 --> 00:09:34,839 application to test. 234 00:09:43,040 --> 00:09:46,000 So environments is a big concept and in 235 00:09:46,000 --> 00:09:48,080 terms of this model it's planning and 236 00:09:48,080 --> 00:09:50,240 the environment install and setup and 237 00:09:50,240 --> 00:09:52,560 getting everything working. Now for 238 00:09:52,560 --> 00:09:55,600 tracks I could use Docker. There's a lot 239 00:09:55,600 --> 00:09:57,440 of Docker images out there for tracks. 240 00:09:57,440 --> 00:09:59,600 It's very easy to install a Docker image 241 00:09:59,600 --> 00:10:01,279 once you know what you're doing and 242 00:10:01,279 --> 00:10:02,720 experiment with them to see which one 243 00:10:02,720 --> 00:10:05,279 works. Um I could do a local install. 244 00:10:05,279 --> 00:10:07,440 Tracks is a Ruby on Rails application. I 245 00:10:07,440 --> 00:10:09,600 think it's a bit hard to install 246 00:10:09,600 --> 00:10:11,680 locally, so I try to avoid that. But if 247 00:10:11,680 --> 00:10:13,360 someone was familiar with Ruby on Rails, 248 00:10:13,360 --> 00:10:15,120 had the environment set up, a local 249 00:10:15,120 --> 00:10:17,360 install might be best for them. Um, I 250 00:10:17,360 --> 00:10:19,120 tend to use a virtual machine, which is 251 00:10:19,120 --> 00:10:20,800 pre-built, may not be the most 252 00:10:20,800 --> 00:10:22,959 up-to-date version, which could be a 253 00:10:22,959 --> 00:10:24,560 risk. And the same virtual machine can 254 00:10:24,560 --> 00:10:26,160 also be cloud hosted. So, I have a lot 255 00:10:26,160 --> 00:10:28,640 of options in the environment that I 256 00:10:28,640 --> 00:10:31,200 choose. Now, from a testing perspective, 257 00:10:31,200 --> 00:10:33,279 I have requirements from that 258 00:10:33,279 --> 00:10:34,800 environment, right? to support my 259 00:10:34,800 --> 00:10:36,000 testing. I'm pretty sure I'm going to 260 00:10:36,000 --> 00:10:38,640 want to proxy traffic. So, it needs to 261 00:10:38,640 --> 00:10:40,320 be somewhere that I can proxy traffic. 262 00:10:40,320 --> 00:10:41,760 So, it doesn't really matter what 263 00:10:41,760 --> 00:10:43,200 environment that is. I should be able to 264 00:10:43,200 --> 00:10:45,120 do that. But some corporate environments 265 00:10:45,120 --> 00:10:47,839 make that really hard that make that um 266 00:10:47,839 --> 00:10:50,640 difficult. I may want to um view the 267 00:10:50,640 --> 00:10:53,920 database which would limit me so that I 268 00:10:53,920 --> 00:10:55,600 don't use Docker, right? because I don't 269 00:10:55,600 --> 00:10:58,079 know Docker well enough to know how to 270 00:10:58,079 --> 00:11:00,959 configure a Docker image or running 271 00:11:00,959 --> 00:11:04,320 Docker container to allow me to access 272 00:11:04,320 --> 00:11:05,440 the database. I don't know how to do 273 00:11:05,440 --> 00:11:06,800 that. I'd have to do research. That 274 00:11:06,800 --> 00:11:09,680 might take more time and I'm trying to 275 00:11:09,680 --> 00:11:12,880 not necessarily learn how Docker and 276 00:11:12,880 --> 00:11:14,160 other environments work as this 277 00:11:14,160 --> 00:11:15,519 exercise. I'm trying to learn how my 278 00:11:15,519 --> 00:11:17,200 testing works. So, I didn't want to 279 00:11:17,200 --> 00:11:19,920 impose those extra constraints. I wanted 280 00:11:19,920 --> 00:11:22,079 a low impact on my machine, which ruled 281 00:11:22,079 --> 00:11:25,360 out a a local install. And the knowledge 282 00:11:25,360 --> 00:11:29,120 that we have will limit the 283 00:11:29,120 --> 00:11:31,440 effectiveness that we have when we're 284 00:11:31,440 --> 00:11:33,040 working with an environment. That's why 285 00:11:33,040 --> 00:11:34,399 we have to work in teams. That's why 286 00:11:34,399 --> 00:11:36,079 it's really important that we don't just 287 00:11:36,079 --> 00:11:38,240 get an environment given to us that we 288 00:11:38,240 --> 00:11:40,800 don't have the permissions to it. Right? 289 00:11:40,800 --> 00:11:43,600 The environment really, really impacts 290 00:11:43,600 --> 00:11:45,440 testing. The amount of times I've gone 291 00:11:45,440 --> 00:11:46,959 on site and I've worked on projects 292 00:11:46,959 --> 00:11:48,720 where we do not have permissions to 293 00:11:48,720 --> 00:11:50,480 access the environments. We don't have 294 00:11:50,480 --> 00:11:52,640 permissions to SSH into the box to see 295 00:11:52,640 --> 00:11:54,720 the logs. That means we can't track the 296 00:11:54,720 --> 00:11:56,079 memory usage. There's a whole bunch of 297 00:11:56,079 --> 00:11:58,079 things we can't do if we don't have 298 00:11:58,079 --> 00:12:00,720 permissions. Sometimes we have too many 299 00:12:00,720 --> 00:12:02,079 not necessarily permissions but 300 00:12:02,079 --> 00:12:04,640 responsibility. So we're responsible for 301 00:12:04,640 --> 00:12:06,320 um releasing the application in the 302 00:12:06,320 --> 00:12:07,680 live. It's the same as if I had to 303 00:12:07,680 --> 00:12:10,399 install tracks on my local machine. That 304 00:12:10,399 --> 00:12:12,160 would be an issue. I may not know how to 305 00:12:12,160 --> 00:12:13,839 do that and I may not have support if I 306 00:12:13,839 --> 00:12:16,320 do it myself. Hopefully on teams we have 307 00:12:16,320 --> 00:12:18,480 support but very often we don't. We're 308 00:12:18,480 --> 00:12:19,839 left to get on with it. It can take 309 00:12:19,839 --> 00:12:21,839 months sometimes to set up environments 310 00:12:21,839 --> 00:12:23,760 for certain test teams. I've seen 311 00:12:23,760 --> 00:12:26,160 projects where they have literally spent 312 00:12:26,160 --> 00:12:28,480 months setting it up to get it in the 313 00:12:28,480 --> 00:12:29,839 right state and they can't change it 314 00:12:29,839 --> 00:12:31,120 once it's there because they don't know 315 00:12:31,120 --> 00:12:33,440 how to do backups. It's a completely 316 00:12:33,440 --> 00:12:36,240 different install process than live, 317 00:12:36,240 --> 00:12:38,880 which itself is essentially a risk for 318 00:12:38,880 --> 00:12:41,040 the project because if you're deploying 319 00:12:41,040 --> 00:12:42,399 something differently in the different 320 00:12:42,399 --> 00:12:43,839 environments, how do you know that your 321 00:12:43,839 --> 00:12:45,600 deployment process hasn't changed 322 00:12:45,600 --> 00:12:47,600 things? We really want the same 323 00:12:47,600 --> 00:12:50,000 deployment process as live. We really 324 00:12:50,000 --> 00:12:51,279 want the same version management. We 325 00:12:51,279 --> 00:12:52,399 really want the same level of 326 00:12:52,399 --> 00:12:55,040 observation, tracking, monitoring on 327 00:12:55,040 --> 00:12:57,200 these testing environments. We want the 328 00:12:57,200 --> 00:12:58,800 same process for doing upgrades, 329 00:12:58,800 --> 00:13:01,200 downgrades, making sure the database is 330 00:13:01,200 --> 00:13:02,800 okay, making sure the same version of 331 00:13:02,800 --> 00:13:04,560 the database software is being used on 332 00:13:04,560 --> 00:13:06,160 the different environments. Environments 333 00:13:06,160 --> 00:13:08,959 are a massive thing. I mean, one of the 334 00:13:08,959 --> 00:13:10,800 interesting things with Docker is it 335 00:13:10,800 --> 00:13:13,360 makes environment provision a lot easier 336 00:13:13,360 --> 00:13:16,160 and once we understand it, then we can 337 00:13:16,160 --> 00:13:19,360 do a lot with it. But it's only really a 338 00:13:19,360 --> 00:13:20,880 particularly good thing if we're also 339 00:13:20,880 --> 00:13:23,040 using Docker in live. If we suddenly use 340 00:13:23,040 --> 00:13:25,920 a different process in live, we have to 341 00:13:25,920 --> 00:13:28,399 do some sort of process to mitigate the 342 00:13:28,399 --> 00:13:30,880 risk that the live environment might 343 00:13:30,880 --> 00:13:32,480 operate differently from the docker 344 00:13:32,480 --> 00:13:34,240 environments that we've been using and 345 00:13:34,240 --> 00:13:37,360 we need to try and as a project mitigate 346 00:13:37,360 --> 00:13:39,600 that. One of the ways we can do that is 347 00:13:39,600 --> 00:13:42,160 by repeating the automated execution on 348 00:13:42,160 --> 00:13:43,680 our live environments, but then we have 349 00:13:43,680 --> 00:13:45,839 to tear down data. We might have a 350 00:13:45,839 --> 00:13:49,360 subset but there's a that notion that 351 00:13:49,360 --> 00:13:52,240 environments impact testing and when we 352 00:13:52,240 --> 00:13:54,399 are not looking at those properly 353 00:13:54,399 --> 00:13:57,199 there's a risk I mean this is a constant 354 00:13:57,199 --> 00:13:59,440 source of risk when I'm looking at 355 00:13:59,440 --> 00:14:01,839 projects when I'm doing consultancy the 356 00:14:01,839 --> 00:14:05,120 environments that people use is a really 357 00:14:05,120 --> 00:14:06,399 really important and people 358 00:14:06,399 --> 00:14:08,560 underestimate it so that was an 359 00:14:08,560 --> 00:14:11,600 important lesson to come across early in 360 00:14:11,600 --> 00:14:14,639 my particular process 361 00:14:24,240 --> 00:14:26,160 and what's interesting for me is the 362 00:14:26,160 --> 00:14:30,800 very first session that I have to do is 363 00:14:30,800 --> 00:14:33,440 an install session right if if I was on 364 00:14:33,440 --> 00:14:36,079 a project there'd be lots of discussion 365 00:14:36,079 --> 00:14:39,839 etc etc but for me I'm not working on a 366 00:14:39,839 --> 00:14:42,480 project but I can't do anything until I 367 00:14:42,480 --> 00:14:44,720 have an environment until I have an an 368 00:14:44,720 --> 00:14:46,079 application installed that I can work. 369 00:14:46,079 --> 00:14:47,519 So for me, the first session is an 370 00:14:47,519 --> 00:14:50,480 install session. And for tracks, there's 371 00:14:50,480 --> 00:14:53,440 multiple ways that I can install track. 372 00:14:53,440 --> 00:14:55,839 So I could go off to the tracks website, 373 00:14:55,839 --> 00:14:57,920 download it, and install it and run it 374 00:14:57,920 --> 00:15:01,120 locally. To do that, I need to have so I 375 00:15:01,120 --> 00:15:02,720 think it's Ruby on Rails. I need to set 376 00:15:02,720 --> 00:15:04,720 up an environment to do that. And given 377 00:15:04,720 --> 00:15:06,639 the time scales that I've got, I don't 378 00:15:06,639 --> 00:15:08,480 really want to do that. Given the risk 379 00:15:08,480 --> 00:15:10,240 that that might pose to my main machine, 380 00:15:10,240 --> 00:15:12,000 I don't really want to do that. So I 381 00:15:12,000 --> 00:15:14,000 want to try and isolate it somewhat. 382 00:15:14,000 --> 00:15:17,360 There are Docker uh instances that I can 383 00:15:17,360 --> 00:15:19,360 use to install this. There's at least 384 00:15:19,360 --> 00:15:21,120 three that I know of. If I go off to 385 00:15:21,120 --> 00:15:23,839 Docker. So there's a bunch of tracks 386 00:15:23,839 --> 00:15:29,680 installed on um Docker. If I do tracks, 387 00:15:29,680 --> 00:15:31,519 um there's a few in here. The one that I 388 00:15:31,519 --> 00:15:34,959 mainly use is the Stano one, but I'm not 389 00:15:34,959 --> 00:15:37,600 going to use the Docker install for this 390 00:15:37,600 --> 00:15:39,920 because my Docker knowledge isn't 391 00:15:39,920 --> 00:15:43,040 particularly good. So the technology, 392 00:15:43,040 --> 00:15:45,600 the environment would impact my testing 393 00:15:45,600 --> 00:15:47,440 and I want to give myself as many 394 00:15:47,440 --> 00:15:50,480 opportunities as possible for um 395 00:15:50,480 --> 00:15:52,399 exploring the thought processes behind 396 00:15:52,399 --> 00:15:53,680 testing. So I want to make my 397 00:15:53,680 --> 00:15:55,600 environment as flexible as humanly 398 00:15:55,600 --> 00:15:58,720 possible which is why I'm going to use a 399 00:15:58,720 --> 00:16:00,720 virtual machine. I'm going to download 400 00:16:00,720 --> 00:16:03,040 the tracks virtual machine from Turkey 401 00:16:03,040 --> 00:16:05,279 Linux. Turnkey Linux, not Turkey. It's 402 00:16:05,279 --> 00:16:06,720 not Well, it is Thanksgiving at the 403 00:16:06,720 --> 00:16:08,800 moment, but it's not Turkey Linux, it's 404 00:16:08,800 --> 00:16:11,040 turnkey Linux. So, I'm just going to 405 00:16:11,040 --> 00:16:15,120 install a VM and run that using uh 406 00:16:15,120 --> 00:16:17,360 Oracle VM Virtual Box that's open 407 00:16:17,360 --> 00:16:19,360 source, that's free, allows other people 408 00:16:19,360 --> 00:16:22,079 to repeat this if they want. And then 409 00:16:22,079 --> 00:16:25,199 TrackX runs quite happily in a VM and I 410 00:16:25,199 --> 00:16:28,160 can use it. The benefit of that is um 411 00:16:28,160 --> 00:16:30,480 it's just another machine. I can SSH 412 00:16:30,480 --> 00:16:32,320 into it. I can access the database 413 00:16:32,320 --> 00:16:34,800 there. I can proxy requests to it quite 414 00:16:34,800 --> 00:16:36,880 easily without any issues. There's a 415 00:16:36,880 --> 00:16:39,040 specific IP address. Everything becomes 416 00:16:39,040 --> 00:16:40,800 a little easier. It's basically I've got 417 00:16:40,800 --> 00:16:43,440 tracks installed on another machine in 418 00:16:43,440 --> 00:16:45,839 my environment. I'm connecting it to it 419 00:16:45,839 --> 00:16:47,680 there and I can give myself forever 420 00:16:47,680 --> 00:16:49,839 permissions I want. 421 00:16:49,839 --> 00:16:53,600 This comes with some constraints because 422 00:16:53,600 --> 00:16:55,759 this version of tracks is not the most 423 00:16:55,759 --> 00:16:57,600 up to date. For the purposes of my 424 00:16:57,600 --> 00:17:01,279 exercise, I don't mind that. Right. So 425 00:17:01,279 --> 00:17:03,680 the first session I have is an install 426 00:17:03,680 --> 00:17:06,160 session to download it, set it up, go 427 00:17:06,160 --> 00:17:07,919 through the process. I've gone through 428 00:17:07,919 --> 00:17:10,000 the process. I've set up an admin user 429 00:17:10,000 --> 00:17:11,679 on here. Just going through all the 430 00:17:11,679 --> 00:17:14,400 prompts and now tracks is running. If I 431 00:17:14,400 --> 00:17:17,120 go back to the main I do not want to 432 00:17:17,120 --> 00:17:19,280 quit. If I go back to the main virtual 433 00:17:19,280 --> 00:17:20,880 machine configuration, this is what it 434 00:17:20,880 --> 00:17:23,280 looks like when in the running box. And 435 00:17:23,280 --> 00:17:25,520 if I look at the networking tab, then I 436 00:17:25,520 --> 00:17:27,120 can see the IP address it's running on 437 00:17:27,120 --> 00:17:28,319 because every time I start up the 438 00:17:28,319 --> 00:17:29,600 virtual box, it could be on a different 439 00:17:29,600 --> 00:17:31,440 IP address. Currently, it's on 440 00:17:31,440 --> 00:17:34,440 192.168136. 441 00:17:35,120 --> 00:17:37,200 It's captured. There we go. So, if I go 442 00:17:37,200 --> 00:17:40,919 off to 1 192.168.1.36, 443 00:17:41,440 --> 00:17:43,440 I'll see tracks and I'm logged in and 444 00:17:43,440 --> 00:17:44,640 this is the application I'm going to 445 00:17:44,640 --> 00:17:46,640 test. So, the very first session is 446 00:17:46,640 --> 00:17:48,720 simply an install session. Took me half 447 00:17:48,720 --> 00:17:51,280 an hour to get it installed. I'm using 448 00:17:51,280 --> 00:17:53,120 the virtual machine. I'm running in 449 00:17:53,120 --> 00:17:56,080 virtual box. And the basic lesson 450 00:17:56,080 --> 00:17:58,960 learned from this is the environments 451 00:17:58,960 --> 00:18:03,679 that we choose impact our testing, 452 00:18:03,679 --> 00:18:06,880 right? Cuz I need to understand the 453 00:18:06,880 --> 00:18:08,960 technology that this is running with. If 454 00:18:08,960 --> 00:18:12,320 I don't, I'm I'm going to be limited to 455 00:18:12,320 --> 00:18:13,760 the extent that I understand the 456 00:18:13,760 --> 00:18:15,200 environment, to the extent that I can 457 00:18:15,200 --> 00:18:17,280 access the stack. If I don't understand 458 00:18:17,280 --> 00:18:18,960 the environment, if this is running on 459 00:18:18,960 --> 00:18:21,520 some really odd new technology, I have 460 00:18:21,520 --> 00:18:23,520 no idea what it is, my testing is going 461 00:18:23,520 --> 00:18:25,440 to be limited to the front end. I'm 462 00:18:25,440 --> 00:18:28,799 going to be limiting my testing because 463 00:18:28,799 --> 00:18:31,039 of the environment, because of my access 464 00:18:31,039 --> 00:18:33,280 to the environment. Sometimes we have 465 00:18:33,280 --> 00:18:35,360 issues that we don't have access to 466 00:18:35,360 --> 00:18:37,280 environments. We don't have permissions 467 00:18:37,280 --> 00:18:39,039 and I essentially need permissions to 468 00:18:39,039 --> 00:18:41,520 observe uh so I can observe traffic 469 00:18:41,520 --> 00:18:43,520 without anyone's permission. But I 470 00:18:43,520 --> 00:18:45,360 probably want to observe logs. I may 471 00:18:45,360 --> 00:18:47,520 want to observe memory overhead on the 472 00:18:47,520 --> 00:18:49,600 server. I can only do that if I have the 473 00:18:49,600 --> 00:18:51,760 permissions. I may want to interrogate 474 00:18:51,760 --> 00:18:53,760 what is happening in those logs longer 475 00:18:53,760 --> 00:18:55,120 term. I can only do that if I have 476 00:18:55,120 --> 00:18:57,039 permissions. I may want to go into the 477 00:18:57,039 --> 00:18:59,840 database. I can only do that if I have 478 00:18:59,840 --> 00:19:01,440 permissions. So the environment is 479 00:19:01,440 --> 00:19:04,320 really important. It's really key to 480 00:19:04,320 --> 00:19:06,720 testing our understanding of the 481 00:19:06,720 --> 00:19:08,720 environment and the permissions that we 482 00:19:08,720 --> 00:19:12,919 have on that environment. 483 00:19:21,120 --> 00:19:23,840 So we kind of mentioned this in the 484 00:19:23,840 --> 00:19:25,840 environment section releases and 485 00:19:25,840 --> 00:19:27,440 deployments. We really want the same 486 00:19:27,440 --> 00:19:30,080 process as live and we want to share the 487 00:19:30,080 --> 00:19:33,039 knowledge. Like too many times I see um 488 00:19:33,039 --> 00:19:35,760 projects where the programmers are doing 489 00:19:35,760 --> 00:19:37,600 all the environment management which 490 00:19:37,600 --> 00:19:39,600 means the test team never learn which 491 00:19:39,600 --> 00:19:41,039 means that they never have the ability 492 00:19:41,039 --> 00:19:44,240 to go deeper into the uh logs or the 493 00:19:44,240 --> 00:19:46,000 environment to do testing. So they're 494 00:19:46,000 --> 00:19:48,480 limited by the knowledge and it's a very 495 00:19:48,480 --> 00:19:50,720 simple thing to pair on projects to 496 00:19:50,720 --> 00:19:52,720 share the knowledge but a lot of people 497 00:19:52,720 --> 00:19:55,200 don't do that for some reason. But for 498 00:19:55,200 --> 00:19:59,840 me I had to um install the application. 499 00:19:59,840 --> 00:20:02,720 So I this is where you'll start to see 500 00:20:02,720 --> 00:20:05,039 me making notes. This is the first of my 501 00:20:05,039 --> 00:20:08,559 notes in the testing and these are my 502 00:20:08,559 --> 00:20:10,320 actual notes. I'll try and show you as 503 00:20:10,320 --> 00:20:11,840 much as possible the actual notes that I 504 00:20:11,840 --> 00:20:13,520 made but you'll also see those in the 505 00:20:13,520 --> 00:20:16,640 debrief sections. So you can see exactly 506 00:20:16,640 --> 00:20:19,280 when I started. I tend to do dates uh 507 00:20:19,280 --> 00:20:21,280 completely backwards because then I can 508 00:20:21,280 --> 00:20:23,600 if I need to I can sort files based on 509 00:20:23,600 --> 00:20:25,120 the date. So I get used to writing the 510 00:20:25,120 --> 00:20:27,440 dates backwards. I think it's readable 511 00:20:27,440 --> 00:20:29,679 like that. just I don't even have to 512 00:20:29,679 --> 00:20:31,840 think when I'm doing it. So I I've made 513 00:20:31,840 --> 00:20:34,000 a note of where I downloaded the tracks 514 00:20:34,000 --> 00:20:36,240 VM from. I've just installed it, which 515 00:20:36,240 --> 00:20:39,600 is simple. I've made a note of the IP 516 00:20:39,600 --> 00:20:42,320 address that it started on and the admin 517 00:20:42,320 --> 00:20:44,000 password that I've got. And you can see 518 00:20:44,000 --> 00:20:45,600 I've got timestamps for when I started 519 00:20:45,600 --> 00:20:47,679 and when I stopped. Didn't make a lot of 520 00:20:47,679 --> 00:20:50,559 notes in this because I know how to do 521 00:20:50,559 --> 00:20:53,039 this, right? So the notes are there to 522 00:20:53,039 --> 00:20:55,200 support me doing debriefs. They're there 523 00:20:55,200 --> 00:20:56,960 to help other people. I think this is 524 00:20:56,960 --> 00:20:59,520 fairly obvious what I did when I was 525 00:20:59,520 --> 00:21:01,679 working through it. Had anything gone 526 00:21:01,679 --> 00:21:03,600 wrong, then I would probably have made 527 00:21:03,600 --> 00:21:05,760 more notes. Had I had to do anything 528 00:21:05,760 --> 00:21:07,919 different that was not the way that I 529 00:21:07,919 --> 00:21:09,520 normally configure virtual machines, I 530 00:21:09,520 --> 00:21:11,280 would have made a note because then that 531 00:21:11,280 --> 00:21:13,120 would remind me later on. But this is 532 00:21:13,120 --> 00:21:15,360 basically telling me nothing untoward 533 00:21:15,360 --> 00:21:18,240 happened and it took me half an hour to 534 00:21:18,240 --> 00:21:21,760 set up tracks. So then the question is 535 00:21:21,760 --> 00:21:24,960 okay so I've got my environment and I've 536 00:21:24,960 --> 00:21:26,559 installed it as a VM I can log in as 537 00:21:26,559 --> 00:21:30,640 admin but is the actual tracks ready 538 00:21:30,640 --> 00:21:33,039 right now I don't know that right I can 539 00:21:33,039 --> 00:21:35,840 get tracks up I can go to it I can kind 540 00:21:35,840 --> 00:21:37,919 of click around I can maybe do I don't 541 00:21:37,919 --> 00:21:39,360 really know whether I've installed it 542 00:21:39,360 --> 00:21:42,880 properly this is a big issue on a lot of 543 00:21:42,880 --> 00:21:45,120 projects so I know that I'm going to 544 00:21:45,120 --> 00:21:46,799 need to do a kind of health check 545 00:21:46,799 --> 00:21:49,120 session to do this and I've I've tried 546 00:21:49,120 --> 00:21:50,480 to be really careful careful when I do 547 00:21:50,480 --> 00:21:52,960 the sessions here so that I don't bleed 548 00:21:52,960 --> 00:21:54,559 sessions into each other to try and 549 00:21:54,559 --> 00:21:56,480 chunk as much as possible what is the 550 00:21:56,480 --> 00:21:58,320 overriding concept I'm doing at this 551 00:21:58,320 --> 00:22:00,799 point in time. So I'm trying to install 552 00:22:00,799 --> 00:22:03,039 the application. I could bleed it into 553 00:22:03,039 --> 00:22:05,280 going okay has it installed correctly 554 00:22:05,280 --> 00:22:08,000 and is it ready to test. But really what 555 00:22:08,000 --> 00:22:09,520 I did is I got it up and running. I 556 00:22:09,520 --> 00:22:11,440 logged in as an admin and then stopped 557 00:22:11,440 --> 00:22:13,280 because I had installed. I wanted to be 558 00:22:13,280 --> 00:22:16,080 very clear my aims because it's too easy 559 00:22:16,080 --> 00:22:18,480 to let test sessions bleed into each 560 00:22:18,480 --> 00:22:21,760 other. Now with this particular system 561 00:22:21,760 --> 00:22:25,679 there is no dashboard in tracks that 562 00:22:25,679 --> 00:22:27,039 tells me it's working that all the 563 00:22:27,039 --> 00:22:29,120 services is working that the database is 564 00:22:29,120 --> 00:22:30,400 up and running. I've got no way of 565 00:22:30,400 --> 00:22:32,320 seeing the logs from within tracks. I 566 00:22:32,320 --> 00:22:33,760 can't click on a link and it opens the 567 00:22:33,760 --> 00:22:35,760 logs up. I can't go to a single 568 00:22:35,760 --> 00:22:37,200 dashboard where there's a whole bunch of 569 00:22:37,200 --> 00:22:40,480 green lights. So it's not easy for me to 570 00:22:40,480 --> 00:22:42,799 ping I mean I could ping this this and 571 00:22:42,799 --> 00:22:45,520 see that I get response. I could curl, 572 00:22:45,520 --> 00:22:47,679 make sure the admin page comes up and do 573 00:22:47,679 --> 00:22:49,440 and put that into a GP and do some 574 00:22:49,440 --> 00:22:51,440 checks. I could do some very basic 575 00:22:51,440 --> 00:22:54,080 DevOps type scripting checks in there 576 00:22:54,080 --> 00:22:56,400 and sometimes those might be all you 577 00:22:56,400 --> 00:22:58,640 need for a particular setup. And I've 578 00:22:58,640 --> 00:23:00,960 seen companies where they deploy the 579 00:23:00,960 --> 00:23:02,320 application and all they do is ping it 580 00:23:02,320 --> 00:23:03,840 to make sure it's working. I don't think 581 00:23:03,840 --> 00:23:06,240 that's enough, but um that's what 582 00:23:06,240 --> 00:23:07,919 sometimes people do. I think it's really 583 00:23:07,919 --> 00:23:09,760 important to build dashboards or health 584 00:23:09,760 --> 00:23:12,080 checks into our application to make sure 585 00:23:12,080 --> 00:23:13,760 it's working and comes back with status 586 00:23:13,760 --> 00:23:16,400 codes. Even in some of the REST APIs I 587 00:23:16,400 --> 00:23:18,320 build for support and testing, there's 588 00:23:18,320 --> 00:23:22,000 usually a um am I running which responds 589 00:23:22,000 --> 00:23:24,159 with a yes with a message. So, it's not 590 00:23:24,159 --> 00:23:26,000 just a ping. I'm actually calling the 591 00:23:26,000 --> 00:23:27,679 API to make sure it can trigger 592 00:23:27,679 --> 00:23:29,039 something on the back end to make sure 593 00:23:29,039 --> 00:23:31,200 the application is started up. because 594 00:23:31,200 --> 00:23:32,640 sometimes you can ping something, it 595 00:23:32,640 --> 00:23:34,400 seems like it's there uh because the 596 00:23:34,400 --> 00:23:35,919 port is taken up, but it doesn't 597 00:23:35,919 --> 00:23:37,679 actually respond with the correct 598 00:23:37,679 --> 00:23:39,039 information because it may not be 599 00:23:39,039 --> 00:23:40,960 running. And if you've got a micros 600 00:23:40,960 --> 00:23:42,640 service type architecture with multiple 601 00:23:42,640 --> 00:23:43,919 services, you really want to make sure 602 00:23:43,919 --> 00:23:46,880 they're all working. So this is where 603 00:23:46,880 --> 00:23:49,919 automated execution really can help, 604 00:23:49,919 --> 00:23:51,520 right? because we can do automated 605 00:23:51,520 --> 00:23:53,760 execution to go through the GUI make 606 00:23:53,760 --> 00:23:55,360 sure things are as expected in the right 607 00:23:55,360 --> 00:23:57,840 places to make API calls to make sure 608 00:23:57,840 --> 00:24:00,320 we're getting the information back and 609 00:24:00,320 --> 00:24:02,799 we might go through a simple CRUD check 610 00:24:02,799 --> 00:24:05,120 where we create an entity read it do an 611 00:24:05,120 --> 00:24:06,960 update then delete it to make sure the 612 00:24:06,960 --> 00:24:09,280 application state is not changed with 613 00:24:09,280 --> 00:24:11,679 our health checking creating dashboards 614 00:24:11,679 --> 00:24:14,799 that self-report can be useful because 615 00:24:14,799 --> 00:24:18,880 what we want to avoid is the issue that 616 00:24:18,880 --> 00:24:22,480 we start testing and we do days, weeks, 617 00:24:22,480 --> 00:24:25,120 potentially months of testing, which 618 00:24:25,120 --> 00:24:27,039 used to happen, and we discover that 619 00:24:27,039 --> 00:24:28,480 there's something wrong in the 620 00:24:28,480 --> 00:24:31,279 environment, that the wrong version has 621 00:24:31,279 --> 00:24:33,440 been deployed, that one micros service 622 00:24:33,440 --> 00:24:35,120 that is relying on isn't quite the same 623 00:24:35,120 --> 00:24:37,200 as everything else. So, and if that 624 00:24:37,200 --> 00:24:39,120 invalidates testing, we waste a lot of 625 00:24:39,120 --> 00:24:40,720 time. So, we're trying to de-risk the 626 00:24:40,720 --> 00:24:43,039 notion that we might do stuff and find 627 00:24:43,039 --> 00:24:45,360 out too late, and we really want to 628 00:24:45,360 --> 00:24:49,039 avoid wasting time. So I need to do a 629 00:24:49,039 --> 00:24:51,039 health check session in order to check 630 00:24:51,039 --> 00:24:54,600 whether that's working. 631 00:25:02,559 --> 00:25:06,320 So I split the environment um setup and 632 00:25:06,320 --> 00:25:09,120 install from the health check to make it 633 00:25:09,120 --> 00:25:11,360 really discreet. So I I created a health 634 00:25:11,360 --> 00:25:14,159 check session. Now, this can be useful 635 00:25:14,159 --> 00:25:16,559 um in multiple different places, like 636 00:25:16,559 --> 00:25:18,960 just a quick session to double check 637 00:25:18,960 --> 00:25:21,279 that things are as we want before we 638 00:25:21,279 --> 00:25:23,679 dive in. We can do that with are we 639 00:25:23,679 --> 00:25:25,039 working with the correct version? Are we 640 00:25:25,039 --> 00:25:26,400 doing this? Sometimes it's only 5 641 00:25:26,400 --> 00:25:28,799 minutes. I do like sessions don't have 642 00:25:28,799 --> 00:25:32,640 to be an hour long, half an hour long. 643 00:25:32,640 --> 00:25:36,080 Create a name. Do your testing in 644 00:25:36,080 --> 00:25:39,840 chunks. We call that a session. um and 645 00:25:39,840 --> 00:25:41,840 stick to as much as possible what you're 646 00:25:41,840 --> 00:25:43,520 trying to do in there. And that's what 647 00:25:43,520 --> 00:25:46,000 the health check session that I did was. 648 00:25:46,000 --> 00:25:47,600 So, my health check is basically just 649 00:25:47,600 --> 00:25:48,880 going to be okay, I'm going to do a 650 00:25:48,880 --> 00:25:50,880 create, read, update, delete in the main 651 00:25:50,880 --> 00:25:52,640 areas, keep it simple. I'll try and 652 00:25:52,640 --> 00:25:55,360 create a to-do uh read it, check that 653 00:25:55,360 --> 00:25:57,520 it's there, update it, delete it, make 654 00:25:57,520 --> 00:25:59,360 sure I can go through the same the the 655 00:25:59,360 --> 00:26:02,480 basic process. And I I created notes as 656 00:26:02,480 --> 00:26:05,120 I did that. So, you can look in the PDF 657 00:26:05,120 --> 00:26:06,960 and it's not a lot of notes. It's not a 658 00:26:06,960 --> 00:26:09,360 big session. What was that? 2:00 we 659 00:26:09,360 --> 00:26:10,960 started and then went through. Yeah. So, 660 00:26:10,960 --> 00:26:13,039 I started at 2:00, went through until 20 661 00:26:13,039 --> 00:26:15,600 passed. And you can see I stuck fairly 662 00:26:15,600 --> 00:26:17,360 well to my plan. So, I did a create, 663 00:26:17,360 --> 00:26:19,360 read, update, delete. But also, I made 664 00:26:19,360 --> 00:26:21,520 notes as I was going through. It's it's 665 00:26:21,520 --> 00:26:24,240 almost impossible not to observe as 666 00:26:24,240 --> 00:26:26,320 you're doing any kind of activity. So, 667 00:26:26,320 --> 00:26:28,960 I'm observing as I go through. What what 668 00:26:28,960 --> 00:26:31,840 happens when I'm doing uh a very simple 669 00:26:31,840 --> 00:26:34,080 high level session is I don't tend to do 670 00:26:34,080 --> 00:26:36,480 a lot of interrogation. I don't tend to 671 00:26:36,480 --> 00:26:39,120 do a lot of manipulation. So what I'll 672 00:26:39,120 --> 00:26:41,679 do is I'll do observation and note down 673 00:26:41,679 --> 00:26:43,760 anything that I may want to investigate 674 00:26:43,760 --> 00:26:46,400 in the future. Try to avoid going deeper 675 00:26:46,400 --> 00:26:48,640 into that and doing an interrogation or 676 00:26:48,640 --> 00:26:50,559 manipulation on it to really investigate 677 00:26:50,559 --> 00:26:52,559 it because I'll create another session 678 00:26:52,559 --> 00:26:55,120 for that. Um and I didn't really do that 679 00:26:55,120 --> 00:26:57,840 I think in this particular session. So 680 00:26:57,840 --> 00:26:59,360 there's in this particular set of tests. 681 00:26:59,360 --> 00:27:02,080 So there's no there's no session type in 682 00:27:02,080 --> 00:27:04,640 there for defect investigation or an 683 00:27:04,640 --> 00:27:06,960 investigative exploratory session, 684 00:27:06,960 --> 00:27:08,240 right? Because that didn't really come 685 00:27:08,240 --> 00:27:10,159 up in the time scales, which is why I'm 686 00:27:10,159 --> 00:27:11,679 saying that the the model you see at the 687 00:27:11,679 --> 00:27:14,320 start of each session is not um 688 00:27:14,320 --> 00:27:17,440 complete, but it's a very very simple 689 00:27:17,440 --> 00:27:18,960 way. And these are the actual notes I 690 00:27:18,960 --> 00:27:20,720 made, right? So these these are 691 00:27:20,720 --> 00:27:23,840 relatively detailed. They say what I'm 692 00:27:23,840 --> 00:27:28,080 going to do. they say um roughly what um 693 00:27:28,080 --> 00:27:31,360 happened and I'll make more notes if I 694 00:27:31,360 --> 00:27:34,720 really need to be more clear. Sometimes 695 00:27:34,720 --> 00:27:38,640 I'm very formal and I'll have um like 696 00:27:38,640 --> 00:27:41,200 question in uppercase. Sometimes it will 697 00:27:41,200 --> 00:27:43,120 be defect. Sometimes I write note. 698 00:27:43,120 --> 00:27:44,480 Sometimes I don't really care about the 699 00:27:44,480 --> 00:27:46,320 language. So I don't really care about 700 00:27:46,320 --> 00:27:48,960 consistency. But over time I tend to 701 00:27:48,960 --> 00:27:51,039 just write note, question, issue, 702 00:27:51,039 --> 00:27:53,919 defect, investigate, to do, right? So, 703 00:27:53,919 --> 00:27:55,600 and they stand out. So, I'm putting them 704 00:27:55,600 --> 00:27:58,399 in uppercase. Now, I made my notes in 705 00:27:58,399 --> 00:28:01,279 Evernote. Um, which sometimes is a good 706 00:28:01,279 --> 00:28:02,880 thing, sometimes it isn't. The reason I 707 00:28:02,880 --> 00:28:04,320 did that is because it allows me to 708 00:28:04,320 --> 00:28:07,440 embed screenshots easily when I'm doing 709 00:28:07,440 --> 00:28:09,600 um screen capture. But the notes that 710 00:28:09,600 --> 00:28:11,919 you'll see are markdown. Right? So, the 711 00:28:11,919 --> 00:28:13,919 PDF that I've released, I converted this 712 00:28:13,919 --> 00:28:15,760 into markdown because this is mostly 713 00:28:15,760 --> 00:28:17,360 markdown. Right? What you can see there 714 00:28:17,360 --> 00:28:19,520 is that some of the outlines are not 715 00:28:19,520 --> 00:28:21,120 marked out, which meant when I copy and 716 00:28:21,120 --> 00:28:23,679 pasted them into the text editor, I had 717 00:28:23,679 --> 00:28:26,320 to reindent them to get that working. 718 00:28:26,320 --> 00:28:29,440 But I tend to write in text. I tend to 719 00:28:29,440 --> 00:28:31,520 write very textual notes that are 720 00:28:31,520 --> 00:28:33,600 linear. They go from start to end. And 721 00:28:33,600 --> 00:28:35,600 I'll rely on debriefs and other admin 722 00:28:35,600 --> 00:28:37,360 sessions to tidy them up and format 723 00:28:37,360 --> 00:28:38,640 them. So this is the kind of thing that 724 00:28:38,640 --> 00:28:40,880 I observed as I was working, right? I 725 00:28:40,880 --> 00:28:43,679 found the delete quite hard to click on 726 00:28:43,679 --> 00:28:46,000 depending on how you move to it. Um, so 727 00:28:46,000 --> 00:28:47,360 that would be something that I would 728 00:28:47,360 --> 00:28:50,000 probably raise in an admin session 729 00:28:50,000 --> 00:28:52,320 afterwards, a communication session. I 730 00:28:52,320 --> 00:28:53,760 also found that when I was dragging 731 00:28:53,760 --> 00:28:55,360 stuff, there were a lot of rendering 732 00:28:55,360 --> 00:28:58,960 type issues. The um Z ordering wasn't 733 00:28:58,960 --> 00:29:00,720 quite correct at different points 734 00:29:00,720 --> 00:29:02,399 because I'm moving the mouse, the the 735 00:29:02,399 --> 00:29:05,279 drop down appears. So again, these are 736 00:29:05,279 --> 00:29:07,919 things that I would probably raise in 737 00:29:07,919 --> 00:29:10,320 discussion. It doesn't matter that much. 738 00:29:10,320 --> 00:29:12,880 But the point for this was as I was 739 00:29:12,880 --> 00:29:15,039 doing this, I realized very quickly that 740 00:29:15,039 --> 00:29:19,039 I needed to have a screenshot tool uh to 741 00:29:19,039 --> 00:29:21,520 hand when I'm doing my testing because 742 00:29:21,520 --> 00:29:23,760 there's a lot of visual things that I 743 00:29:23,760 --> 00:29:25,840 would see in passing and I needed to try 744 00:29:25,840 --> 00:29:27,919 and capture them as I went through going 745 00:29:27,919 --> 00:29:30,399 macro. Everything that we do, every 746 00:29:30,399 --> 00:29:32,799 session that we do, every questioning, 747 00:29:32,799 --> 00:29:34,960 every grooming of stories, these are all 748 00:29:34,960 --> 00:29:36,640 exploratory sessions. They're all 749 00:29:36,640 --> 00:29:39,520 observation. We observe the people that 750 00:29:39,520 --> 00:29:41,600 we're working with. Do they really 751 00:29:41,600 --> 00:29:43,039 understand what they're talking about or 752 00:29:43,039 --> 00:29:45,200 are they trying to bluff us in a a 753 00:29:45,200 --> 00:29:46,720 story? This really important when 754 00:29:46,720 --> 00:29:48,080 working with product owners. Do they 755 00:29:48,080 --> 00:29:49,360 really understand what the customer 756 00:29:49,360 --> 00:29:51,360 means or are they bluffing because they 757 00:29:51,360 --> 00:29:52,720 just want to get ahead and then they'll 758 00:29:52,720 --> 00:29:55,440 rely on testers or developers later on 759 00:29:55,440 --> 00:29:58,000 asking more questions that will flush 760 00:29:58,000 --> 00:30:01,279 things out. The whole notion of story 761 00:30:01,279 --> 00:30:03,360 grooming is an exploratory process. We 762 00:30:03,360 --> 00:30:05,840 have to ask questions as we go through. 763 00:30:05,840 --> 00:30:08,559 Now the exploration that we do when 764 00:30:08,559 --> 00:30:10,960 we're working boosts our technical 765 00:30:10,960 --> 00:30:12,320 knowledge of the app because we see 766 00:30:12,320 --> 00:30:14,000 things happening and we go how is it 767 00:30:14,000 --> 00:30:15,840 doing that? Is that CSS? Is that 768 00:30:15,840 --> 00:30:18,320 JavaScript? I don't know. But it's also 769 00:30:18,320 --> 00:30:20,080 constrained by our technical knowledge. 770 00:30:20,080 --> 00:30:21,919 This is why we want the right people 771 00:30:21,919 --> 00:30:24,000 testing the right app. This is why we 772 00:30:24,000 --> 00:30:26,080 want to work on our skills as we're 773 00:30:26,080 --> 00:30:28,640 testing to make sure we understand the 774 00:30:28,640 --> 00:30:31,200 technologies that we're working with. 775 00:30:31,200 --> 00:30:32,640 For instance, with tracks, I have no 776 00:30:32,640 --> 00:30:35,120 idea whether this is using a JavaScript 777 00:30:35,120 --> 00:30:37,679 framework or not. I don't think it is. I 778 00:30:37,679 --> 00:30:40,000 think it's all custom handwritten 779 00:30:40,000 --> 00:30:42,480 JavaScript, but if I was working on the 780 00:30:42,480 --> 00:30:44,320 team, I would know that. If I did more 781 00:30:44,320 --> 00:30:46,080 investigation in the tracks, I would 782 00:30:46,080 --> 00:30:47,840 know that. And if I knew it was a 783 00:30:47,840 --> 00:30:49,279 JavaScript framework, then there'd be 784 00:30:49,279 --> 00:30:51,200 risks associated with that. And there'd 785 00:30:51,200 --> 00:30:52,799 also be things I wouldn't test as much 786 00:30:52,799 --> 00:30:54,159 because they're part of the framework. 787 00:30:54,159 --> 00:30:56,399 If I know it's completely custom, then 788 00:30:56,399 --> 00:30:57,919 I'm going to test it in more detail 789 00:30:57,919 --> 00:30:59,600 because there's more risk. Now, in terms 790 00:30:59,600 --> 00:31:02,240 of time box testing, this is an 791 00:31:02,240 --> 00:31:03,919 interesting thing because some people 792 00:31:03,919 --> 00:31:07,679 like force sessions to be an hour or 793 00:31:07,679 --> 00:31:10,399 half an hour. With some sessions, it's 794 00:31:10,399 --> 00:31:12,480 really important to time box them. If 795 00:31:12,480 --> 00:31:15,039 you have an exploratory session and you 796 00:31:15,039 --> 00:31:18,080 have a a really relatively large charter 797 00:31:18,080 --> 00:31:19,120 that you're going to work through, a 798 00:31:19,120 --> 00:31:21,200 relatively large set of aims, then you 799 00:31:21,200 --> 00:31:22,799 want to time box it so you don't spend 800 00:31:22,799 --> 00:31:24,960 too long. Some of my sessions here are 801 00:31:24,960 --> 00:31:27,039 very small. I'm quite happy to create 802 00:31:27,039 --> 00:31:29,679 small sessions, small tasks and 803 00:31:29,679 --> 00:31:32,320 activities which may not be time boxed. 804 00:31:32,320 --> 00:31:35,120 They may just be tracked. So here you 805 00:31:35,120 --> 00:31:37,679 can see that I'm tracking the time. I'm 806 00:31:37,679 --> 00:31:40,640 not necessarily time boxing them. So 807 00:31:40,640 --> 00:31:44,799 don't feel that you have to pursue a a 808 00:31:44,799 --> 00:31:46,480 sessionbased 809 00:31:46,480 --> 00:31:49,840 time management approach all the time. 810 00:31:49,840 --> 00:31:51,840 What you have to do is take ownership of 811 00:31:51,840 --> 00:31:53,360 your testing and do what is right for 812 00:31:53,360 --> 00:31:55,679 your testing. Splitting it up into small 813 00:31:55,679 --> 00:31:58,240 chunks can be really useful. And I would 814 00:31:58,240 --> 00:32:00,399 previously on some projects create 815 00:32:00,399 --> 00:32:03,120 tasks, put them in Jira to make things 816 00:32:03,120 --> 00:32:05,519 visible, do my testing in very small 817 00:32:05,519 --> 00:32:07,760 chunks, take my testing notes, copy them 818 00:32:07,760 --> 00:32:10,159 into that task again to make it visible, 819 00:32:10,159 --> 00:32:12,480 do a debrief session, then summarize it, 820 00:32:12,480 --> 00:32:15,120 then put those notes on the higher level 821 00:32:15,120 --> 00:32:17,600 story rather than the tasks, my summary 822 00:32:17,600 --> 00:32:20,000 notes. But it varies depending on 823 00:32:20,000 --> 00:32:22,240 project to project, tool to tool, and 824 00:32:22,240 --> 00:32:24,799 what communication we want to do. But it 825 00:32:24,799 --> 00:32:26,159 was obvious to me that I needed a 826 00:32:26,159 --> 00:32:28,320 screenshot tool. I tend to use Snagit. 827 00:32:28,320 --> 00:32:30,240 Um, and I have a tool called Cloud App. 828 00:32:30,240 --> 00:32:32,080 All these animated GIFs you're seeing 829 00:32:32,080 --> 00:32:35,600 here, I created using Cloud App. Um, but 830 00:32:35,600 --> 00:32:37,360 most operating systems have built-in 831 00:32:37,360 --> 00:32:40,080 tools. I'm just so used to using Snagit 832 00:32:40,080 --> 00:32:42,159 and other tools that um I I just 833 00:32:42,159 --> 00:32:43,600 installed those. You don't have to pay 834 00:32:43,600 --> 00:32:45,760 for them. Snaget isn't expensive, but 835 00:32:45,760 --> 00:32:47,600 use whatever is appropriate. But you do 836 00:32:47,600 --> 00:32:49,519 need to have the tools. But I didn't 837 00:32:49,519 --> 00:32:51,440 start with a screenshot tool ready. I 838 00:32:51,440 --> 00:32:53,039 mean, it's always running, but I didn't 839 00:32:53,039 --> 00:32:54,480 start thinking, right, I need to make 840 00:32:54,480 --> 00:32:57,120 sure my screenshot tool is there. But it 841 00:32:57,120 --> 00:33:00,000 became apparent as I was exploring very 842 00:33:00,000 --> 00:33:01,919 early on that I'm going to need certain 843 00:33:01,919 --> 00:33:04,159 types of tools to help me. Now, my note 844 00:33:04,159 --> 00:33:06,399 takingaking is I need to write down what 845 00:33:06,399 --> 00:33:09,200 my aim is. So, in the notes that you 846 00:33:09,200 --> 00:33:12,240 saw, you didn't see an aim section. You 847 00:33:12,240 --> 00:33:13,919 didn't see me write down I'm going to do 848 00:33:13,919 --> 00:33:16,960 a CRUD section, but that's because I was 849 00:33:16,960 --> 00:33:19,039 kind of making notes in the slides and I 850 00:33:19,039 --> 00:33:21,279 put my CRUD health check in there as a 851 00:33:21,279 --> 00:33:23,039 slide before I went and did the testing. 852 00:33:23,039 --> 00:33:25,120 So, I did have those notes in there. 853 00:33:25,120 --> 00:33:26,960 It's just they weren't in my testing 854 00:33:26,960 --> 00:33:28,799 notes. They were in my kind of highlevel 855 00:33:28,799 --> 00:33:32,159 plan, which was the the slides. So, we 856 00:33:32,159 --> 00:33:34,720 do make notes prior to doing things and 857 00:33:34,720 --> 00:33:37,440 we're writing down our aims or our 858 00:33:37,440 --> 00:33:39,360 charters or whatever else we want to 859 00:33:39,360 --> 00:33:41,919 call it. I tend to I tend to think in 860 00:33:41,919 --> 00:33:44,240 terms of aims or objectives. I tend to 861 00:33:44,240 --> 00:33:46,640 communicate in terms of charters and 862 00:33:46,640 --> 00:33:49,120 sessions because that's how people talk. 863 00:33:49,120 --> 00:33:51,600 But in my head, it's much more basic. 864 00:33:51,600 --> 00:33:54,640 It's much more time managementoriented. 865 00:33:54,640 --> 00:33:56,320 And it's what are my aims? What are my 866 00:33:56,320 --> 00:33:57,600 objectives? What do I want to achieve? 867 00:33:57,600 --> 00:33:59,440 What do I want to investigate? What am I 868 00:33:59,440 --> 00:34:01,600 what am I trying to do? And that's my 869 00:34:01,600 --> 00:34:04,000 plan. And what's more important is 870 00:34:04,000 --> 00:34:07,519 making notes during the testing. Right? 871 00:34:07,519 --> 00:34:09,520 This is what differentiates us doing 872 00:34:09,520 --> 00:34:11,040 exploratory testing from scripted 873 00:34:11,040 --> 00:34:15,200 testing. Scripted testing is making a 874 00:34:15,200 --> 00:34:17,520 really detailed plan, right? And the 875 00:34:17,520 --> 00:34:19,839 plan goes down to the stepbystep level. 876 00:34:19,839 --> 00:34:22,320 What you will do, what you will change, 877 00:34:22,320 --> 00:34:24,000 which means that when we actually do our 878 00:34:24,000 --> 00:34:26,560 testing, we end up having to maintain 879 00:34:26,560 --> 00:34:29,359 our plan because our plan is wrong. So 880 00:34:29,359 --> 00:34:31,359 we need to get the script right as we're 881 00:34:31,359 --> 00:34:34,480 testing. With exploratory processes, we 882 00:34:34,480 --> 00:34:35,919 come up with high level aims and 883 00:34:35,919 --> 00:34:37,520 objectives. we go down to the level of 884 00:34:37,520 --> 00:34:40,079 detail that we need to in order to be 885 00:34:40,079 --> 00:34:41,520 clear about what we're doing and to 886 00:34:41,520 --> 00:34:42,800 communicate it and to help people 887 00:34:42,800 --> 00:34:44,000 understand what's going on to 888 00:34:44,000 --> 00:34:46,240 prioritize. But it's really important 889 00:34:46,240 --> 00:34:48,000 that we make more notes during the 890 00:34:48,000 --> 00:34:50,480 actual testing. Now, I think it's really 891 00:34:50,480 --> 00:34:52,720 important to make that those notes when 892 00:34:52,720 --> 00:34:54,879 we're doing scripted testing as well, 893 00:34:54,879 --> 00:34:56,960 but very often the tooling that is in 894 00:34:56,960 --> 00:34:59,520 use doesn't support that. It has like an 895 00:34:59,520 --> 00:35:01,920 actual column where you just type in 896 00:35:01,920 --> 00:35:03,599 what happened, what actually happened. 897 00:35:03,599 --> 00:35:05,520 And very often people just put in a tick 898 00:35:05,520 --> 00:35:08,000 or they go as expected and they don't 899 00:35:08,000 --> 00:35:09,599 write down the actual notes. They don't 900 00:35:09,599 --> 00:35:11,200 write down the data they did. They don't 901 00:35:11,200 --> 00:35:13,839 write down the adjustments. So but with 902 00:35:13,839 --> 00:35:16,720 exploratory testing it is key that we 903 00:35:16,720 --> 00:35:19,520 gather evidence as we are testing and we 904 00:35:19,520 --> 00:35:22,160 make a lot of notes during the testing 905 00:35:22,160 --> 00:35:23,920 that I mean I can't stress that enough. 906 00:35:23,920 --> 00:35:27,280 This is why I spend a lot of time 907 00:35:27,280 --> 00:35:29,680 improving my note takingaking and doing 908 00:35:29,680 --> 00:35:31,520 exercises like this where I try and 909 00:35:31,520 --> 00:35:35,280 improve what I'm doing. Make notes that 910 00:35:35,280 --> 00:35:37,920 are actually reflective of what you're 911 00:35:37,920 --> 00:35:41,040 doing and can stand up as evidence and 912 00:35:41,040 --> 00:35:46,280 can support you reviewing it later on. 913 00:35:54,560 --> 00:35:56,480 Okay, so the next thing I have to do, 914 00:35:56,480 --> 00:35:58,640 I've done my install session. The 915 00:35:58,640 --> 00:36:00,880 application is running. Does that mean 916 00:36:00,880 --> 00:36:03,440 that I'm actually ready to start testing 917 00:36:03,440 --> 00:36:05,440 now? And the answer is, well, no, not 918 00:36:05,440 --> 00:36:07,839 really. Because I don't really know 919 00:36:07,839 --> 00:36:10,560 whether the application has properly 920 00:36:10,560 --> 00:36:12,880 installed. I don't know if it's set up. 921 00:36:12,880 --> 00:36:15,119 One of the issues we have when we're 922 00:36:15,119 --> 00:36:17,599 testing applications is did the install 923 00:36:17,599 --> 00:36:19,760 work? One of the risks we have when we 924 00:36:19,760 --> 00:36:23,280 do testing is if I start testing now and 925 00:36:23,280 --> 00:36:26,079 days from now discover that there was an 926 00:36:26,079 --> 00:36:28,000 issue with the install of this 927 00:36:28,000 --> 00:36:30,000 application in the environment. Does 928 00:36:30,000 --> 00:36:32,000 does that invalidate my testing? I might 929 00:36:32,000 --> 00:36:33,680 be investigating problems that are not 930 00:36:33,680 --> 00:36:37,599 there. So we have to have some mechanism 931 00:36:37,599 --> 00:36:39,839 for telling us whether even though we've 932 00:36:39,839 --> 00:36:41,359 installed it, the application is good 933 00:36:41,359 --> 00:36:44,640 enough. Now hopefully we're using the 934 00:36:44,640 --> 00:36:47,520 same release processes um into the test 935 00:36:47,520 --> 00:36:49,920 environment that we're using in live. Um 936 00:36:49,920 --> 00:36:53,359 if we in our software processes have 937 00:36:53,359 --> 00:36:55,839 different release processes throughout 938 00:36:55,839 --> 00:36:58,160 the uh life cycle, we're we're creating 939 00:36:58,160 --> 00:36:59,520 a problem for ourselves. We're creating 940 00:36:59,520 --> 00:37:02,560 a risk that may bite us later on. In 941 00:37:02,560 --> 00:37:06,160 this instance, I could simply just trust 942 00:37:06,160 --> 00:37:08,560 that the virtual machine has been set up 943 00:37:08,560 --> 00:37:10,160 correctly and is working correctly, but 944 00:37:10,160 --> 00:37:12,240 I don't really want to do that. 945 00:37:12,240 --> 00:37:14,800 So what I have to do is I have to do a 946 00:37:14,800 --> 00:37:18,000 kind of health check to make sure that 947 00:37:18,000 --> 00:37:21,280 works. A health check session. And if 948 00:37:21,280 --> 00:37:24,560 this was a real world system, I would be 949 00:37:24,560 --> 00:37:26,320 expecting some form of automated 950 00:37:26,320 --> 00:37:28,400 execution to help with that because that 951 00:37:28,400 --> 00:37:30,800 can really derisk deployment and and 952 00:37:30,800 --> 00:37:32,720 start up the environment. We automate 953 00:37:32,720 --> 00:37:34,240 the deployment. We automate the creation 954 00:37:34,240 --> 00:37:35,520 of the environment. We automate the 955 00:37:35,520 --> 00:37:38,640 startup. We run some uh checks against 956 00:37:38,640 --> 00:37:40,240 that environment to make sure it's 957 00:37:40,240 --> 00:37:42,560 running. We ping the machine. We have 958 00:37:42,560 --> 00:37:44,079 something that comes in and goes to the 959 00:37:44,079 --> 00:37:45,520 homepage. We have something that logs 960 00:37:45,520 --> 00:37:47,760 in. Make sure we can log in. Maybe 961 00:37:47,760 --> 00:37:49,200 double checks the database. Make sure 962 00:37:49,200 --> 00:37:51,040 all the tables are there. Does some 963 00:37:51,040 --> 00:37:53,760 check sums on whatever we want. Make 964 00:37:53,760 --> 00:37:55,280 sure it's in the right folders. Make 965 00:37:55,280 --> 00:37:57,359 sure that there's log files being 966 00:37:57,359 --> 00:37:59,119 written. It has access to the write the 967 00:37:59,119 --> 00:38:00,880 log files. All those kind of health 968 00:38:00,880 --> 00:38:04,000 checks. It's great when an application 969 00:38:04,000 --> 00:38:06,079 itself has its own dashboard and 970 00:38:06,079 --> 00:38:08,320 everything goes green internally. the 971 00:38:08,320 --> 00:38:10,160 old arcade machines when they were 972 00:38:10,160 --> 00:38:11,839 switched on they would go through a a 973 00:38:11,839 --> 00:38:14,240 selfch check validation process that 974 00:38:14,240 --> 00:38:16,560 really really helps when uh you're 975 00:38:16,560 --> 00:38:18,160 working with systems because you can 976 00:38:18,160 --> 00:38:21,599 automate the does the uh dashboard the 977 00:38:21,599 --> 00:38:23,680 internal dashboard show all green is 978 00:38:23,680 --> 00:38:25,920 that status working so the more that we 979 00:38:25,920 --> 00:38:27,599 can have the application selfch check 980 00:38:27,599 --> 00:38:29,599 the better otherwise we have to come in 981 00:38:29,599 --> 00:38:33,599 and check it ourselves now I don't have 982 00:38:33,599 --> 00:38:35,680 any automated checks on this so I'm 983 00:38:35,680 --> 00:38:37,359 going to have to do a health check 984 00:38:37,359 --> 00:38:38,160 session 985 00:38:38,160 --> 00:38:40,640 Now, I've done my health check session. 986 00:38:40,640 --> 00:38:41,920 So, I'm just going to quickly show you 987 00:38:41,920 --> 00:38:43,280 the notes and then I'm going to 988 00:38:43,280 --> 00:38:45,599 partially repeat this so you see what's 989 00:38:45,599 --> 00:38:47,200 going on. What I didn't want to do in 990 00:38:47,200 --> 00:38:49,359 this course is show the exact testing 991 00:38:49,359 --> 00:38:51,760 process cuz that can be a little bit 992 00:38:51,760 --> 00:38:55,920 boring. Now, these are the actual notes 993 00:38:55,920 --> 00:38:58,240 I made when I did my health check 994 00:38:58,240 --> 00:39:01,040 session. So, you can see that I ran 995 00:39:01,040 --> 00:39:03,280 through a basic CRUD process, right? 996 00:39:03,280 --> 00:39:05,040 That's why I really wanted to make sure 997 00:39:05,040 --> 00:39:08,320 that the application uh could create 998 00:39:08,320 --> 00:39:09,839 entities. I could read them. I could 999 00:39:09,839 --> 00:39:11,280 update them. I could delete them. If I 1000 00:39:11,280 --> 00:39:13,119 could do those basic things, I was 1001 00:39:13,119 --> 00:39:15,839 fairly happy that it was going to work. 1002 00:39:15,839 --> 00:39:17,920 So, I used the front page, which you can 1003 00:39:17,920 --> 00:39:22,320 see here, to create some actions. 1004 00:39:22,320 --> 00:39:24,400 And I almost couldn't help myself 1005 00:39:24,400 --> 00:39:26,480 because I don't know this application. 1006 00:39:26,480 --> 00:39:28,880 I'm learning at the same time. So, it 1007 00:39:28,880 --> 00:39:31,280 wasn't completely a health check. I had 1008 00:39:31,280 --> 00:39:34,079 to make up what my health check was. I 1009 00:39:34,079 --> 00:39:35,920 have no idea what a health check for 1010 00:39:35,920 --> 00:39:37,839 this application is. So I actually made 1011 00:39:37,839 --> 00:39:40,480 it up as I was going along. So I tried 1012 00:39:40,480 --> 00:39:42,480 I'll create an action. So I'll just add 1013 00:39:42,480 --> 00:39:44,079 an action. Then I can see that the 1014 00:39:44,079 --> 00:39:45,760 description can't be blank. But I saw 1015 00:39:45,760 --> 00:39:48,720 that the form didn't uh refresh the 1016 00:39:48,720 --> 00:39:50,720 page. So there must be some XHR 1017 00:39:50,720 --> 00:39:53,280 messages, some XHTTP messages going on 1018 00:39:53,280 --> 00:39:56,000 that I can't see, which hints to me that 1019 00:39:56,000 --> 00:39:57,839 I'm going to need late more tooling 1020 00:39:57,839 --> 00:40:00,560 later on to observe the messages. Um, if 1021 00:40:00,560 --> 00:40:02,720 I I don't know what the the rules are 1022 00:40:02,720 --> 00:40:04,160 for this. So, I'm going to add something 1023 00:40:04,160 --> 00:40:06,320 with a description. I'll add a. And it's 1024 00:40:06,320 --> 00:40:07,839 it's added it. So, I now have something 1025 00:40:07,839 --> 00:40:11,760 with a an A. Uh, and that worked this 1026 00:40:11,760 --> 00:40:13,839 time because there was a context. By 1027 00:40:13,839 --> 00:40:15,520 default, it's putting in one of the 1028 00:40:15,520 --> 00:40:17,119 contexts, 1029 00:40:17,119 --> 00:40:21,359 which is there. So, if I do it with just 1030 00:40:21,359 --> 00:40:23,599 the description, then I'm getting told 1031 00:40:23,599 --> 00:40:25,040 the context can't be blank. So, I'm 1032 00:40:25,040 --> 00:40:27,200 learning the validation rules during 1033 00:40:27,200 --> 00:40:28,640 this health check cuz I don't know how 1034 00:40:28,640 --> 00:40:31,599 this application works. Um, I can read 1035 00:40:31,599 --> 00:40:35,680 the data by jumping between the um tabs 1036 00:40:35,680 --> 00:40:37,920 and seeing that data appears in those 1037 00:40:37,920 --> 00:40:39,359 different tabs. So, I'm doing that. 1038 00:40:39,359 --> 00:40:41,520 That's fine. Um, I can amend these 1039 00:40:41,520 --> 00:40:44,000 things. So, I created a how can I amend 1040 00:40:44,000 --> 00:40:47,119 this? I can amend this by clicking here 1041 00:40:47,119 --> 00:40:49,119 and amending it in situ. I've got the 1042 00:40:49,119 --> 00:40:51,359 ability to create notes. Let's change 1043 00:40:51,359 --> 00:40:54,000 that. And it amends there. And again, 1044 00:40:54,000 --> 00:40:56,160 actions saved here. So, there's XHR 1045 00:40:56,160 --> 00:40:58,319 messages being sent that I'm not 1046 00:40:58,319 --> 00:41:00,079 covering in my testing at this point, 1047 00:41:00,079 --> 00:41:01,839 but I need to at some point in the 1048 00:41:01,839 --> 00:41:03,440 future. 1049 00:41:03,440 --> 00:41:05,920 How do I delete these? 1050 00:41:05,920 --> 00:41:08,240 So, there's a drop down here, and I can 1051 00:41:08,240 --> 00:41:11,040 delete or defer them. Now, I'm looking 1052 00:41:11,040 --> 00:41:12,880 at this, and I'm seeing risk, right? 1053 00:41:12,880 --> 00:41:15,440 This is clearly 1054 00:41:15,440 --> 00:41:17,359 uh there's some JavaScript in here. This 1055 00:41:17,359 --> 00:41:19,839 might be CSS styling on hover. I suspect 1056 00:41:19,839 --> 00:41:21,920 it's not, but I don't know. So there's 1057 00:41:21,920 --> 00:41:23,359 um something I have to investigate 1058 00:41:23,359 --> 00:41:25,680 there. There's potential risk in there. 1059 00:41:25,680 --> 00:41:27,520 Um but I can delete. Let me just delete 1060 00:41:27,520 --> 00:41:29,440 this. Um and that's interesting. So 1061 00:41:29,440 --> 00:41:30,640 we've got an alert. So we've got 1062 00:41:30,640 --> 00:41:32,640 JavaScript in there. This is still here. 1063 00:41:32,640 --> 00:41:34,160 It hasn't gone away, which makes me 1064 00:41:34,160 --> 00:41:36,480 think it's JavaScript rather than CSS. 1065 00:41:36,480 --> 00:41:39,680 Okay. Then it's gone. XHR message. What 1066 00:41:39,680 --> 00:41:41,280 if the messages are not getting through? 1067 00:41:41,280 --> 00:41:43,359 There's test ideas coming out of my head 1068 00:41:43,359 --> 00:41:45,119 as I'm testing even though I'm doing the 1069 00:41:45,119 --> 00:41:47,280 the health check. 1070 00:41:47,280 --> 00:41:49,200 Now, 1071 00:41:49,200 --> 00:41:53,440 what I see that's interesting here is uh 1072 00:41:53,440 --> 00:41:57,280 this moving thing. So, I can move these 1073 00:41:57,280 --> 00:41:59,760 around and and stuff happens, which is 1074 00:41:59,760 --> 00:42:01,440 interesting. But also, look at that. 1075 00:42:01,440 --> 00:42:04,800 When I move this, and I don't know if 1076 00:42:04,800 --> 00:42:06,319 that's cuz the mouse is getting close to 1077 00:42:06,319 --> 00:42:08,240 the drop down or what is happening, but 1078 00:42:08,240 --> 00:42:10,880 I'm pretty sure that shouldn't re 1079 00:42:10,880 --> 00:42:12,240 there's no point to that. There's no 1080 00:42:12,240 --> 00:42:14,640 benefit to me as a user that that 1081 00:42:14,640 --> 00:42:16,560 happens. So, I'm assuming that that's 1082 00:42:16,560 --> 00:42:19,440 actually not a a necessarily a good 1083 00:42:19,440 --> 00:42:20,560 thing. That would be something that I 1084 00:42:20,560 --> 00:42:23,680 would probably want to um report as a 1085 00:42:23,680 --> 00:42:25,119 should this really be doing this 1086 00:42:25,119 --> 00:42:27,040 possibly an issue. So, even when I'm 1087 00:42:27,040 --> 00:42:29,040 just doing my health check, what happens 1088 00:42:29,040 --> 00:42:31,920 if I just drop that? It goes back. So, 1089 00:42:31,920 --> 00:42:34,240 um even when I'm just doing my health 1090 00:42:34,240 --> 00:42:36,880 check, I'm I'm exploring and learning 1091 00:42:36,880 --> 00:42:38,480 about the application. And that might be 1092 00:42:38,480 --> 00:42:39,920 important because it may have changed 1093 00:42:39,920 --> 00:42:41,520 slightly from the last time that I did 1094 00:42:41,520 --> 00:42:44,319 this. So the my initial session took 20 1095 00:42:44,319 --> 00:42:45,839 minutes. I've summarized it there for 1096 00:42:45,839 --> 00:42:48,160 you in whatever that was 10 minutes. But 1097 00:42:48,160 --> 00:42:50,079 the first session, the first real 1098 00:42:50,079 --> 00:42:52,480 session was a health check session and 1099 00:42:52,480 --> 00:42:54,880 it was based around the the the CRUD 1100 00:42:54,880 --> 00:42:56,720 concept, the create, read, update, 1101 00:42:56,720 --> 00:43:00,960 delete. Can I do the basic um steps that 1102 00:43:00,960 --> 00:43:04,240 I need to and the lessons are all 1103 00:43:04,240 --> 00:43:06,640 testing essentially is is exploration 1104 00:43:06,640 --> 00:43:08,880 and observation. And I was doing that 1105 00:43:08,880 --> 00:43:11,200 through the health check. um the 1106 00:43:11,200 --> 00:43:14,960 exploration is boosted by the technical 1107 00:43:14,960 --> 00:43:16,640 knowledge of the app, right? That I 1108 00:43:16,640 --> 00:43:18,560 identified things I need to investigate 1109 00:43:18,560 --> 00:43:21,599 there because I'm seeing stuff happen uh 1110 00:43:21,599 --> 00:43:24,560 that I believe is related to JavaScript. 1111 00:43:24,560 --> 00:43:27,119 I'm seeing stuff that might be CSS 1112 00:43:27,119 --> 00:43:28,960 related. So, I need to learn the 1113 00:43:28,960 --> 00:43:31,200 technology to help me go through. This 1114 00:43:31,200 --> 00:43:34,160 was time boxed. Um I originally gave 1115 00:43:34,160 --> 00:43:36,480 myself half an hour to do it. It took 20 1116 00:43:36,480 --> 00:43:39,920 minutes. I made notes of the times as I 1117 00:43:39,920 --> 00:43:43,280 was going through to track it. I made 1118 00:43:43,280 --> 00:43:45,760 exploratory testing notes as I was going 1119 00:43:45,760 --> 00:43:48,960 through this process. I have my notes 1120 00:43:48,960 --> 00:43:50,800 that I can refer back to and they're 1121 00:43:50,800 --> 00:43:52,880 they're pretty detailed. And the reason 1122 00:43:52,880 --> 00:43:55,280 that I'm going back and redoing the 1123 00:43:55,280 --> 00:43:56,800 recording of the sessions is to check 1124 00:43:56,800 --> 00:43:58,400 how good my notes are. This is 1125 00:43:58,400 --> 00:44:00,800 essentially a review process for my 1126 00:44:00,800 --> 00:44:03,440 notes. I can see that there's I'm 1127 00:44:03,440 --> 00:44:05,280 alerting myself to things that I did not 1128 00:44:05,280 --> 00:44:08,319 do, right? I didn't check in the 1129 00:44:08,319 --> 00:44:11,520 database. I didn't hell check the API. 1130 00:44:11,520 --> 00:44:13,359 All the validation that I'm doing, all 1131 00:44:13,359 --> 00:44:15,839 the observation of did this work is 1132 00:44:15,839 --> 00:44:18,560 being done on the GUI itself. And I've 1133 00:44:18,560 --> 00:44:21,040 made notes on defect. Now, one of the 1134 00:44:21,040 --> 00:44:22,400 things I I noticed in there is that 1135 00:44:22,400 --> 00:44:24,160 sometimes this can be a little bit hard 1136 00:44:24,160 --> 00:44:26,480 to um click if you go the wrong way, 1137 00:44:26,480 --> 00:44:28,000 right? It hovers up. I come over here, 1138 00:44:28,000 --> 00:44:29,520 it goes away. You have to be pretty 1139 00:44:29,520 --> 00:44:31,440 quick to come down to it. So again, 1140 00:44:31,440 --> 00:44:33,839 that's a kind of usability type issue 1141 00:44:33,839 --> 00:44:37,200 that I've mentioned in my notes. Now, my 1142 00:44:37,200 --> 00:44:40,960 plan for this was essentially just a 1143 00:44:40,960 --> 00:44:42,960 crud. Make sure this thing works in the 1144 00:44:42,960 --> 00:44:46,240 health check. But what was important was 1145 00:44:46,240 --> 00:44:49,040 that as I did the testing, I made more 1146 00:44:49,040 --> 00:44:52,400 notes than I did prior. So exploratory 1147 00:44:52,400 --> 00:44:56,960 testing is really trying to emphasize 1148 00:44:56,960 --> 00:44:59,920 the gathering of evidence rather than 1149 00:44:59,920 --> 00:45:02,960 the upfront planning. And it we track 1150 00:45:02,960 --> 00:45:05,200 our notes to help keep us on track. It'd 1151 00:45:05,200 --> 00:45:07,920 be very easy for me to go off track 1152 00:45:07,920 --> 00:45:10,480 during the session and follow all these 1153 00:45:10,480 --> 00:45:12,720 things I don't know and understand. But 1154 00:45:12,720 --> 00:45:14,640 the concept I've got in my head is 1155 00:45:14,640 --> 00:45:17,359 create, read, amend, delete or create, 1156 00:45:17,359 --> 00:45:19,760 read, update, delete. And until I've 1157 00:45:19,760 --> 00:45:21,839 done that, I don't really want to go off 1158 00:45:21,839 --> 00:45:24,960 track too far. And the time boxing can 1159 00:45:24,960 --> 00:45:28,240 also help. The recording that I've made 1160 00:45:28,240 --> 00:45:30,640 here is also evidence. I didn't take 1161 00:45:30,640 --> 00:45:32,319 screenshots as I went through originally 1162 00:45:32,319 --> 00:45:34,160 cuz I knew I was coming back. But some 1163 00:45:34,160 --> 00:45:35,839 of the later sessions, I've been taking 1164 00:45:35,839 --> 00:45:37,599 screenshots as I go through to gather 1165 00:45:37,599 --> 00:45:39,680 evidence as they come through because I 1166 00:45:39,680 --> 00:45:42,240 didn't start with all the tooling 1167 00:45:42,240 --> 00:45:43,839 available. I didn't know there was going 1168 00:45:43,839 --> 00:45:45,680 to be so much on screen that I was going 1169 00:45:45,680 --> 00:45:47,680 to try and capture as I did my 1170 00:45:47,680 --> 00:45:50,480 exploration. So, having done the health 1171 00:45:50,480 --> 00:45:53,359 check session, I know I need to have a 1172 00:45:53,359 --> 00:45:56,240 screenshot tool very handy to support me 1173 00:45:56,240 --> 00:45:58,480 because there's stuff happening in here 1174 00:45:58,480 --> 00:46:03,200 that I may find hard to recreate or I 1175 00:46:03,200 --> 00:46:04,800 may forget about or I may want to 1176 00:46:04,800 --> 00:46:07,359 capture the nuances at the time that I 1177 00:46:07,359 --> 00:46:10,319 see it. So, I know I'm identifying some 1178 00:46:10,319 --> 00:46:12,319 of the tooling that I need as I go 1179 00:46:12,319 --> 00:46:14,720 through very quickly. 1180 00:46:14,720 --> 00:46:16,960 But one of the key essences is to gather 1181 00:46:16,960 --> 00:46:20,160 as much evidence as possible. So I think 1182 00:46:20,160 --> 00:46:21,280 that's probably all I want to say about 1183 00:46:21,280 --> 00:46:23,200 that particular session. So that's a 1184 00:46:23,200 --> 00:46:25,839 health check session to make sure that 1185 00:46:25,839 --> 00:46:28,400 the system is actually suitable for 1186 00:46:28,400 --> 00:46:30,880 testing. And again, automated execution 1187 00:46:30,880 --> 00:46:33,200 might help with that, but we don't have 1188 00:46:33,200 --> 00:46:35,200 any here. So I'm doing this purely 1189 00:46:35,200 --> 00:46:38,200 exploratory. 1190 00:46:46,560 --> 00:46:49,119 So this may be one of the most common 1191 00:46:49,119 --> 00:46:51,280 questions that I'm asked. How do you 1192 00:46:51,280 --> 00:46:52,800 know what to test? How do you choose 1193 00:46:52,800 --> 00:46:54,800 what to test? And there's so many 1194 00:46:54,800 --> 00:46:56,400 different ways. So this particular 1195 00:46:56,400 --> 00:46:58,800 section is split into I think three 1196 00:46:58,800 --> 00:47:01,280 lectures. So this is just a short intro 1197 00:47:01,280 --> 00:47:05,359 into choosing what to test. Um but how 1198 00:47:05,359 --> 00:47:07,119 do I I know what to test? Well, I I do 1199 00:47:07,119 --> 00:47:09,280 kind of planning sessions. I build 1200 00:47:09,280 --> 00:47:12,720 models. I investigate it. But I rely on 1201 00:47:12,720 --> 00:47:15,040 everything that is around me in the 1202 00:47:15,040 --> 00:47:17,680 team. So if we have requirements, I will 1203 00:47:17,680 --> 00:47:19,760 use those. I will use those as a basis. 1204 00:47:19,760 --> 00:47:20,800 Now, one of the things that's 1205 00:47:20,800 --> 00:47:22,880 interesting in kind of ISTQB 1206 00:47:22,880 --> 00:47:24,960 terminology. I think they got one thing 1207 00:47:24,960 --> 00:47:27,839 right where they talk about test basis, 1208 00:47:27,839 --> 00:47:29,520 which I don't think we used to talk 1209 00:47:29,520 --> 00:47:32,400 about um not in in those terms. I used 1210 00:47:32,400 --> 00:47:33,839 to talk about test conditions, not 1211 00:47:33,839 --> 00:47:35,520 necessarily test basis, but I think 1212 00:47:35,520 --> 00:47:39,520 basis is a a useful word. So if we have 1213 00:47:39,520 --> 00:47:41,520 requirements, I'll use those. If we have 1214 00:47:41,520 --> 00:47:44,400 stories, I'll use those. Um, if we have 1215 00:47:44,400 --> 00:47:46,560 defects, change requests, commits, but 1216 00:47:46,560 --> 00:47:49,440 I'll also use the models that I've built 1217 00:47:49,440 --> 00:47:53,119 up over time as I am testing. But since 1218 00:47:53,119 --> 00:47:54,480 at this point, I haven't done any 1219 00:47:54,480 --> 00:47:57,599 testing, right? I'm focused on um the 1220 00:47:57,599 --> 00:47:59,680 requirements, stories, and information 1221 00:47:59,680 --> 00:48:03,119 that we have to hand. and the processes 1222 00:48:03,119 --> 00:48:04,800 we go through in terms of discussing 1223 00:48:04,800 --> 00:48:08,000 stories is really important to identify 1224 00:48:08,000 --> 00:48:10,319 what it is we're actually going to test. 1225 00:48:10,319 --> 00:48:13,280 So for this particular application 1226 00:48:13,280 --> 00:48:15,920 I'm going to test holistically. So I'm 1227 00:48:15,920 --> 00:48:18,000 going to test the system rather than the 1228 00:48:18,000 --> 00:48:21,520 story. um which is basically analogist 1229 00:48:21,520 --> 00:48:24,880 to an agile process where we've tested 1230 00:48:24,880 --> 00:48:26,720 all the stories, we've tested all the 1231 00:48:26,720 --> 00:48:30,720 tasks independently and at some point 1232 00:48:30,720 --> 00:48:32,400 all of those stories exist in the 1233 00:48:32,400 --> 00:48:34,319 application at the same time and we want 1234 00:48:34,319 --> 00:48:37,119 to look for do these impact each other 1235 00:48:37,119 --> 00:48:38,720 and this is very often something that is 1236 00:48:38,720 --> 00:48:40,800 missed out on a lot of projects because 1237 00:48:40,800 --> 00:48:43,599 we work on story story basis but don't 1238 00:48:43,599 --> 00:48:46,319 look at okay holistically how do these 1239 00:48:46,319 --> 00:48:48,559 fit into the system what is the user now 1240 00:48:48,559 --> 00:48:50,640 going to be able to do across these 1241 00:48:50,640 --> 00:48:54,480 flows. Um, so very often just by the 1242 00:48:54,480 --> 00:48:57,520 nature of the design process used on 1243 00:48:57,520 --> 00:49:03,040 agile projects, we miss out a whole type 1244 00:49:03,040 --> 00:49:06,559 of approaching testing holistically. And 1245 00:49:06,559 --> 00:49:08,800 I'm using the phrase holistically simply 1246 00:49:08,800 --> 00:49:10,880 because system testing is vague, 1247 00:49:10,880 --> 00:49:12,319 ambiguous. It could be functional 1248 00:49:12,319 --> 00:49:14,000 testing, could be flow testing. 1249 00:49:14,000 --> 00:49:15,599 Holistically means I'm going to look at 1250 00:49:15,599 --> 00:49:17,280 the entire thing. I could use other 1251 00:49:17,280 --> 00:49:19,280 words, but that's just how I tend to 1252 00:49:19,280 --> 00:49:21,680 communicate that these days. Um, I'm 1253 00:49:21,680 --> 00:49:23,359 going to assume that other testing has 1254 00:49:23,359 --> 00:49:24,960 been performed, right? This is an open 1255 00:49:24,960 --> 00:49:27,200 source application. There is release 1256 00:49:27,200 --> 00:49:29,200 notes. There may be automated tests. I 1257 00:49:29,200 --> 00:49:31,760 don't know. I'm going to assume that. 1258 00:49:31,760 --> 00:49:33,599 So, in order for me to figure out what 1259 00:49:33,599 --> 00:49:35,839 I'm going to test now, I've got my 1260 00:49:35,839 --> 00:49:38,480 overriding approach, which is testing 1261 00:49:38,480 --> 00:49:41,359 holistically, but I need to plan what 1262 00:49:41,359 --> 00:49:42,960 I'm going to do. I need to figure that 1263 00:49:42,960 --> 00:49:47,200 out. So that's what the next session is. 1264 00:49:47,200 --> 00:49:51,400 How do I do the planning? 1265 00:50:01,280 --> 00:50:04,160 So how do we know what to test? We plan. 1266 00:50:04,160 --> 00:50:06,319 And for some people, planning is a dirty 1267 00:50:06,319 --> 00:50:08,559 word because they're on agile. The 1268 00:50:08,559 --> 00:50:10,000 notion that you plan things. We do 1269 00:50:10,000 --> 00:50:12,640 exploratory testing. We learn as we go. 1270 00:50:12,640 --> 00:50:15,280 We don't plan. Everyone plans. Planning 1271 00:50:15,280 --> 00:50:18,160 is key to how we work. It's what how 1272 00:50:18,160 --> 00:50:21,520 it's how we focus. So planning is an 1273 00:50:21,520 --> 00:50:23,599 important stage. And you can see in this 1274 00:50:23,599 --> 00:50:25,680 model here, pretty much before I do 1275 00:50:25,680 --> 00:50:27,599 anything, I'm planning what I'm going to 1276 00:50:27,599 --> 00:50:29,839 do. Even if that's as simple as what is 1277 00:50:29,839 --> 00:50:32,400 my next action? What is the next 1278 00:50:32,400 --> 00:50:34,559 objective I want to achieve? What is the 1279 00:50:34,559 --> 00:50:37,040 next question I want to ask? That's 1280 00:50:37,040 --> 00:50:41,119 planning. And that is a key step, right? 1281 00:50:41,119 --> 00:50:43,040 So 1282 00:50:43,040 --> 00:50:45,440 when I'm planning 1283 00:50:45,440 --> 00:50:48,000 um I treat that as a session, right? So 1284 00:50:48,000 --> 00:50:50,000 very often what happens is when we do 1285 00:50:50,000 --> 00:50:53,119 testing a lot of the work that we do 1286 00:50:53,119 --> 00:50:56,000 doesn't make its way into the tracking 1287 00:50:56,000 --> 00:50:57,920 system. It's not visible to people. They 1288 00:50:57,920 --> 00:51:00,000 don't know what we're doing. So the only 1289 00:51:00,000 --> 00:51:03,920 thing they see are um huge gaps of time, 1290 00:51:03,920 --> 00:51:06,400 then an hour where we did some testing, 1291 00:51:06,400 --> 00:51:09,040 then defects magically appear and 1292 00:51:09,040 --> 00:51:10,960 testers running about asking questions. 1293 00:51:10,960 --> 00:51:13,440 Right? It's really important that if you 1294 00:51:13,440 --> 00:51:15,119 can 1295 00:51:15,119 --> 00:51:16,880 chunk your work as much as possible into 1296 00:51:16,880 --> 00:51:19,119 sessions. I mean, I do this in my daily 1297 00:51:19,119 --> 00:51:21,599 notes regardless of whether um I'm 1298 00:51:21,599 --> 00:51:23,040 putting it into a tracking system or 1299 00:51:23,040 --> 00:51:25,680 not. So, I will have a in my daily notes 1300 00:51:25,680 --> 00:51:27,599 a time stamp what I'm trying to achieve 1301 00:51:27,599 --> 00:51:29,359 at this point in time. At the top of my 1302 00:51:29,359 --> 00:51:30,720 daily notes, there'll be a list that 1303 00:51:30,720 --> 00:51:32,079 says here's what I'm trying to achieve 1304 00:51:32,079 --> 00:51:33,839 today. And I'll pull the objectives out 1305 00:51:33,839 --> 00:51:36,559 of there, then play them, put a time 1306 00:51:36,559 --> 00:51:38,480 stamp in, start making notes as I'm 1307 00:51:38,480 --> 00:51:40,480 going through, record the time, record 1308 00:51:40,480 --> 00:51:44,240 interruptions. Um, and that it's my 1309 00:51:44,240 --> 00:51:47,040 entire life is chunked into sessions, 1310 00:51:47,040 --> 00:51:48,480 but that's cuz I've been looking at 1311 00:51:48,480 --> 00:51:50,079 different time management approaches for 1312 00:51:50,079 --> 00:51:52,400 years. And the the most common time 1313 00:51:52,400 --> 00:51:55,280 management approach is um track your 1314 00:51:55,280 --> 00:51:57,359 highle objectives. Don't spend too much 1315 00:51:57,359 --> 00:51:59,920 time on um doing that because you'll 1316 00:51:59,920 --> 00:52:01,520 spend more time planning than actually 1317 00:52:01,520 --> 00:52:03,760 doing. So plan the highle objectives. 1318 00:52:03,760 --> 00:52:05,359 Then decide to play one of the highle 1319 00:52:05,359 --> 00:52:07,520 objectives. Plan in enough detail so you 1320 00:52:07,520 --> 00:52:08,640 know what you're doing so that you know 1321 00:52:08,640 --> 00:52:09,920 that you're still on track. So you know 1322 00:52:09,920 --> 00:52:12,319 that it's still important. Then track 1323 00:52:12,319 --> 00:52:14,960 what you actually do. Make progress. 1324 00:52:14,960 --> 00:52:17,280 When you finish, debrief, see if there's 1325 00:52:17,280 --> 00:52:18,960 any new information that comes in. Will 1326 00:52:18,960 --> 00:52:20,640 that impact your plan? have you learned 1327 00:52:20,640 --> 00:52:23,040 anything? And that what I just described 1328 00:52:23,040 --> 00:52:25,040 there is a time management approach. 1329 00:52:25,040 --> 00:52:29,040 It's um the essent essence of agile 1330 00:52:29,040 --> 00:52:30,800 story planning, right? All of these 1331 00:52:30,800 --> 00:52:33,359 things are the same. It's sessionbased 1332 00:52:33,359 --> 00:52:36,319 uh test management. Um all of this I 1333 00:52:36,319 --> 00:52:37,680 keep thinking session based time 1334 00:52:37,680 --> 00:52:41,440 management because really um James and 1335 00:52:41,440 --> 00:52:44,480 John took a time management process and 1336 00:52:44,480 --> 00:52:46,400 mapped on the testing because that's 1337 00:52:46,400 --> 00:52:48,400 what they were doing. they were managing 1338 00:52:48,400 --> 00:52:51,119 the time they were spending on testing. 1339 00:52:51,119 --> 00:52:54,240 So that's how it translates. Now the 1340 00:52:54,240 --> 00:52:56,640 planning process itself 1341 00:52:56,640 --> 00:52:59,280 is an exploratory process, right? We're 1342 00:52:59,280 --> 00:53:01,440 investigating what we want to achieve, 1343 00:53:01,440 --> 00:53:02,480 what are the aims, what are the 1344 00:53:02,480 --> 00:53:04,640 questions, um what are the factors 1345 00:53:04,640 --> 00:53:08,319 involved, what are the um risks and it's 1346 00:53:08,319 --> 00:53:11,440 a decision making process. We can track 1347 00:53:11,440 --> 00:53:13,920 it and plan it like any other activity. 1348 00:53:13,920 --> 00:53:15,520 If we know that we're going to have to 1349 00:53:15,520 --> 00:53:17,520 do a whole bunch of testing, we can plan 1350 00:53:17,520 --> 00:53:20,079 in a planning session before that, which 1351 00:53:20,079 --> 00:53:22,880 might only be 20 minutes, and to think 1352 00:53:22,880 --> 00:53:24,400 through what we're going to do before we 1353 00:53:24,400 --> 00:53:27,359 actually do it. It is planning can be 1354 00:53:27,359 --> 00:53:29,839 planned. One of the issues that I think 1355 00:53:29,839 --> 00:53:31,200 people have with planning, they get 1356 00:53:31,200 --> 00:53:33,119 nervous that they've got to plan it in 1357 00:53:33,119 --> 00:53:35,760 real detail, but we don't. We go as 1358 00:53:35,760 --> 00:53:38,480 deeply into it as we currently 1359 00:53:38,480 --> 00:53:40,160 understand based on the models that we 1360 00:53:40,160 --> 00:53:43,680 have in our heads. Sometimes 1361 00:53:43,680 --> 00:53:46,000 the planning process will let us know 1362 00:53:46,000 --> 00:53:47,760 that we don't really understand what 1363 00:53:47,760 --> 00:53:49,920 we're about to do. Therefore, we know 1364 00:53:49,920 --> 00:53:51,760 that it's going to be hard to estimate 1365 00:53:51,760 --> 00:53:54,079 cuz we're working with unknowns. We know 1366 00:53:54,079 --> 00:53:56,079 that we can't plan it in too much detail 1367 00:53:56,079 --> 00:53:58,480 because it's liable to change. We know 1368 00:53:58,480 --> 00:54:00,559 that we're working variable information. 1369 00:54:00,559 --> 00:54:01,839 Therefore, we don't want to write 1370 00:54:01,839 --> 00:54:04,240 everything down to the local steps. But 1371 00:54:04,240 --> 00:54:07,520 if we don't plan, then we may not have 1372 00:54:07,520 --> 00:54:09,359 the resources that we need to hand. We 1373 00:54:09,359 --> 00:54:11,520 may not realize that we need access to 1374 00:54:11,520 --> 00:54:13,520 the database before we do the testing. 1375 00:54:13,520 --> 00:54:16,880 So we may start hit a blocker stop 1376 00:54:16,880 --> 00:54:18,480 because we didn't think it through 1377 00:54:18,480 --> 00:54:20,800 effectively, which is really what 1378 00:54:20,800 --> 00:54:22,720 planning is. But sometimes people don't 1379 00:54:22,720 --> 00:54:24,880 plan because they're agile or because 1380 00:54:24,880 --> 00:54:28,000 they're exploratory or because whatever 1381 00:54:28,000 --> 00:54:31,040 their misunderstanding of a particular 1382 00:54:31,040 --> 00:54:33,760 word is. But if we don't plan, then 1383 00:54:33,760 --> 00:54:35,440 we're losing the opportunity to 1384 00:54:35,440 --> 00:54:38,079 effectively target our testing, to think 1385 00:54:38,079 --> 00:54:40,079 about it, to identify our aims and 1386 00:54:40,079 --> 00:54:42,640 objectives, to really keep on point and 1387 00:54:42,640 --> 00:54:46,319 test as effectively as humanly possible. 1388 00:54:46,319 --> 00:54:48,079 So the results of my planning session, 1389 00:54:48,079 --> 00:54:50,079 and you can see this in the the PDF, and 1390 00:54:50,079 --> 00:54:52,240 it fits onto one slide, which is nice, 1391 00:54:52,240 --> 00:54:53,920 and it only took me 10 minutes, right? 1392 00:54:53,920 --> 00:54:55,680 So 10 minutes for me in the planning 1393 00:54:55,680 --> 00:54:57,920 session was what am I going to use to 1394 00:54:57,920 --> 00:54:59,920 test? So I know that there's release 1395 00:54:59,920 --> 00:55:01,839 notes and should I look at the commits 1396 00:55:01,839 --> 00:55:03,440 or the defects and should I just think 1397 00:55:03,440 --> 00:55:05,200 about the general functionality and I've 1398 00:55:05,200 --> 00:55:06,400 written down the things that I'm 1399 00:55:06,400 --> 00:55:08,319 thinking about. So I made the decision 1400 00:55:08,319 --> 00:55:09,920 to go holistic which I already 1401 00:55:09,920 --> 00:55:11,680 mentioned. I had a look in the release 1402 00:55:11,680 --> 00:55:14,160 notes and saw that there was a statement 1403 00:55:14,160 --> 00:55:15,760 you can now change the state of a 1404 00:55:15,760 --> 00:55:17,920 context to closed and I thought okay 1405 00:55:17,920 --> 00:55:19,599 there's a lot in there. There's a lot of 1406 00:55:19,599 --> 00:55:21,599 ambiguity in there. What what is a 1407 00:55:21,599 --> 00:55:24,240 context? What's a context state? What 1408 00:55:24,240 --> 00:55:25,440 states are there? It doesn't mention 1409 00:55:25,440 --> 00:55:26,960 that in there. How many are there? Is it 1410 00:55:26,960 --> 00:55:29,119 a natural state machine? Are all the 1411 00:55:29,119 --> 00:55:30,640 states valid? Are there transition 1412 00:55:30,640 --> 00:55:32,640 rules? There's a lot of ambiguity in 1413 00:55:32,640 --> 00:55:34,960 there to investigate. And it may be 1414 00:55:34,960 --> 00:55:37,839 clear if someone knows the system well, 1415 00:55:37,839 --> 00:55:40,720 but I don't. So, I can create some 1416 00:55:40,720 --> 00:55:42,720 sessions for investigating this, for 1417 00:55:42,720 --> 00:55:44,240 looking in this. So, I've made a 1418 00:55:44,240 --> 00:55:46,319 decision in 10 minutes. I've focused it 1419 00:55:46,319 --> 00:55:48,880 in. I've rejected certain approaches for 1420 00:55:48,880 --> 00:55:50,960 doing it. So, I know what I'm not 1421 00:55:50,960 --> 00:55:52,640 covering. Like the planning session is 1422 00:55:52,640 --> 00:55:54,240 also about identifying what you're not 1423 00:55:54,240 --> 00:55:56,000 going to do, what the potential risks of 1424 00:55:56,000 --> 00:55:58,799 not doing that are. And I track it. I 1425 00:55:58,799 --> 00:56:00,559 write it down because it's useful to 1426 00:56:00,559 --> 00:56:02,960 revisit and go, "Oh yeah, we kind of 1427 00:56:02,960 --> 00:56:04,720 thought about that but discounted it for 1428 00:56:04,720 --> 00:56:07,440 these reasons." So that's the result of 1429 00:56:07,440 --> 00:56:11,960 my planning session. 1430 00:56:19,920 --> 00:56:21,440 So one of the things I have to do is 1431 00:56:21,440 --> 00:56:23,680 decide what on earth I'm going to test. 1432 00:56:23,680 --> 00:56:25,920 And we have to do this all the time as 1433 00:56:25,920 --> 00:56:27,599 we go through a project. So very often 1434 00:56:27,599 --> 00:56:30,079 we'll have requirements. They're often 1435 00:56:30,079 --> 00:56:32,319 uh driven by stories on an agile project 1436 00:56:32,319 --> 00:56:34,880 or what the person wants to achieve. And 1437 00:56:34,880 --> 00:56:37,200 we might look at when we've got a story 1438 00:56:37,200 --> 00:56:39,440 how this thing has been implemented, 1439 00:56:39,440 --> 00:56:41,359 right? in in order to understand if 1440 00:56:41,359 --> 00:56:43,359 there's any technical risk or functional 1441 00:56:43,359 --> 00:56:45,200 descriptions or take into account the 1442 00:56:45,200 --> 00:56:47,920 unit testing that's been there. Um we 1443 00:56:47,920 --> 00:56:50,079 have to very often when working on agile 1444 00:56:50,079 --> 00:56:52,240 and this is really important is that we 1445 00:56:52,240 --> 00:56:53,599 have to look at the decisions and 1446 00:56:53,599 --> 00:56:55,040 constraints that are made during 1447 00:56:55,040 --> 00:56:57,839 development because sometimes stories 1448 00:56:57,839 --> 00:56:59,839 span multiple sprints. So we've we're 1449 00:56:59,839 --> 00:57:02,160 constrained by the fact that the full 1450 00:57:02,160 --> 00:57:04,640 story is not there. The validation may 1451 00:57:04,640 --> 00:57:06,720 not be fully implemented. the 1452 00:57:06,720 --> 00:57:08,319 integration with other parts of the 1453 00:57:08,319 --> 00:57:10,079 system may not be fully there. So the 1454 00:57:10,079 --> 00:57:12,480 testing that we do in sprint has to 1455 00:57:12,480 --> 00:57:15,520 adjust to that and may not really be of 1456 00:57:15,520 --> 00:57:19,520 as much value as we hope. Um and it can 1457 00:57:19,520 --> 00:57:22,000 make testing look like it takes a long 1458 00:57:22,000 --> 00:57:24,000 time because we'll be testing the story 1459 00:57:24,000 --> 00:57:25,839 at each point through the sprint. But 1460 00:57:25,839 --> 00:57:27,280 when we get to the very last sprint when 1461 00:57:27,280 --> 00:57:29,520 the full story comes together, people 1462 00:57:29,520 --> 00:57:31,760 are expecting it to take less time 1463 00:57:31,760 --> 00:57:34,160 because it's a tiny little change. But 1464 00:57:34,160 --> 00:57:36,160 now the full story is there. But we look 1465 00:57:36,160 --> 00:57:38,079 at it and go well now the full story is 1466 00:57:38,079 --> 00:57:40,400 there. So now I have to take in account 1467 00:57:40,400 --> 00:57:43,200 all the the things that we have built in 1468 00:57:43,200 --> 00:57:44,720 all the validation rules. How does this 1469 00:57:44,720 --> 00:57:47,119 integrate with the the the system and go 1470 00:57:47,119 --> 00:57:50,400 beyond the story acceptance criteria. So 1471 00:57:50,400 --> 00:57:53,839 this can really impact our testing. I 1472 00:57:53,839 --> 00:57:55,520 tend to think of it in terms of we've 1473 00:57:55,520 --> 00:57:58,160 got the inprint work, the story work and 1474 00:57:58,160 --> 00:58:00,160 then system testing. And by system 1475 00:58:00,160 --> 00:58:03,040 testing I mean the system as a whole 1476 00:58:03,040 --> 00:58:05,920 like stories in combination functional 1477 00:58:05,920 --> 00:58:08,640 flows throughout the system that span 1478 00:58:08,640 --> 00:58:11,440 multiple stories going beyond the 1479 00:58:11,440 --> 00:58:13,359 acceptance criteria that's listed in the 1480 00:58:13,359 --> 00:58:15,200 story. And this is the part that's often 1481 00:58:15,200 --> 00:58:18,160 neglected on agile projects and it's how 1482 00:58:18,160 --> 00:58:19,760 things slip through because very often 1483 00:58:19,760 --> 00:58:22,480 we're so focused on the acceptance 1484 00:58:22,480 --> 00:58:25,760 criteria and the um automated assertion 1485 00:58:25,760 --> 00:58:28,880 of the acceptance criteria. But for me 1486 00:58:28,880 --> 00:58:30,400 and because I have to decide what I'm 1487 00:58:30,400 --> 00:58:32,640 doing and I'm not working on the project 1488 00:58:32,640 --> 00:58:36,799 here on an agile or sprint basis, I'm 1489 00:58:36,799 --> 00:58:40,559 almost working on the go beyond the 1490 00:58:40,559 --> 00:58:43,760 story basis, right? Because I have to 1491 00:58:43,760 --> 00:58:46,000 figure out well how can I do something 1492 00:58:46,000 --> 00:58:49,680 as an exercise here that can add value. 1493 00:58:49,680 --> 00:58:53,200 So I assume that the team working on 1494 00:58:53,200 --> 00:58:55,280 tracks have tested it. They've done unit 1495 00:58:55,280 --> 00:58:56,960 testing. they've checked out their 1496 00:58:56,960 --> 00:58:59,760 stories. What I do then is go right 1497 00:58:59,760 --> 00:59:02,160 where can I add value in that process 1498 00:59:02,160 --> 00:59:04,559 and it's by looking at the project 1499 00:59:04,559 --> 00:59:07,760 holistically looking at going beyond 1500 00:59:07,760 --> 00:59:10,799 just the functionality in isolation. So 1501 00:59:10,799 --> 00:59:12,480 where can I find out what is important 1502 00:59:12,480 --> 00:59:14,720 to test? So I've got the release notes, 1503 00:59:14,720 --> 00:59:17,200 right? This is the most obvious place to 1504 00:59:17,200 --> 00:59:20,960 look for um items to test. I could go 1505 00:59:20,960 --> 00:59:23,280 through the source code. I could look at 1506 00:59:23,280 --> 00:59:26,240 all the um changes that have made, the 1507 00:59:26,240 --> 00:59:27,839 check-ins that have been done. I could 1508 00:59:27,839 --> 00:59:29,520 look at all the bug fixes and retest 1509 00:59:29,520 --> 00:59:31,920 those. But I'm looking at this in terms 1510 00:59:31,920 --> 00:59:33,440 of how can I add value. So I have to go 1511 00:59:33,440 --> 00:59:35,119 beyond what I believe the team has 1512 00:59:35,119 --> 00:59:38,640 already done. So I'm going to pick one 1513 00:59:38,640 --> 00:59:42,000 of these uh items which is you can now 1514 00:59:42,000 --> 00:59:44,720 change the state of a context to closed. 1515 00:59:44,720 --> 00:59:46,000 I'm just going to pick that one. I could 1516 00:59:46,000 --> 00:59:47,440 pick any of these. I could pick 1517 00:59:47,440 --> 00:59:49,599 something completely random. But this to 1518 00:59:49,599 --> 00:59:52,079 me it is interesting, right? Because 1519 00:59:52,079 --> 00:59:54,720 we're talking about state. So as soon as 1520 00:59:54,720 --> 00:59:56,559 we have state, I'm thinking of a state 1521 00:59:56,559 --> 00:59:58,079 machine. I'm wondering if there's 1522 00:59:58,079 --> 01:00:01,359 constraints. I don't know um all the 1523 01:00:01,359 --> 01:00:03,839 states that it can be in. I don't know 1524 01:00:03,839 --> 01:00:07,200 what else impacts the context state. I 1525 01:00:07,200 --> 01:00:08,559 don't know what other entities are 1526 01:00:08,559 --> 01:00:11,440 related to that because very often with 1527 01:00:11,440 --> 01:00:13,440 state machines, state machines are 1528 01:00:13,440 --> 01:00:15,040 analogist to entity life history 1529 01:00:15,040 --> 01:00:17,920 diagrams from the olden days. An entity 1530 01:00:17,920 --> 01:00:19,200 life history diagram is kind of a 1531 01:00:19,200 --> 01:00:21,520 hierarchy of states that the entity can 1532 01:00:21,520 --> 01:00:24,480 go through. Entities um relate to each 1533 01:00:24,480 --> 01:00:26,480 other. So entities in different states 1534 01:00:26,480 --> 01:00:28,559 may relate in different ways. So I have 1535 01:00:28,559 --> 01:00:30,160 to look at just not just not just the 1536 01:00:30,160 --> 01:00:33,520 state of a context but what else the 1537 01:00:33,520 --> 01:00:37,119 context relates to to see if the state 1538 01:00:37,119 --> 01:00:39,359 um impacts that. So I think that's even 1539 01:00:39,359 --> 01:00:41,359 though that's a very subtle and small 1540 01:00:41,359 --> 01:00:44,400 thing, I think there's a rich vein in 1541 01:00:44,400 --> 01:00:48,160 there to tap and to to explore um in 1542 01:00:48,160 --> 01:00:49,680 short short bursts because that's what 1543 01:00:49,680 --> 01:00:51,280 this of course is short bursts of 1544 01:00:51,280 --> 01:00:54,400 testing. So I'm going to focus in on 1545 01:00:54,400 --> 01:00:56,960 that and then I'm starting to think well 1546 01:00:56,960 --> 01:01:00,240 what is my uh what are my questions 1547 01:01:00,240 --> 01:01:01,599 around that? What I mean I don't know 1548 01:01:01,599 --> 01:01:03,200 what context is. It's been so long since 1549 01:01:03,200 --> 01:01:04,880 I used tracks I've forgotten. I don't 1550 01:01:04,880 --> 01:01:06,160 know what a context is. I don't know 1551 01:01:06,160 --> 01:01:07,839 what the context state is. I don't know 1552 01:01:07,839 --> 01:01:09,280 how many states there are. I don't know 1553 01:01:09,280 --> 01:01:10,799 if it's a state machine. I don't know if 1554 01:01:10,799 --> 01:01:13,440 all states are valid as each other. I 1555 01:01:13,440 --> 01:01:15,200 don't know if there's transition rules 1556 01:01:15,200 --> 01:01:17,119 or constraints between. So, I'm going to 1557 01:01:17,119 --> 01:01:21,119 have to find that out. But this video is 1558 01:01:21,119 --> 01:01:25,040 a representation of a um planning 1559 01:01:25,040 --> 01:01:27,119 session, a decision session, right? 1560 01:01:27,119 --> 01:01:29,359 Because we have to spend time planning 1561 01:01:29,359 --> 01:01:32,400 our work and making decisions about what 1562 01:01:32,400 --> 01:01:34,720 we're going to do next. And we can track 1563 01:01:34,720 --> 01:01:37,040 that as sessions. They're perfectly 1564 01:01:37,040 --> 01:01:38,720 valid things to track as sessions 1565 01:01:38,720 --> 01:01:41,520 because that is an exploratory process. 1566 01:01:41,520 --> 01:01:45,040 Thinking through what I'm going to test 1567 01:01:45,040 --> 01:01:47,520 is an exploratory process because I 1568 01:01:47,520 --> 01:01:49,839 considered multiple factors. Um I 1569 01:01:49,839 --> 01:01:51,040 considered whether I was going to read 1570 01:01:51,040 --> 01:01:54,240 the manual, look at the the code. Um I 1571 01:01:54,240 --> 01:01:56,000 thought this through to see if it's rich 1572 01:01:56,000 --> 01:01:58,079 enough. That was a session. That was a 1573 01:01:58,079 --> 01:02:01,280 timebound session. took me I think 10 15 1574 01:02:01,280 --> 01:02:03,040 minutes to try and figure out what I'm 1575 01:02:03,040 --> 01:02:08,359 going to test in a planning session. 1576 01:02:16,799 --> 01:02:18,559 So, I'm going to go macro to this to see 1577 01:02:18,559 --> 01:02:21,520 what I learned, which is a 10minute 1578 01:02:21,520 --> 01:02:24,400 planning session. And I've spent four 1579 01:02:24,400 --> 01:02:26,720 videos on this, right? Because this is 1580 01:02:26,720 --> 01:02:30,880 so absolutely important to what we do 1581 01:02:30,880 --> 01:02:33,280 prior to doing anything. Plan it, think 1582 01:02:33,280 --> 01:02:35,200 about it, get your head sorted, get your 1583 01:02:35,200 --> 01:02:38,160 aims and objectives, figure this out. 1584 01:02:38,160 --> 01:02:40,160 So, 1585 01:02:40,160 --> 01:02:41,920 when we're looking at like, what do I 1586 01:02:41,920 --> 01:02:45,200 actually use to test? 1587 01:02:45,200 --> 01:02:48,960 Um we often have stories in agile 1588 01:02:48,960 --> 01:02:51,280 projects and very often people get hung 1589 01:02:51,280 --> 01:02:54,079 up on well they must be given when then 1590 01:02:54,079 --> 01:02:58,079 as a user I want to blahy blah right we 1591 01:02:58,079 --> 01:03:00,000 must state why someone wants very often 1592 01:03:00,000 --> 01:03:02,160 people are inflexible in their language 1593 01:03:02,160 --> 01:03:05,760 and that I think is an issue but that 1594 01:03:05,760 --> 01:03:07,680 just means that there's more ambiguity 1595 01:03:07,680 --> 01:03:09,040 which means there's more scope for 1596 01:03:09,040 --> 01:03:11,520 questioning now when I'm working on 1597 01:03:11,520 --> 01:03:13,920 agile projects and I ask questions I 1598 01:03:13,920 --> 01:03:15,280 will write them down I will write down 1599 01:03:15,280 --> 01:03:17,839 the answers. Um, I will put those 1600 01:03:17,839 --> 01:03:20,319 written notes possibly in the tracking 1601 01:03:20,319 --> 01:03:22,640 system. If it's feasible to make them 1602 01:03:22,640 --> 01:03:24,960 public and it's politically acceptable 1603 01:03:24,960 --> 01:03:26,640 to make them public, I will make my 1604 01:03:26,640 --> 01:03:28,799 notes public. Otherwise, they'll stay in 1605 01:03:28,799 --> 01:03:30,240 my notes so that I know what we 1606 01:03:30,240 --> 01:03:32,960 discussed and what time with whom, so 1607 01:03:32,960 --> 01:03:34,480 that if there's any issues, we can come 1608 01:03:34,480 --> 01:03:36,000 back and go, well, on this day we said 1609 01:03:36,000 --> 01:03:38,640 we weren't going to do this, so we said 1610 01:03:38,640 --> 01:03:40,240 that this was out of scope in this 1611 01:03:40,240 --> 01:03:43,280 story, so we're not testing that. But 1612 01:03:43,280 --> 01:03:46,720 it's important often to know what drives 1613 01:03:46,720 --> 01:03:48,799 um the requirement because then we can 1614 01:03:48,799 --> 01:03:50,160 test around it because one of the key 1615 01:03:50,160 --> 01:03:51,520 things we want to be able to do is test 1616 01:03:51,520 --> 01:03:54,400 around these stories to go holistic to 1617 01:03:54,400 --> 01:03:56,720 the stories and not just focus on the 1618 01:03:56,720 --> 01:03:59,119 actual details. And one of the things 1619 01:03:59,119 --> 01:04:00,720 that people very often miss out is they 1620 01:04:00,720 --> 01:04:02,480 only look at the acceptance criteria. 1621 01:04:02,480 --> 01:04:04,319 They don't look at how has it been 1622 01:04:04,319 --> 01:04:06,640 built. What is the how do people 1623 01:04:06,640 --> 01:04:08,400 describe that? Where are the risk areas? 1624 01:04:08,400 --> 01:04:11,039 Are there new new technologies in here? 1625 01:04:11,039 --> 01:04:12,960 Have we just adopted and brought in a 1626 01:04:12,960 --> 01:04:14,880 new library into the the system? All of 1627 01:04:14,880 --> 01:04:16,880 these things can be risk which we can 1628 01:04:16,880 --> 01:04:19,520 look at in terms of testing. We can also 1629 01:04:19,520 --> 01:04:21,680 use like decisions and constraints 1630 01:04:21,680 --> 01:04:24,720 during the development to force us to 1631 01:04:24,720 --> 01:04:26,319 test differently cuz sometimes we'll 1632 01:04:26,319 --> 01:04:30,160 have stories and they may not have 1633 01:04:30,160 --> 01:04:32,960 validation yet. We've decided not to put 1634 01:04:32,960 --> 01:04:36,319 any uh validation in place. So there's 1635 01:04:36,319 --> 01:04:37,839 no error handling. So we won't test 1636 01:04:37,839 --> 01:04:40,559 that. But very often that then drops out 1637 01:04:40,559 --> 01:04:42,240 and it just magically appears at the 1638 01:04:42,240 --> 01:04:44,000 end. But we then have a whole bunch more 1639 01:04:44,000 --> 01:04:46,960 testing to do. Priorities and agreed 1640 01:04:46,960 --> 01:04:48,319 risk areas, they're important for 1641 01:04:48,319 --> 01:04:50,559 driving it because we do have to agree 1642 01:04:50,559 --> 01:04:52,559 where our focus is going to be when we 1643 01:04:52,559 --> 01:04:54,160 test. We don't just make this up. We 1644 01:04:54,160 --> 01:04:56,079 discuss it and agree as a project where 1645 01:04:56,079 --> 01:04:58,000 our focus and priority is going to be. 1646 01:04:58,000 --> 01:05:00,319 And the more we do that, the more we are 1647 01:05:00,319 --> 01:05:02,480 sharing responsibility for testing 1648 01:05:02,480 --> 01:05:04,079 rather than taking it all on board 1649 01:05:04,079 --> 01:05:05,839 ourselves. If we take on board all the 1650 01:05:05,839 --> 01:05:08,720 decision-m about testing and we we skip 1651 01:05:08,720 --> 01:05:11,200 an area and it's perfectly valid for 1652 01:05:11,200 --> 01:05:12,799 people to come going why did you not 1653 01:05:12,799 --> 01:05:16,319 test this? If you share that knowledge, 1654 01:05:16,319 --> 01:05:18,720 prioritization, agreed risk areas, 1655 01:05:18,720 --> 01:05:20,960 thought processes, more people are 1656 01:05:20,960 --> 01:05:24,160 involved and you you get less of that 1657 01:05:24,160 --> 01:05:26,640 blame game. If you do take 1658 01:05:26,640 --> 01:05:29,520 responsibility for it, then you have to 1659 01:05:29,520 --> 01:05:31,599 cover yourself by writing down the 1660 01:05:31,599 --> 01:05:33,440 decisions that were made, the reasons 1661 01:05:33,440 --> 01:05:36,000 you made those choices, what impacted 1662 01:05:36,000 --> 01:05:38,240 it, why you decided not to do something 1663 01:05:38,240 --> 01:05:41,039 because person X said this in meeting, 1664 01:05:41,039 --> 01:05:43,599 why make those things written down so 1665 01:05:43,599 --> 01:05:45,440 that you you know why you made 1666 01:05:45,440 --> 01:05:47,039 particular decisions. We should also 1667 01:05:47,039 --> 01:05:50,400 look at some of the ways that we figure 1668 01:05:50,400 --> 01:05:52,400 this stuff out in agile processes 1669 01:05:52,400 --> 01:05:54,799 because most people will be doing agile. 1670 01:05:54,799 --> 01:05:56,799 So very often in agile we've got the 1671 01:05:56,799 --> 01:06:00,160 inprint testing. So what we're often 1672 01:06:00,160 --> 01:06:02,559 looking at there is we're constrained to 1673 01:06:02,559 --> 01:06:04,880 the work done scope right we won't do 1674 01:06:04,880 --> 01:06:06,880 error handling testing yet. There's no 1675 01:06:06,880 --> 01:06:09,119 essence no focus on security. We're not 1676 01:06:09,119 --> 01:06:10,880 looking at performance yet. So we're 1677 01:06:10,880 --> 01:06:13,680 artificially constraining what we might 1678 01:06:13,680 --> 01:06:16,559 think about as we test. We do need to 1679 01:06:16,559 --> 01:06:19,520 track these emissions as coverage gaps 1680 01:06:19,520 --> 01:06:22,160 for later testing. Otherwise, it can 1681 01:06:22,160 --> 01:06:25,039 slip away, right? Or we forgot to do 1682 01:06:25,039 --> 01:06:26,400 performance testing because no one 1683 01:06:26,400 --> 01:06:28,319 mentioned it in the acceptance criteria 1684 01:06:28,319 --> 01:06:30,160 when we played the last story in this 1685 01:06:30,160 --> 01:06:32,240 functionality in this feature and we 1686 01:06:32,240 --> 01:06:33,440 said, "Well, what about performance 1687 01:06:33,440 --> 01:06:34,799 testing?" They said, "Well, it's not 1688 01:06:34,799 --> 01:06:36,559 going live yet, so we won't do that." 1689 01:06:36,559 --> 01:06:38,720 Then when it goes live, we forgot about 1690 01:06:38,720 --> 01:06:41,359 it, right? We have to track these things 1691 01:06:41,359 --> 01:06:43,680 and think them through. And where 1692 01:06:43,680 --> 01:06:45,359 possible, do them in sprints. But 1693 01:06:45,359 --> 01:06:47,280 sometimes we're going to be constrained. 1694 01:06:47,280 --> 01:06:49,200 And we're very often testing bits of 1695 01:06:49,200 --> 01:06:51,839 stories for some reason. Um, a lot of 1696 01:06:51,839 --> 01:06:54,480 agile projects don't need to be agile 1697 01:06:54,480 --> 01:06:58,079 projects, right? They because we're not 1698 01:06:58,079 --> 01:07:00,960 delivering value to the user at the end 1699 01:07:00,960 --> 01:07:04,880 of each sprint. So, a more canbanlike 1700 01:07:04,880 --> 01:07:08,160 approach where the the stories take as 1701 01:07:08,160 --> 01:07:10,960 long as they take until they're ready 1702 01:07:10,960 --> 01:07:12,880 can reduce that. But very often we'll 1703 01:07:12,880 --> 01:07:14,960 take features and split them into 1704 01:07:14,960 --> 01:07:17,119 stories in order to fit them into 1705 01:07:17,119 --> 01:07:19,520 sprints where we release something at 1706 01:07:19,520 --> 01:07:20,880 the end of the sprint but only into the 1707 01:07:20,880 --> 01:07:22,400 test environment and not to the user. So 1708 01:07:22,400 --> 01:07:24,640 we kind of have half done work but it 1709 01:07:24,640 --> 01:07:26,559 looks like completed work because it was 1710 01:07:26,559 --> 01:07:29,200 stories. So we we very often have the 1711 01:07:29,200 --> 01:07:31,440 the notion that in sprint testing is 1712 01:07:31,440 --> 01:07:34,000 constrained and there will be gaps. So 1713 01:07:34,000 --> 01:07:36,559 we have to figure out a way of tracking 1714 01:07:36,559 --> 01:07:39,200 that either on wiki pages, but you need 1715 01:07:39,200 --> 01:07:40,880 something that's going holistically 1716 01:07:40,880 --> 01:07:43,680 outside the the scope of the normal 1717 01:07:43,680 --> 01:07:47,039 planning process. Stories hopefully are 1718 01:07:47,039 --> 01:07:48,559 complete chunks of work, but sometimes 1719 01:07:48,559 --> 01:07:50,720 they're not. Sometimes stories span 1720 01:07:50,720 --> 01:07:53,200 sprints because they're not finished. So 1721 01:07:53,200 --> 01:07:55,760 we have work ruling over um that can be 1722 01:07:55,760 --> 01:07:58,160 an issue if we are going live with a 1723 01:07:58,160 --> 01:08:00,720 particular uh set of stories or feature 1724 01:08:00,720 --> 01:08:03,359 set because we then have to test it in a 1725 01:08:03,359 --> 01:08:05,520 state that it's not designed to go live 1726 01:08:05,520 --> 01:08:07,200 with to make sure it works which takes 1727 01:08:07,200 --> 01:08:09,680 time away from other activities we could 1728 01:08:09,680 --> 01:08:11,359 be doing in sprint. To be honest, a lot 1729 01:08:11,359 --> 01:08:13,280 of agile planning and processes are a 1730 01:08:13,280 --> 01:08:15,680 complete mess. But we have to figure out 1731 01:08:15,680 --> 01:08:18,319 how to handle that in our test approach 1732 01:08:18,319 --> 01:08:21,679 to help mitigate the risk of omission or 1733 01:08:21,679 --> 01:08:23,920 commission like um missing something out 1734 01:08:23,920 --> 01:08:25,120 or doing something that we're not 1735 01:08:25,120 --> 01:08:27,839 supposed to. That that making sure that 1736 01:08:27,839 --> 01:08:29,920 feature toggles work and there can be 1737 01:08:29,920 --> 01:08:31,839 huge combinatorial explosion when we do 1738 01:08:31,839 --> 01:08:34,080 that when we choose to go live with um 1739 01:08:34,080 --> 01:08:35,759 half-finish work that was never designed 1740 01:08:35,759 --> 01:08:38,000 to be there and very often it's right at 1741 01:08:38,000 --> 01:08:39,759 the end where we have to work squeezed 1742 01:08:39,759 --> 01:08:42,080 in. We need to go beyond acceptance 1743 01:08:42,080 --> 01:08:45,600 criteria. So acceptance criteria is a 1744 01:08:45,600 --> 01:08:47,359 start point. We need to ask more 1745 01:08:47,359 --> 01:08:50,719 questions. We need to quiz in the 1746 01:08:50,719 --> 01:08:53,520 ambiguity. What's a good approach for 1747 01:08:53,520 --> 01:08:55,440 acceptance criteria is having automated 1748 01:08:55,440 --> 01:08:57,040 execution because acceptance criteria is 1749 01:08:57,040 --> 01:08:58,960 very often it must do this when it's 1750 01:08:58,960 --> 01:09:01,359 when we say this it must respond in this 1751 01:09:01,359 --> 01:09:03,359 particular way. They can be very simple 1752 01:09:03,359 --> 01:09:05,040 assertions that we write in automated 1753 01:09:05,040 --> 01:09:08,960 execution, which is very often why we in 1754 01:09:08,960 --> 01:09:11,199 sprints automate as much as possible, 1755 01:09:11,199 --> 01:09:12,719 but we're really only automating the 1756 01:09:12,719 --> 01:09:15,440 acceptance criteria. We need to go 1757 01:09:15,440 --> 01:09:18,400 beyond that with our testing. And if we 1758 01:09:18,400 --> 01:09:21,040 have automated the acceptance criteria, 1759 01:09:21,040 --> 01:09:23,199 hopefully we've automated in such a way 1760 01:09:23,199 --> 01:09:25,120 that we can reuse the abstractions that 1761 01:09:25,120 --> 01:09:27,120 we created for that to support us in our 1762 01:09:27,120 --> 01:09:29,279 exploratory testing to do massive data 1763 01:09:29,279 --> 01:09:30,880 coverage. If we can do that, that's 1764 01:09:30,880 --> 01:09:32,880 great. a lot of random data thrown in 1765 01:09:32,880 --> 01:09:35,600 temporary tactical automated execution 1766 01:09:35,600 --> 01:09:38,319 to help us cover the acceptance criteria 1767 01:09:38,319 --> 01:09:40,719 more detail whilst allowing us to do 1768 01:09:40,719 --> 01:09:42,719 exploratory testing somewhere else. We 1769 01:09:42,719 --> 01:09:44,239 have the issue that stories are often 1770 01:09:44,239 --> 01:09:47,359 tested in isolation in small chunks. 1771 01:09:47,359 --> 01:09:49,920 Sometimes we're working on a branch 1772 01:09:49,920 --> 01:09:52,239 where the that story exists and we test 1773 01:09:52,239 --> 01:09:54,400 it there. But then when we merge it in, 1774 01:09:54,400 --> 01:09:56,560 we rely on automated execution in the 1775 01:09:56,560 --> 01:09:58,320 continuous integration process, checking 1776 01:09:58,320 --> 01:10:01,280 the merge. That's probably not enough. 1777 01:10:01,280 --> 01:10:04,719 But agile processes can be hard to test 1778 01:10:04,719 --> 01:10:06,960 in simply because of that small focused 1779 01:10:06,960 --> 01:10:09,280 chunk aspect. 1780 01:10:09,280 --> 01:10:11,440 Now we have the issue of system testing 1781 01:10:11,440 --> 01:10:16,000 is a very vague term and after a merge 1782 01:10:16,000 --> 01:10:18,239 we probably want to do system testing 1783 01:10:18,239 --> 01:10:20,960 where we're testing the integration of 1784 01:10:20,960 --> 01:10:22,719 all these stories in combination. We're 1785 01:10:22,719 --> 01:10:24,560 looking at how people might use this in 1786 01:10:24,560 --> 01:10:26,960 live. We're looking for API calls that 1787 01:10:26,960 --> 01:10:28,800 then show up in a story but that wasn't 1788 01:10:28,800 --> 01:10:31,199 mentioned in the acceptance criteria. Um 1789 01:10:31,199 --> 01:10:34,239 we want to look at the using the stories 1790 01:10:34,239 --> 01:10:36,000 in different orders because certain 1791 01:10:36,000 --> 01:10:38,480 users have different needs. 1792 01:10:38,480 --> 01:10:41,199 This is one of the key areas that is 1793 01:10:41,199 --> 01:10:44,719 missed out in agile projects going 1794 01:10:44,719 --> 01:10:47,440 beyond the acceptance criteria and the 1795 01:10:47,440 --> 01:10:50,480 stories. So I mean this is why I focused 1796 01:10:50,480 --> 01:10:52,719 on that in tracks which is very often 1797 01:10:52,719 --> 01:10:55,280 how I'm able to find defects right 1798 01:10:55,280 --> 01:10:57,360 because I'm going beyond what other 1799 01:10:57,360 --> 01:11:00,400 people are doing. So with tracks um the 1800 01:11:00,400 --> 01:11:01,920 release notes were there I was able to 1801 01:11:01,920 --> 01:11:05,199 review them. I read this, I focused and 1802 01:11:05,199 --> 01:11:07,600 I zoomed in on something. And I was kind 1803 01:11:07,600 --> 01:11:09,520 of lucky that that thing that I zoomed 1804 01:11:09,520 --> 01:11:12,159 in actually had some issues and problems 1805 01:11:12,159 --> 01:11:15,040 which made the testing even more 1806 01:11:15,040 --> 01:11:18,000 valuable than just as a process. When 1807 01:11:18,000 --> 01:11:20,719 I'm doing this, and I do this on actual 1808 01:11:20,719 --> 01:11:22,320 projects, right? I assume that people 1809 01:11:22,320 --> 01:11:23,920 have done story testing, they've done 1810 01:11:23,920 --> 01:11:25,520 acceptance criteria, that all the 1811 01:11:25,520 --> 01:11:27,199 stories are complete, that people have 1812 01:11:27,199 --> 01:11:29,440 done the reviews. So, I'm not going to 1813 01:11:29,440 --> 01:11:32,000 focus in on those aspects. I'm not going 1814 01:11:32,000 --> 01:11:33,679 to review the automated execution 1815 01:11:33,679 --> 01:11:36,080 because there's a whole bunch of risk of 1816 01:11:36,080 --> 01:11:39,360 duplicated effort and scope if I if I 1817 01:11:39,360 --> 01:11:41,440 don't do that. But that's fine, right? 1818 01:11:41,440 --> 01:11:42,880 Because I assume that most of the time 1819 01:11:42,880 --> 01:11:44,400 when people do automate execution, they 1820 01:11:44,400 --> 01:11:46,560 work in tiny chunks rather than the kind 1821 01:11:46,560 --> 01:11:48,480 of testing that I'm going to do. One 1822 01:11:48,480 --> 01:11:50,480 question is how does a manager add value 1823 01:11:50,480 --> 01:11:52,560 on an agile project? And this isn't a 1824 01:11:52,560 --> 01:11:54,239 joke, right? This this is a real 1825 01:11:54,239 --> 01:11:56,000 question. How does a manager add value 1826 01:11:56,000 --> 01:11:59,679 in agile project? because I've had to be 1827 01:11:59,679 --> 01:12:01,760 manager on agile projects and I've had 1828 01:12:01,760 --> 01:12:03,360 to try and figure out how to add value 1829 01:12:03,360 --> 01:12:05,520 and support the testers, but I don't 1830 01:12:05,520 --> 01:12:08,400 have the time very often in huge chunks 1831 01:12:08,400 --> 01:12:10,800 to focus in on a story, right? And 1832 01:12:10,800 --> 01:12:12,320 someone on the project will be able to 1833 01:12:12,320 --> 01:12:14,159 focus in on a story for two or three 1834 01:12:14,159 --> 01:12:16,080 days potentially and they'll be able to 1835 01:12:16,080 --> 01:12:18,560 test that. I might only have half an 1836 01:12:18,560 --> 01:12:21,840 hour, an hour, 15 minutes. How can I add 1837 01:12:21,840 --> 01:12:24,480 value on a project? I do that by looking 1838 01:12:24,480 --> 01:12:26,640 at the project holistically. I look at 1839 01:12:26,640 --> 01:12:30,560 the gaps in people's thinking. I know 1840 01:12:30,560 --> 01:12:31,760 that people are focused on 1841 01:12:31,760 --> 01:12:33,199 functionality. I know that they very 1842 01:12:33,199 --> 01:12:34,880 often don't have time to look beyond it 1843 01:12:34,880 --> 01:12:37,040 to look at how stories are interacting. 1844 01:12:37,040 --> 01:12:39,679 So very often that's where I look. So I 1845 01:12:39,679 --> 01:12:42,480 use the process and look for risks in 1846 01:12:42,480 --> 01:12:44,880 that process to drive my testing. I look 1847 01:12:44,880 --> 01:12:47,199 where others don't. I go more technical. 1848 01:12:47,199 --> 01:12:48,880 I look at the messages because I know 1849 01:12:48,880 --> 01:12:50,800 people aren't looking at those things. 1850 01:12:50,800 --> 01:12:54,640 Essentially, I look wherever anyone else 1851 01:12:54,640 --> 01:12:56,880 has not looked 1852 01:12:56,880 --> 01:12:59,360 and by I do that by trying to get a 1853 01:12:59,360 --> 01:13:01,360 handle on the process people have used 1854 01:13:01,360 --> 01:13:03,440 and to look at it holistically. And this 1855 01:13:03,440 --> 01:13:06,719 is a key thing to try and do. If you can 1856 01:13:06,719 --> 01:13:08,880 build this skill, modeling not just the 1857 01:13:08,880 --> 01:13:10,480 application, but modeling the process 1858 01:13:10,480 --> 01:13:12,080 that people are using and understanding 1859 01:13:12,080 --> 01:13:13,920 the risks that that imposes on a 1860 01:13:13,920 --> 01:13:17,120 project, you will be able to find 1861 01:13:17,120 --> 01:13:19,679 defects and you will be able to add 1862 01:13:19,679 --> 01:13:21,360 value. You will be able to expose 1863 01:13:21,360 --> 01:13:24,320 ambiguity that other people are not 1864 01:13:24,320 --> 01:13:25,840 seeing. 1865 01:13:25,840 --> 01:13:27,920 And you can do this as a manager, which 1866 01:13:27,920 --> 01:13:30,400 is fantastic because you can use 1867 01:13:30,400 --> 01:13:33,520 whatever gaps you have to add value in 1868 01:13:33,520 --> 01:13:36,719 the processes. And the project will hate 1869 01:13:36,719 --> 01:13:38,880 you for this. 1870 01:13:38,880 --> 01:13:42,880 They don't love this stuff. But um 1871 01:13:42,880 --> 01:13:44,320 sometimes you come up with really 1872 01:13:44,320 --> 01:13:45,760 important things that they have to spend 1873 01:13:45,760 --> 01:13:48,880 an entire sprint or two fixing because 1874 01:13:48,880 --> 01:13:53,880 it was a gap in what they were thinking. 1875 01:14:01,760 --> 01:14:04,640 So recon sessions, I mean this is a term 1876 01:14:04,640 --> 01:14:07,040 that is used a lot in military. We go 1877 01:14:07,040 --> 01:14:09,520 and do recon and you look in commando 1878 01:14:09,520 --> 01:14:11,360 handbooks or things like that. It's also 1879 01:14:11,360 --> 01:14:13,360 used in security testing a lot where 1880 01:14:13,360 --> 01:14:16,880 they do recon to find out the scope that 1881 01:14:16,880 --> 01:14:18,640 is available to them. Not necessarily 1882 01:14:18,640 --> 01:14:20,239 the scope that people said was there, 1883 01:14:20,239 --> 01:14:22,560 but the scope that is available to them. 1884 01:14:22,560 --> 01:14:24,400 And recon is really important to help 1885 01:14:24,400 --> 01:14:27,120 you uh debrief and feed into your 1886 01:14:27,120 --> 01:14:28,719 planning process. Recon is really 1887 01:14:28,719 --> 01:14:30,320 important to help you build models. 1888 01:14:30,320 --> 01:14:31,520 Recon is really important to help you 1889 01:14:31,520 --> 01:14:33,440 understand. Recon is really important to 1890 01:14:33,440 --> 01:14:35,199 ask very small questions, get 1891 01:14:35,199 --> 01:14:36,960 information back that might change your 1892 01:14:36,960 --> 01:14:40,880 view of how your testing should approach 1893 01:14:40,880 --> 01:14:43,679 this particular application. 1894 01:14:43,679 --> 01:14:47,840 So my chosen scope was in the release 1895 01:14:47,840 --> 01:14:49,840 notes where you can now change the state 1896 01:14:49,840 --> 01:14:53,520 of a context to closed. Great. But I 1897 01:14:53,520 --> 01:14:56,239 don't know what that means yet, right? 1898 01:14:56,239 --> 01:14:58,320 So I'm going to have to do something to 1899 01:14:58,320 --> 01:15:00,880 find out. I so I need an exploration 1900 01:15:00,880 --> 01:15:03,760 process, a recon process to do that. On 1901 01:15:03,760 --> 01:15:05,280 some teams that might be going to speak 1902 01:15:05,280 --> 01:15:07,600 to the product owner and the programmer 1903 01:15:07,600 --> 01:15:10,239 and looking at how it's built and 1904 01:15:10,239 --> 01:15:13,280 possibly so for me I the only I only 1905 01:15:13,280 --> 01:15:15,360 have one place to ask these questions 1906 01:15:15,360 --> 01:15:17,760 which is the application. So I need to 1907 01:15:17,760 --> 01:15:20,159 create a session around the context 1908 01:15:20,159 --> 01:15:23,360 state to help me answer these questions 1909 01:15:23,360 --> 01:15:26,800 to know what that actually means. which 1910 01:15:26,800 --> 01:15:30,000 means I then have to do a um recon 1911 01:15:30,000 --> 01:15:33,000 session. 1912 01:15:41,520 --> 01:15:43,920 So, I have um chosen what I'm going to 1913 01:15:43,920 --> 01:15:47,679 test. I've figured out what my scope is 1914 01:15:47,679 --> 01:15:49,520 going to be. I've planned what I'm going 1915 01:15:49,520 --> 01:15:51,840 to do. Now, what's interesting for me is 1916 01:15:51,840 --> 01:15:55,120 I don't actually know what that real 1917 01:15:55,120 --> 01:15:57,199 scope means yet. I don't know what the 1918 01:15:57,199 --> 01:15:59,600 requirement means. So, my my the thing 1919 01:15:59,600 --> 01:16:01,360 that I'm going to target is you can now 1920 01:16:01,360 --> 01:16:03,120 change the state of a context to closed, 1921 01:16:03,120 --> 01:16:04,719 but I don't know what that means. But 1922 01:16:04,719 --> 01:16:09,440 what I do have is some models of that in 1923 01:16:09,440 --> 01:16:12,080 terms of both state machines. Um, and I 1924 01:16:12,080 --> 01:16:14,239 know how to explore state machines. So I 1925 01:16:14,239 --> 01:16:16,159 have a vague concept of a state machine 1926 01:16:16,159 --> 01:16:18,320 in here and I have the concept of an 1927 01:16:18,320 --> 01:16:20,719 entity called context, but I don't 1928 01:16:20,719 --> 01:16:22,239 really know how that fits into the 1929 01:16:22,239 --> 01:16:24,480 application. So rather than just 1930 01:16:24,480 --> 01:16:28,640 immediately starting to test um this 1931 01:16:28,640 --> 01:16:32,640 particular uh concept, what I'm going to 1932 01:16:32,640 --> 01:16:34,640 do is I'm going to do a recon session, 1933 01:16:34,640 --> 01:16:37,679 right? Because I have to build models. I 1934 01:16:37,679 --> 01:16:40,239 have to understand what it is that I'm 1935 01:16:40,239 --> 01:16:42,080 working with. And so I'm going to start 1936 01:16:42,080 --> 01:16:45,040 with a an aim which is to try and 1937 01:16:45,040 --> 01:16:47,840 understand and model this right the the 1938 01:16:47,840 --> 01:16:50,480 rough charter that I I created the set 1939 01:16:50,480 --> 01:16:53,040 of questions to explore this to to 1940 01:16:53,040 --> 01:16:56,560 figure out if what it is I have to 1941 01:16:56,560 --> 01:16:58,080 actually do here to come up with a more 1942 01:16:58,080 --> 01:17:02,080 concrete um scope and plan. 1943 01:17:02,080 --> 01:17:05,360 So I've made my notes as I went through 1944 01:17:05,360 --> 01:17:08,159 um when I started, what the time was uh 1945 01:17:08,159 --> 01:17:11,600 the uh application is now running on a a 1946 01:17:11,600 --> 01:17:13,040 different IP address because I've 1947 01:17:13,040 --> 01:17:16,000 restarted the virtual machine. So I'm 1948 01:17:16,000 --> 01:17:18,320 trying to figure out what is a context, 1949 01:17:18,320 --> 01:17:20,640 right? So a context is I can see it 1950 01:17:20,640 --> 01:17:22,719 here. So I can create a context when I 1951 01:17:22,719 --> 01:17:25,280 create a to-do item on the home screen. 1952 01:17:25,280 --> 01:17:26,960 So then I'm wondering well what are the 1953 01:17:26,960 --> 01:17:28,960 views to read this? So I'm thinking in 1954 01:17:28,960 --> 01:17:32,159 terms of CRUD like the context is an 1955 01:17:32,159 --> 01:17:35,040 entity. So I can create it here. Where 1956 01:17:35,040 --> 01:17:37,440 can I read it? I can read it there. I 1957 01:17:37,440 --> 01:17:40,159 can see it's there. Where can I update 1958 01:17:40,159 --> 01:17:42,239 it? There's an organized there with 1959 01:17:42,239 --> 01:17:45,040 context. I've got an edit button there. 1960 01:17:45,040 --> 01:17:47,199 I can edit the context there. Where else 1961 01:17:47,199 --> 01:17:49,840 can I update it? I can update it on the 1962 01:17:49,840 --> 01:17:53,040 context view itself. And then I've to 1963 01:17:53,040 --> 01:17:55,760 see that I've got a different edit view 1964 01:17:55,760 --> 01:17:57,600 there. So I've got a but I can't edit 1965 01:17:57,600 --> 01:17:59,920 the state here. So there's a place where 1966 01:17:59,920 --> 01:18:01,920 I can edit the state and a place where I 1967 01:18:01,920 --> 01:18:04,239 can edit the entity itself. So I'm 1968 01:18:04,239 --> 01:18:06,880 exploring the application just to try 1969 01:18:06,880 --> 01:18:09,120 and learn where that entity fits into 1970 01:18:09,120 --> 01:18:12,800 the um application. I assume that if I 1971 01:18:12,800 --> 01:18:14,800 do something to the context then I'll be 1972 01:18:14,800 --> 01:18:17,360 able to export it cuz export says 1973 01:18:17,360 --> 01:18:20,640 context. So that can be a good source 1974 01:18:20,640 --> 01:18:24,239 for observing the expected results. So 1975 01:18:24,239 --> 01:18:27,600 now I've got access to observation at 1976 01:18:27,600 --> 01:18:31,199 the guey and observation of an extract. 1977 01:18:31,199 --> 01:18:34,239 I haven't yet um extended my observation 1978 01:18:34,239 --> 01:18:36,239 abilities into the API. I know there's 1979 01:18:36,239 --> 01:18:39,520 an API. I haven't extended it to um how 1980 01:18:39,520 --> 01:18:41,120 things are created by looking at the 1981 01:18:41,120 --> 01:18:42,960 message that that are sent back and 1982 01:18:42,960 --> 01:18:45,679 forward. So I'm making notes on that in 1983 01:18:45,679 --> 01:18:47,679 my actual exploratory notes. I did 1984 01:18:47,679 --> 01:18:50,800 notice as I was exploring this that 1985 01:18:50,800 --> 01:18:54,239 there was a uh defect, a perceived 1986 01:18:54,239 --> 01:18:58,880 defect on the uh starred view here with 1987 01:18:58,880 --> 01:19:02,880 this dropdown. You can see I've got a 1988 01:19:02,880 --> 01:19:06,080 different result now than I had earlier 1989 01:19:06,080 --> 01:19:08,239 on. It's lucky I captured the 1990 01:19:08,239 --> 01:19:10,719 screenshot. There's differences in how 1991 01:19:10,719 --> 01:19:12,159 this is rendered, but I mean clearly 1992 01:19:12,159 --> 01:19:14,800 that rendering is not as good as it 1993 01:19:14,800 --> 01:19:16,239 should be. And clearly the rendering 1994 01:19:16,239 --> 01:19:18,640 that I experienced earlier on was not as 1995 01:19:18,640 --> 01:19:20,320 good as it should be. But there's a 1996 01:19:20,320 --> 01:19:21,920 variation in there that I I don't 1997 01:19:21,920 --> 01:19:23,520 understand why it would be different 1998 01:19:23,520 --> 01:19:25,199 from one to another because this is the 1999 01:19:25,199 --> 01:19:26,560 same browser that I was using earlier 2000 01:19:26,560 --> 01:19:28,400 on. That's one of the reasons why it's 2001 01:19:28,400 --> 01:19:32,159 useful to capture um images as we go 2002 01:19:32,159 --> 01:19:33,920 through our testing and exploration 2003 01:19:33,920 --> 01:19:36,239 because things change and if we don't 2004 01:19:36,239 --> 01:19:38,000 have evidence of that, we might not even 2005 01:19:38,000 --> 01:19:40,239 I might not even have realized that what 2006 01:19:40,239 --> 01:19:43,360 I'm seeing here although this is um not 2007 01:19:43,360 --> 01:19:46,000 correct is different from what I thought 2008 01:19:46,000 --> 01:19:48,400 was not correct before. So having 2009 01:19:48,400 --> 01:19:51,920 figured out um that how to change the 2010 01:19:51,920 --> 01:19:54,400 state I don't do it in that one I do it 2011 01:19:54,400 --> 01:19:56,080 in 2012 01:19:56,080 --> 01:19:58,960 I can change whoops organize I can 2013 01:19:58,960 --> 01:20:01,520 change the state in here and then it 2014 01:20:01,520 --> 01:20:03,760 will move between these different um 2015 01:20:03,760 --> 01:20:06,000 contexts. So then I started to 2016 01:20:06,000 --> 01:20:09,040 experiment with this and changing it to 2017 01:20:09,040 --> 01:20:11,760 closed. Do an update and then I get this 2018 01:20:11,760 --> 01:20:13,679 message. State cannot be changed. The 2019 01:20:13,679 --> 01:20:15,520 context cannot be closed if you have 2020 01:20:15,520 --> 01:20:18,159 uncompleted actions in this context. So 2021 01:20:18,159 --> 01:20:20,400 I can see that there's a guard on one of 2022 01:20:20,400 --> 01:20:22,800 the state transitions. Can I hide it 2023 01:20:22,800 --> 01:20:26,000 when there's a a an unsaved thing? Yes, 2024 01:20:26,000 --> 01:20:28,640 I can. Can I move it back to the state 2025 01:20:28,640 --> 01:20:31,760 that it was in before? uh even though it 2026 01:20:31,760 --> 01:20:34,400 has these actions 2027 01:20:34,400 --> 01:20:39,040 and the answer is yes I can. So I can I 2028 01:20:39,040 --> 01:20:41,440 can move it to closed but there seems to 2029 01:20:41,440 --> 01:20:43,360 be no constraint moving from active to 2030 01:20:43,360 --> 01:20:45,840 hidden. So that's interesting. We have a 2031 01:20:45,840 --> 01:20:47,679 constraint. 2032 01:20:47,679 --> 01:20:50,239 Let's move that to closed. And it says 2033 01:20:50,239 --> 01:20:52,560 no we can't do it. And then I thought 2034 01:20:52,560 --> 01:20:57,760 okay so I can't move uh context into 2035 01:20:57,760 --> 01:20:59,920 closed when there's uncompleted actions. 2036 01:20:59,920 --> 01:21:03,040 But what if I have a closed context? Can 2037 01:21:03,040 --> 01:21:09,120 I add an action which is uncomplete to a 2038 01:21:09,120 --> 01:21:10,640 context 2039 01:21:10,640 --> 01:21:14,000 which is closed? The context B is 2040 01:21:14,000 --> 01:21:18,320 closed. So let's add this to context B. 2041 01:21:18,320 --> 01:21:20,239 And yeah, I can do that fine. So I 2042 01:21:20,239 --> 01:21:24,080 cannot move a context into a closed 2043 01:21:24,080 --> 01:21:27,120 state when it has uncompleted actions. 2044 01:21:27,120 --> 01:21:30,640 But I can add uncompleted actions into a 2045 01:21:30,640 --> 01:21:33,440 context that has a closed state. And I 2046 01:21:33,440 --> 01:21:37,199 don't know if that's a a a bug or not. 2047 01:21:37,199 --> 01:21:39,600 But it it feels like I shouldn't be able 2048 01:21:39,600 --> 01:21:41,280 to do that. It feels like I shouldn't 2049 01:21:41,280 --> 01:21:44,960 necessarily let me do that. And I've 2050 01:21:44,960 --> 01:21:48,159 explored that in my notes in here. Now, 2051 01:21:48,159 --> 01:21:50,320 what I've also done, I mean, that's a 2052 01:21:50,320 --> 01:21:52,400 mild distraction, right? because what 2053 01:21:52,400 --> 01:21:54,880 I'm supposed to be doing are learning 2054 01:21:54,880 --> 01:21:57,040 the rules around this, not necessarily 2055 01:21:57,040 --> 01:22:00,560 testing it. But the session was so short 2056 01:22:00,560 --> 01:22:03,120 um that I I followed that through. I've 2057 01:22:03,120 --> 01:22:06,800 made a notes of a more formal set of uh 2058 01:22:06,800 --> 01:22:08,960 transitions that I want to do. I've also 2059 01:22:08,960 --> 01:22:11,520 made notes on well 2060 01:22:11,520 --> 01:22:14,480 can I move from the current state to the 2061 01:22:14,480 --> 01:22:19,120 current state? Uh now I when I edit the 2062 01:22:19,120 --> 01:22:22,239 context in here and I change the name 2063 01:22:22,239 --> 01:22:26,080 and I go and I leave the state active 2064 01:22:26,080 --> 01:22:28,159 did I change it from active to active? 2065 01:22:28,159 --> 01:22:30,880 No I don't know cuz I don't have the 2066 01:22:30,880 --> 01:22:32,800 ability to observe the system at a low 2067 01:22:32,800 --> 01:22:36,560 enough level to know whether it put the 2068 01:22:36,560 --> 01:22:39,440 state across at the same time. So I've 2069 01:22:39,440 --> 01:22:41,840 got limits in my ability to observe the 2070 01:22:41,840 --> 01:22:45,199 system which prevent me from testing 2071 01:22:45,199 --> 01:22:47,280 effectively parts of the system. So I 2072 01:22:47,280 --> 01:22:49,600 know I need to increase the my 2073 01:22:49,600 --> 01:22:51,840 visibility. So I'm going to need tooling 2074 01:22:51,840 --> 01:22:53,760 in order to do that. And then I started 2075 01:22:53,760 --> 01:22:56,400 to explore what entities relate to other 2076 01:22:56,400 --> 01:22:58,960 entities. And then I found that it was 2077 01:22:58,960 --> 01:23:04,800 odd being able to um add that to-do into 2078 01:23:04,800 --> 01:23:07,600 a context that is already closed. So, I 2079 01:23:07,600 --> 01:23:10,719 would probably raise that as a a bug. 2080 01:23:10,719 --> 01:23:14,480 And I've gone through here looking at 2081 01:23:14,480 --> 01:23:16,560 are there any other state combinations 2082 01:23:16,560 --> 01:23:18,080 because there's not a lot of entities in 2083 01:23:18,080 --> 01:23:20,719 here. We've got contexts, we've got 2084 01:23:20,719 --> 01:23:22,560 to-dos, we've got notes, we've got 2085 01:23:22,560 --> 01:23:24,320 repeating to-dos. And again, look, we've 2086 01:23:24,320 --> 01:23:26,480 got a rendering issue in here. So, 2087 01:23:26,480 --> 01:23:28,880 really, I need to get the um screenshot 2088 01:23:28,880 --> 01:23:31,360 tool up to have that to capture that 2089 01:23:31,360 --> 01:23:33,920 rendering issue. So, in the repeating 2090 01:23:33,920 --> 01:23:37,199 to-dos, um, can I create a repeating 2091 01:23:37,199 --> 01:23:40,239 action for a context that is closed? 2092 01:23:40,239 --> 01:23:42,080 What would happen under that situation? 2093 01:23:42,080 --> 01:23:43,760 Would it be fine? Would it work? Should 2094 01:23:43,760 --> 01:23:46,080 that happen? And it's that overlap 2095 01:23:46,080 --> 01:23:48,719 between state machines that I'm finding 2096 01:23:48,719 --> 01:23:50,560 interesting because it wasn't mentioned 2097 01:23:50,560 --> 01:23:51,840 at the front. And that's why I'm 2098 01:23:51,840 --> 01:23:54,320 thinking, you know, that holistic view 2099 01:23:54,320 --> 01:23:56,159 looking at the system, looking at the 2100 01:23:56,159 --> 01:23:58,480 going beyond the beyond the story and 2101 01:23:58,480 --> 01:24:00,800 looking at stories in combination. And 2102 01:24:00,800 --> 01:24:02,239 it doesn't have to be stories when we 2103 01:24:02,239 --> 01:24:04,719 think about that. It can be entities in 2104 01:24:04,719 --> 01:24:06,480 the system. It can be functionality in 2105 01:24:06,480 --> 01:24:08,480 the system. Stuff that was there already 2106 01:24:08,480 --> 01:24:10,400 that we take for granted but we put in 2107 01:24:10,400 --> 01:24:13,440 something new like a new state and we've 2108 01:24:13,440 --> 01:24:15,120 got some constraints but does it work at 2109 01:24:15,120 --> 01:24:16,800 all the constraints? And then I'm 2110 01:24:16,800 --> 01:24:19,760 thinking well does the API um enforce 2111 01:24:19,760 --> 01:24:22,480 these constraints or can I bypass these 2112 01:24:22,480 --> 01:24:24,239 constraints by going through the API? 2113 01:24:24,239 --> 01:24:25,840 And again in order to test that I would 2114 01:24:25,840 --> 01:24:27,760 need more tooling because I can't do 2115 01:24:27,760 --> 01:24:31,280 that through the front end. So, because 2116 01:24:31,280 --> 01:24:33,760 this was a 2117 01:24:33,760 --> 01:24:37,040 a recon session, I summarized my 2118 01:24:37,040 --> 01:24:39,040 findings to help me go forward because 2119 01:24:39,040 --> 01:24:40,880 what I'm doing really is building a 2120 01:24:40,880 --> 01:24:44,880 model of this uh concept. So, I've got 2121 01:24:44,880 --> 01:24:46,320 I've got my model, I've got my 2122 01:24:46,320 --> 01:24:49,360 constraints, and I've made some notes 2123 01:24:49,360 --> 01:24:51,520 about what to to do and made some notes 2124 01:24:51,520 --> 01:24:53,600 about what I might do going forward. And 2125 01:24:53,600 --> 01:24:56,880 that whole session had a gap in the 2126 01:24:56,880 --> 01:24:59,679 middle of uh 8 minutes cuz someone came 2127 01:24:59,679 --> 01:25:04,560 to my front door. And I started at 2128 01:25:04,560 --> 01:25:07,840 uh when did I start? There we go. 22 2129 01:25:07,840 --> 01:25:12,080 minutes past 12 and finished at uh 13 2130 01:25:12,080 --> 01:25:16,560 minutes past uh 13. So that's uh less 2131 01:25:16,560 --> 01:25:19,440 than an hour. Now, I didn't um really 2132 01:25:19,440 --> 01:25:24,480 put limits on the uh the session, right? 2133 01:25:24,480 --> 01:25:26,560 Um I didn't have a timer, but what I've 2134 01:25:26,560 --> 01:25:28,960 done is I've just tracked my time. And 2135 01:25:28,960 --> 01:25:32,080 as you can see that I stuck in some um 2136 01:25:32,080 --> 01:25:33,760 timestamps as I went through because I 2137 01:25:33,760 --> 01:25:36,320 was conscious that I was making a lot of 2138 01:25:36,320 --> 01:25:38,400 notes, but not necessarily tracking the 2139 01:25:38,400 --> 01:25:41,520 time. So, I've got my to-dos in there. I 2140 01:25:41,520 --> 01:25:43,280 can revisit this. The notes are quite 2141 01:25:43,280 --> 01:25:45,199 detailed. I can use that to debrief 2142 01:25:45,199 --> 01:25:46,639 someone else. So I can use that to 2143 01:25:46,639 --> 01:25:49,360 revisit to help me plan other sessions. 2144 01:25:49,360 --> 01:25:51,360 But I've also got my model which was the 2145 01:25:51,360 --> 01:25:54,239 key point for the recon session to 2146 01:25:54,239 --> 01:25:56,560 understand how this fits together and 2147 01:25:56,560 --> 01:25:58,080 how I want to work with it in the 2148 01:25:58,080 --> 01:26:00,719 future. This would lead onto a planning 2149 01:26:00,719 --> 01:26:02,560 session so that when I come up with my 2150 01:26:02,560 --> 01:26:04,880 other charters, I know what it is I'm 2151 01:26:04,880 --> 01:26:07,120 going to do. Um and also there's there's 2152 01:26:07,120 --> 01:26:08,880 nothing really different about the the 2153 01:26:08,880 --> 01:26:10,880 functional testing in here. Right? I 2154 01:26:10,880 --> 01:26:12,639 used all my functional testing thought 2155 01:26:12,639 --> 01:26:14,960 processes to come through to work out 2156 01:26:14,960 --> 01:26:17,760 the state transitions to explore the the 2157 01:26:17,760 --> 01:26:19,600 state transitions to see if I can skip 2158 01:26:19,600 --> 01:26:22,639 states. But what is key here is that my 2159 01:26:22,639 --> 01:26:25,040 modeling and assessment of my findings 2160 01:26:25,040 --> 01:26:28,480 is limited by my ability to observe the 2161 01:26:28,480 --> 01:26:30,800 system and I and limited by my ability 2162 01:26:30,800 --> 01:26:33,040 to manipulate the system. Um because can 2163 01:26:33,040 --> 01:26:35,840 I move a state from the current state 2164 01:26:35,840 --> 01:26:37,840 into the current state? I don't know if 2165 01:26:37,840 --> 01:26:40,000 that's what that functionality did. And 2166 01:26:40,000 --> 01:26:42,639 if it didn't, I need the ability to send 2167 01:26:42,639 --> 01:26:44,800 through whatever message it sends when 2168 01:26:44,800 --> 01:26:46,560 it's changing state to change it from 2169 01:26:46,560 --> 01:26:48,400 one state to the other in order to do 2170 01:26:48,400 --> 01:26:50,480 that transition. So I'm currently 2171 01:26:50,480 --> 01:26:53,280 limited by the technology that I'm 2172 01:26:53,280 --> 01:26:55,120 using. But because I understand the 2173 01:26:55,120 --> 01:26:57,520 architecture of the system, I know what 2174 01:26:57,520 --> 01:27:00,080 technology and tooling I need to bring 2175 01:27:00,080 --> 01:27:02,639 in to help me. So I don't start with 2176 01:27:02,639 --> 01:27:08,000 tools. I iterate towards tool usage as I 2177 01:27:08,000 --> 01:27:10,800 as required as I hit limits in my 2178 01:27:10,800 --> 01:27:16,040 ability to test and observe the system. 2179 01:27:23,520 --> 01:27:26,080 Let's go a bit meta on the the recon 2180 01:27:26,080 --> 01:27:27,920 session. 2181 01:27:27,920 --> 01:27:30,159 I have to plan before doing a recon 2182 01:27:30,159 --> 01:27:32,639 session. My recon session is about 2183 01:27:32,639 --> 01:27:35,120 helping me understand what's going on. 2184 01:27:35,120 --> 01:27:37,440 So I but I'm still making notes, right? 2185 01:27:37,440 --> 01:27:41,840 Every time I hit anything in a session, 2186 01:27:41,840 --> 01:27:44,080 I'm making notes. Anytime I'm going into 2187 01:27:44,080 --> 01:27:47,280 a meeting to discuss um how the story 2188 01:27:47,280 --> 01:27:49,280 works, I'm going to make notes. Anytime 2189 01:27:49,280 --> 01:27:51,120 I go over to someone's desk, I'm going 2190 01:27:51,120 --> 01:27:52,880 to make notes and I'll tidy them up when 2191 01:27:52,880 --> 01:27:54,159 I come back because these are 2192 01:27:54,159 --> 01:27:57,520 exploratory, investigative sessions to 2193 01:27:57,520 --> 01:28:00,320 help me understand. And I'm I'm making 2194 01:28:00,320 --> 01:28:02,159 notes. I'm making to-dos. I'm writing 2195 01:28:02,159 --> 01:28:04,960 down the findings. I'm asking extra 2196 01:28:04,960 --> 01:28:07,600 questions. Um I'm making notes on what 2197 01:28:07,600 --> 01:28:10,239 things seem to be, but I'm not doing a 2198 01:28:10,239 --> 01:28:14,080 lot of um interrogation to find out. 2199 01:28:14,080 --> 01:28:16,159 Sometimes I will, sometimes I won't. 2200 01:28:16,159 --> 01:28:17,920 Because it's a recon session. It's I'll 2201 01:28:17,920 --> 01:28:20,719 do whatever I need to look at in order 2202 01:28:20,719 --> 01:28:24,159 to get things working. I'm tracking any 2203 01:28:24,159 --> 01:28:27,760 defects that I see again and I'm asking 2204 01:28:27,760 --> 01:28:30,239 questions as I go through to help drive 2205 01:28:30,239 --> 01:28:33,360 my um investigation. And again, I'm 2206 01:28:33,360 --> 01:28:35,280 making notes on my questions, what I'm 2207 01:28:35,280 --> 01:28:37,360 thinking about, what the answers are. 2208 01:28:37,360 --> 01:28:39,040 This is a session just like anything 2209 01:28:39,040 --> 01:28:42,400 else. We don't necessarily know what we 2210 01:28:42,400 --> 01:28:44,960 will find when we do these sessions, but 2211 01:28:44,960 --> 01:28:47,760 we know what our aim is. And the aim is 2212 01:28:47,760 --> 01:28:50,000 for me to come out the other end with a 2213 01:28:50,000 --> 01:28:53,520 better understanding of the contexts to 2214 01:28:53,520 --> 01:28:57,440 know how to test it. And at the end of 2215 01:28:57,440 --> 01:29:00,080 my session, I made some findings. This 2216 01:29:00,080 --> 01:29:02,719 isn't a debrief summary. This is just a 2217 01:29:02,719 --> 01:29:05,040 a kind of insitue 2218 01:29:05,040 --> 01:29:06,960 set of findings. 2219 01:29:06,960 --> 01:29:09,120 So this is my rough model at the time, 2220 01:29:09,120 --> 01:29:11,199 right? I've got to-dos or actions. They 2221 01:29:11,199 --> 01:29:14,639 can be added into contexts. I seem to be 2222 01:29:14,639 --> 01:29:17,120 able to move context into different 2223 01:29:17,120 --> 01:29:18,960 states in any order, right? But I know 2224 01:29:18,960 --> 01:29:20,239 that I need to cover that in more 2225 01:29:20,239 --> 01:29:22,880 detail. I did find one constraint that I 2226 01:29:22,880 --> 01:29:24,800 cannot move a context to closed if it 2227 01:29:24,800 --> 01:29:27,280 has open actions, which seems like 2228 01:29:27,280 --> 01:29:29,600 something that would be really good to 2229 01:29:29,600 --> 01:29:32,560 drill into in more detail because that's 2230 01:29:32,560 --> 01:29:34,480 a constraint. It has to be enforced. How 2231 01:29:34,480 --> 01:29:36,000 many ways are there of potentially 2232 01:29:36,000 --> 01:29:38,560 bypassing it? I know also that I can add 2233 01:29:38,560 --> 01:29:40,960 open actions to closed context when I 2234 01:29:40,960 --> 01:29:43,199 create an action, which to me seems to 2235 01:29:43,199 --> 01:29:46,480 violate the constraint. So I think 2236 01:29:46,480 --> 01:29:49,520 there's a lot of scope in there for 2237 01:29:49,520 --> 01:29:52,400 looking at that state and the overlap 2238 01:29:52,400 --> 01:29:54,560 between actions and actual constraint 2239 01:29:54,560 --> 01:29:56,639 and and contexts. I found it a little 2240 01:29:56,639 --> 01:29:59,440 bit odd that all contexts are shown in 2241 01:29:59,440 --> 01:30:01,520 the dropdown. Uh I would have thought 2242 01:30:01,520 --> 01:30:03,520 that closed contexts wouldn't be there. 2243 01:30:03,520 --> 01:30:06,320 I haven't investigated how the system 2244 01:30:06,320 --> 01:30:08,400 actually updates the back end. It looks 2245 01:30:08,400 --> 01:30:10,560 like it's XHR requests, but I'm not 2246 01:30:10,560 --> 01:30:12,159 completely sure. So, I know that I've 2247 01:30:12,159 --> 01:30:13,760 I'm making a note that I need to get 2248 01:30:13,760 --> 01:30:16,880 more detailed in my investigation. And 2249 01:30:16,880 --> 01:30:21,040 even though XHR is used, there's no 2250 01:30:21,040 --> 01:30:24,080 observation pattern so that all screens 2251 01:30:24,080 --> 01:30:26,239 are sent messages or screens are pulling 2252 01:30:26,239 --> 01:30:28,159 the back end to see if the state of what 2253 01:30:28,159 --> 01:30:30,719 they're displaying is complete. So, 2254 01:30:30,719 --> 01:30:35,120 there's a potential there for multi-user 2255 01:30:35,120 --> 01:30:38,560 access, possibly overriding someone's um 2256 01:30:38,560 --> 01:30:40,000 state change without being informed 2257 01:30:40,000 --> 01:30:41,360 about it. Who knows, right? There's 2258 01:30:41,360 --> 01:30:43,760 extra scope in there that is occurring 2259 01:30:43,760 --> 01:30:46,239 to me when I'm doing this. So, I've got 2260 01:30:46,239 --> 01:30:49,600 new test ideas on how I can um approach 2261 01:30:49,600 --> 01:30:53,520 this. So, going meta to this, the basics 2262 01:30:53,520 --> 01:30:54,800 of functional testing are functional 2263 01:30:54,800 --> 01:30:56,159 testing, right? all the stuff that we've 2264 01:30:56,159 --> 01:30:59,280 learned about boundary values, um, odd 2265 01:30:59,280 --> 01:31:02,080 values, error validation, functional 2266 01:31:02,080 --> 01:31:05,040 flows, looking at different ways, 2267 01:31:05,040 --> 01:31:07,600 ordering, um, checking defaults, 2268 01:31:07,600 --> 01:31:08,960 whatever you know about function testing 2269 01:31:08,960 --> 01:31:11,360 that is that remains the same in any 2270 01:31:11,360 --> 01:31:14,560 testing session. But the architecture 2271 01:31:14,560 --> 01:31:17,600 and technology change how we test, 2272 01:31:17,600 --> 01:31:19,120 right? They change our ability to 2273 01:31:19,120 --> 01:31:22,560 observe the system. My ability to model 2274 01:31:22,560 --> 01:31:25,520 this and assess the findings is limited 2275 01:31:25,520 --> 01:31:28,159 by my ability to observe. I didn't have 2276 01:31:28,159 --> 01:31:30,000 anything that was looking at the network 2277 01:31:30,000 --> 01:31:32,800 traffic. So I don't really know how this 2278 01:31:32,800 --> 01:31:35,280 system is properly working. I'm limited 2279 01:31:35,280 --> 01:31:36,719 in how I'm approaching things. 2280 01:31:36,719 --> 01:31:38,800 Therefore, I know that I need additional 2281 01:31:38,800 --> 01:31:41,120 tools to go through. I know that I may 2282 01:31:41,120 --> 01:31:42,960 need to understand more of the 2283 01:31:42,960 --> 01:31:44,800 technology. And this is an evolving 2284 01:31:44,800 --> 01:31:47,520 process as we test, as we work on the 2285 01:31:47,520 --> 01:31:50,800 project. I don't start with a particular 2286 01:31:50,800 --> 01:31:53,120 tool set. I don't start with a 2287 01:31:53,120 --> 01:31:55,360 particular list of technologies that I'm 2288 01:31:55,360 --> 01:31:57,679 going to study. I iterate over these 2289 01:31:57,679 --> 01:32:00,639 things as I work on projects, as I work 2290 01:32:00,639 --> 01:32:04,080 on the system to help me ensure that my 2291 01:32:04,080 --> 01:32:06,000 ability to interrogate the system, 2292 01:32:06,000 --> 01:32:07,760 observe the system, manipulate the 2293 01:32:07,760 --> 01:32:09,920 system at all the different touch points 2294 01:32:09,920 --> 01:32:13,679 increases as required to be the right 2295 01:32:13,679 --> 01:32:16,639 person to test this. That's constantly 2296 01:32:16,639 --> 01:32:18,000 what I'm trying to do. I'm trying to 2297 01:32:18,000 --> 01:32:20,000 evolve to make sure that I am the best 2298 01:32:20,000 --> 01:32:23,040 person to test this so that when we like 2299 01:32:23,040 --> 01:32:24,800 do actually get to the end of this 2300 01:32:24,800 --> 01:32:26,320 project, 2301 01:32:26,320 --> 01:32:30,080 I am like at the peak of being able to 2302 01:32:30,080 --> 01:32:32,080 test this particular application, this 2303 01:32:32,080 --> 01:32:33,520 particular technology, this particular 2304 01:32:33,520 --> 01:32:35,280 functionality, and I'll learn that over 2305 01:32:35,280 --> 01:32:37,920 time. I may not be able to de-risk at 2306 01:32:37,920 --> 01:32:40,000 the start, but that's fine. I've been 2307 01:32:40,000 --> 01:32:43,280 put on the project and I'm evolving as 2308 01:32:43,280 --> 01:32:45,280 we go through which helps derisk the 2309 01:32:45,280 --> 01:32:46,800 fact that I'm on the project in the 2310 01:32:46,800 --> 01:32:50,320 first place. So it's a everything is an 2311 01:32:50,320 --> 01:32:53,040 exploratory process. Our learning our 2312 01:32:53,040 --> 01:32:55,600 skill sets even as we work on it is an 2313 01:32:55,600 --> 01:32:59,239 exploratory process. 2314 01:33:07,600 --> 01:33:09,920 So, the recon's given me quite a lot of 2315 01:33:09,920 --> 01:33:11,920 information so far. I've got a lot of 2316 01:33:11,920 --> 01:33:13,760 notes. Remember, I haven't really 2317 01:33:13,760 --> 01:33:16,880 started testing at this point. So, what 2318 01:33:16,880 --> 01:33:19,600 I really want to do is uh debrief is get 2319 01:33:19,600 --> 01:33:21,920 my head around what it is I've actually 2320 01:33:21,920 --> 01:33:24,000 done. So, I'm going to look through uh 2321 01:33:24,000 --> 01:33:26,639 the notes that I've got. I'm going to 2322 01:33:26,639 --> 01:33:29,520 try and collect them into some sort of 2323 01:33:29,520 --> 01:33:31,760 summary so I understand the status that 2324 01:33:31,760 --> 01:33:34,320 I'm at. If this was a real project, I'd 2325 01:33:34,320 --> 01:33:36,719 be pulling out the um issues, the 2326 01:33:36,719 --> 01:33:39,760 to-dos, the questions. Um I'd be 2327 01:33:39,760 --> 01:33:41,920 clarifying those with the team. I'd be 2328 01:33:41,920 --> 01:33:44,080 writing down the defects and raising 2329 01:33:44,080 --> 01:33:45,360 those in a system even though I haven't 2330 01:33:45,360 --> 01:33:47,040 started testing yet. I've I've learned a 2331 01:33:47,040 --> 01:33:48,480 lot of stuff and I just want to codify 2332 01:33:48,480 --> 01:33:50,480 that in my head. And that's going to 2333 01:33:50,480 --> 01:33:52,960 feed into a planning or a modeling 2334 01:33:52,960 --> 01:33:55,840 session. So the way I do the debrief is 2335 01:33:55,840 --> 01:33:58,400 I've got all my notes. I basically just 2336 01:33:58,400 --> 01:34:00,960 uh start at the top then start working 2337 01:34:00,960 --> 01:34:03,360 through them. And what I'll do is I'll 2338 01:34:03,360 --> 01:34:05,600 have the notes I've taken in whatever 2339 01:34:05,600 --> 01:34:07,760 format and I'll have a completely clean 2340 01:34:07,760 --> 01:34:10,800 editing session up. I'll just write down 2341 01:34:10,800 --> 01:34:13,360 debrief session the time date so that 2342 01:34:13,360 --> 01:34:15,120 again I'm tracking I'm always tracking 2343 01:34:15,120 --> 01:34:17,600 what time I'm doing. Um I write down the 2344 01:34:17,600 --> 01:34:19,520 aims for my session which is to review 2345 01:34:19,520 --> 01:34:21,199 notes blah blah blah. So, I've always 2346 01:34:21,199 --> 01:34:23,040 got an aim, right? Every time I'm doing 2347 01:34:23,040 --> 01:34:24,639 something, whatever it is, um you want 2348 01:34:24,639 --> 01:34:26,239 to call that a charter, that's fine. You 2349 01:34:26,239 --> 01:34:28,560 want to call that objectives, aim, plan, 2350 01:34:28,560 --> 01:34:30,639 whatever it is, I don't mind. I just 2351 01:34:30,639 --> 01:34:32,560 clear in my head, this is what I'm going 2352 01:34:32,560 --> 01:34:36,159 to do from this point until I finish. 2353 01:34:36,159 --> 01:34:37,840 And if it seems like it's taking too 2354 01:34:37,840 --> 01:34:40,560 long, I'll add more timestamps in here 2355 01:34:40,560 --> 01:34:42,960 so that I can track it. Um, and I just 2356 01:34:42,960 --> 01:34:45,520 went through making all my notes, um, 2357 01:34:45,520 --> 01:34:48,080 expanding it. Um, and I've made a 2358 01:34:48,080 --> 01:34:49,840 decision, right? The what I need to do 2359 01:34:49,840 --> 01:34:52,080 is I need to explore the state and 2360 01:34:52,080 --> 01:34:53,840 entity life history relationships in 2361 01:34:53,840 --> 01:34:56,800 more detail and move this into a 2362 01:34:56,800 --> 01:34:59,600 planning and modeling session to prep 2363 01:34:59,600 --> 01:35:01,520 for a more comprehensive coverage 2364 01:35:01,520 --> 01:35:04,080 approach because one of the things that 2365 01:35:04,080 --> 01:35:05,360 happens when you're doing exploratory 2366 01:35:05,360 --> 01:35:08,480 testing is uh you get wrapped up in it. 2367 01:35:08,480 --> 01:35:11,360 It can be hard to step back do the 2368 01:35:11,360 --> 01:35:13,120 modeling understand the scope of what 2369 01:35:13,120 --> 01:35:16,080 you've done. So we need to put sessions 2370 01:35:16,080 --> 01:35:17,520 in place where we can do that. And for 2371 01:35:17,520 --> 01:35:20,320 me that's a debrief session. Uh what do 2372 01:35:20,320 --> 01:35:23,199 other people call this? Um not not 2373 01:35:23,199 --> 01:35:25,679 stepping back but defocusing I think 2374 01:35:25,679 --> 01:35:27,280 some people call this. So but for me 2375 01:35:27,280 --> 01:35:28,719 this is a debrief. I'm just I'm 2376 01:35:28,719 --> 01:35:31,840 debriefing with myself. And this is an 2377 01:35:31,840 --> 01:35:34,080 invaluable process when you're working 2378 01:35:34,080 --> 01:35:36,080 on your own. Very often we're testing on 2379 01:35:36,080 --> 01:35:38,239 our own. We don't we can't bring someone 2380 01:35:38,239 --> 01:35:40,239 over and say hey interrupt what you're 2381 01:35:40,239 --> 01:35:42,159 doing. Come and look at my stuff. It's 2382 01:35:42,159 --> 01:35:43,920 useful to have that if you're doing a 2383 01:35:43,920 --> 01:35:45,760 formal sessionbased test management 2384 01:35:45,760 --> 01:35:48,080 process. you have that in the absence of 2385 01:35:48,080 --> 01:35:50,159 that and most people are working in the 2386 01:35:50,159 --> 01:35:52,320 absence of that we can do these debriefs 2387 01:35:52,320 --> 01:35:54,800 on our own by looking through our notes 2388 01:35:54,800 --> 01:35:58,560 and if our notes are good enough that 2389 01:35:58,560 --> 01:36:00,480 we'll be we'll be fine. If the notes are 2390 01:36:00,480 --> 01:36:02,639 not good enough then we need to make 2391 01:36:02,639 --> 01:36:06,159 them good enough to support this process 2392 01:36:06,159 --> 01:36:08,159 because this process is essential for 2393 01:36:08,159 --> 01:36:10,719 getting our head round. We're modeling 2394 01:36:10,719 --> 01:36:12,639 what we've done. We're building a status 2395 01:36:12,639 --> 01:36:14,880 of where we are. We're reflecting on 2396 01:36:14,880 --> 01:36:17,440 what has happened. This is absolutely 2397 01:36:17,440 --> 01:36:19,440 essential to our process. You can see 2398 01:36:19,440 --> 01:36:21,920 that what I've also done is as I went 2399 01:36:21,920 --> 01:36:25,120 through here um I collected the times so 2400 01:36:25,120 --> 01:36:26,960 that I know how much time I've spent on 2401 01:36:26,960 --> 01:36:30,800 this and what I'm working through and uh 2402 01:36:30,800 --> 01:36:32,560 I made decisions going forward and 2403 01:36:32,560 --> 01:36:35,280 basically I then took these notes. If I 2404 01:36:35,280 --> 01:36:37,440 was working in Jira I might post these 2405 01:36:37,440 --> 01:36:40,080 into a task on Jira. If I'm working more 2406 01:36:40,080 --> 01:36:42,480 informally I'll save this as a file. Um, 2407 01:36:42,480 --> 01:36:44,000 at the moment I'm just saving everything 2408 01:36:44,000 --> 01:36:46,480 in a a big block in Evernote. That seems 2409 01:36:46,480 --> 01:36:48,239 to work fine for me for what I'm doing 2410 01:36:48,239 --> 01:36:50,880 here. But I now have a reflection of 2411 01:36:50,880 --> 01:36:53,280 what I've got. If it was a real project, 2412 01:36:53,280 --> 01:36:55,600 I would do more in terms of writing down 2413 01:36:55,600 --> 01:36:57,199 all the questions. They'd be stated here 2414 01:36:57,199 --> 01:36:59,360 as questions, to-dos so that I could 2415 01:36:59,360 --> 01:37:02,159 plan things down, issues, um, so that I 2416 01:37:02,159 --> 01:37:04,960 could raise those. And then I go and um 2417 01:37:04,960 --> 01:37:06,719 communicate this to the team, ask 2418 01:37:06,719 --> 01:37:08,480 questions because remember I have no 2419 01:37:08,480 --> 01:37:10,960 idea when I'm testing this particular 2420 01:37:10,960 --> 01:37:12,320 application if the things that I'm 2421 01:37:12,320 --> 01:37:13,600 seeing that I think are problems are 2422 01:37:13,600 --> 01:37:16,320 problems. I don't know if it's a problem 2423 01:37:16,320 --> 01:37:20,400 that I can add a new action to a close 2424 01:37:20,400 --> 01:37:22,960 to-do. I think that's a problem because 2425 01:37:22,960 --> 01:37:25,119 it it seems like bypassing a constraint, 2426 01:37:25,119 --> 01:37:26,880 but I don't know that. So if this is a 2427 01:37:26,880 --> 01:37:29,520 real project at this point in time, I 2428 01:37:29,520 --> 01:37:32,239 would be communicating and asking that 2429 01:37:32,239 --> 01:37:35,440 as it is. I'm going to um build that in 2430 01:37:35,440 --> 01:37:37,199 to my next exploratory session because 2431 01:37:37,199 --> 01:37:40,159 that gives me something more to focus 2432 01:37:40,159 --> 01:37:41,920 on. So, the next session I'm going to do 2433 01:37:41,920 --> 01:37:44,400 after this is a a modeling session to 2434 01:37:44,400 --> 01:37:47,600 help me get my head around what it is 2435 01:37:47,600 --> 01:37:50,480 I've actually got to try and explore, 2436 01:37:50,480 --> 01:37:53,199 what coverage I want to build on that, 2437 01:37:53,199 --> 01:37:55,119 but what models I want to use for that 2438 01:37:55,119 --> 01:37:58,119 coverage. 2439 01:38:06,400 --> 01:38:08,480 So debriefs are essential. You can see 2440 01:38:08,480 --> 01:38:11,760 in this model here, debrief is happening 2441 01:38:11,760 --> 01:38:14,719 after every single type of session. The 2442 01:38:14,719 --> 01:38:16,400 only session it didn't happen after is a 2443 01:38:16,400 --> 01:38:18,320 planning session. But in theory, that's 2444 01:38:18,320 --> 01:38:20,080 part of the planning session. That 2445 01:38:20,080 --> 01:38:22,320 debrief to make sure that we're happy 2446 01:38:22,320 --> 01:38:24,080 with the the plan that we've got working 2447 01:38:24,080 --> 01:38:26,480 forward. And essentially we revisit that 2448 01:38:26,480 --> 01:38:28,320 plan when we start doing any other 2449 01:38:28,320 --> 01:38:31,360 session. Anyway, so in um concepts like 2450 01:38:31,360 --> 01:38:34,320 session based test management or formal 2451 01:38:34,320 --> 01:38:36,639 management of exploratory testing, the 2452 01:38:36,639 --> 01:38:38,560 debrief session is often done with 2453 01:38:38,560 --> 01:38:40,880 someone else. So you'll sit down, 2454 01:38:40,880 --> 01:38:42,719 debrief, you'll pair with them, you'll 2455 01:38:42,719 --> 01:38:44,000 go through your notes, you might have 2456 01:38:44,000 --> 01:38:45,920 the system up and running at the same 2457 01:38:45,920 --> 01:38:47,840 time to demonstrate, oh, I did this. 2458 01:38:47,840 --> 01:38:49,440 That's how we interpret the notes to 2459 01:38:49,440 --> 01:38:51,440 trigger your information to have a look 2460 01:38:51,440 --> 01:38:53,199 at the data in more detail. Sometimes 2461 01:38:53,199 --> 01:38:54,960 it's as it's is as simple as just 2462 01:38:54,960 --> 01:38:56,480 sitting down with someone and working 2463 01:38:56,480 --> 01:38:58,639 through what you've done. Debrief 2464 01:38:58,639 --> 01:39:01,440 sessions are so key, but people 2465 01:39:01,440 --> 01:39:03,280 sometimes leave them out when they're 2466 01:39:03,280 --> 01:39:04,960 actually working on their own. And we 2467 01:39:04,960 --> 01:39:07,600 can't afford to do that. So by debrief 2468 01:39:07,600 --> 01:39:09,199 session, it basically means stepping 2469 01:39:09,199 --> 01:39:10,800 back a little bit, looking at what we've 2470 01:39:10,800 --> 01:39:13,280 done. It might mean um tidying up my 2471 01:39:13,280 --> 01:39:15,760 notes. It might mean collecting my notes 2472 01:39:15,760 --> 01:39:17,600 so that I look through and pull out all 2473 01:39:17,600 --> 01:39:19,920 the to-dos. I pull out all the defects 2474 01:39:19,920 --> 01:39:23,040 which gives me the chance then to plan a 2475 01:39:23,040 --> 01:39:25,840 admin session for raising defects an 2476 01:39:25,840 --> 01:39:29,600 admin session for updating the test uh 2477 01:39:29,600 --> 01:39:31,119 conditions that we might use in the 2478 01:39:31,119 --> 01:39:33,520 future right all of these this collation 2479 01:39:33,520 --> 01:39:36,639 process and I will track this collation 2480 01:39:36,639 --> 01:39:38,480 process because it's a debrief session I 2481 01:39:38,480 --> 01:39:41,040 will track the time that I take on it to 2482 01:39:41,040 --> 01:39:43,679 work out what we're doing I might refine 2483 01:39:43,679 --> 01:39:45,920 the models the notes that I made on the 2484 01:39:45,920 --> 01:39:47,520 models but I might also then have to 2485 01:39:47,520 --> 01:39:50,639 plan a modeling session later if it 2486 01:39:50,639 --> 01:39:52,560 becomes clear that it's going to take 2487 01:39:52,560 --> 01:39:54,960 quite a long time to actually plan this 2488 01:39:54,960 --> 01:39:57,280 and that my debrief session is really 2489 01:39:57,280 --> 01:39:59,360 moving into a modeling and planning 2490 01:39:59,360 --> 01:40:01,040 session. So I going to have to be 2491 01:40:01,040 --> 01:40:02,639 careful about bleeding the sessions 2492 01:40:02,639 --> 01:40:04,480 across. So debrief session is a way of 2493 01:40:04,480 --> 01:40:06,719 tidying up making us clear of what we 2494 01:40:06,719 --> 01:40:09,119 did and recognizing if we didn't achieve 2495 01:40:09,119 --> 01:40:11,760 enough coverage. So potentially creating 2496 01:40:11,760 --> 01:40:13,920 some to-dos to revisit some of the 2497 01:40:13,920 --> 01:40:15,119 charter that we said we were going to 2498 01:40:15,119 --> 01:40:17,520 work on. debrief session is absolutely 2499 01:40:17,520 --> 01:40:20,080 key. I can't stress it enough. So, my 2500 01:40:20,080 --> 01:40:22,239 notes were relatively small for the 2501 01:40:22,239 --> 01:40:24,719 debrief session. Um, my debrief session 2502 01:40:24,719 --> 01:40:27,040 started at 10:40 2503 01:40:27,040 --> 01:40:30,159 and scroll and scroll, when did we 2504 01:40:30,159 --> 01:40:33,119 finish? At 10:53. So, this was a a 2505 01:40:33,119 --> 01:40:36,639 13minute process. I wrote down uh my 2506 01:40:36,639 --> 01:40:37,920 aims to try and figure out what I'm 2507 01:40:37,920 --> 01:40:40,400 going to do. Um, I summarized what I 2508 01:40:40,400 --> 01:40:43,040 did. Um, I made notes on what I need to 2509 01:40:43,040 --> 01:40:45,600 do going forward. I've also said that I 2510 01:40:45,600 --> 01:40:47,840 tidied up my notes to had a timing 2511 01:40:47,840 --> 01:40:50,880 session so that I can track this. And 2512 01:40:50,880 --> 01:40:52,719 then I've made notes on what I would 2513 01:40:52,719 --> 01:40:55,440 actually do on an ongoing basis next for 2514 01:40:55,440 --> 01:40:57,920 an admin session if I was doing this in 2515 01:40:57,920 --> 01:40:59,679 a real project where I' take all the 2516 01:40:59,679 --> 01:41:01,760 to-dos, take all the defects, raise the 2517 01:41:01,760 --> 01:41:03,600 defects, ask the questions of the people 2518 01:41:03,600 --> 01:41:05,440 on the team. This is what a debrief 2519 01:41:05,440 --> 01:41:07,520 session is to figure out what is my next 2520 01:41:07,520 --> 01:41:09,280 action. It's kind of like a planning 2521 01:41:09,280 --> 01:41:11,520 session, but it can lead into a proper 2522 01:41:11,520 --> 01:41:13,520 planning session. But it's taken all the 2523 01:41:13,520 --> 01:41:15,600 information from what we learned because 2524 01:41:15,600 --> 01:41:17,040 sometimes we have to when we do explore 2525 01:41:17,040 --> 01:41:19,679 to test, we have to extract 2526 01:41:19,679 --> 01:41:22,639 our coverage. We have to extract the 2527 01:41:22,639 --> 01:41:24,639 questions that we had because we cover 2528 01:41:24,639 --> 01:41:27,679 so much stuff in that short period of 2529 01:41:27,679 --> 01:41:29,600 time that the debrief session is a way 2530 01:41:29,600 --> 01:41:32,080 of pulling as much value much extra 2531 01:41:32,080 --> 01:41:35,119 value out of that beyond the 2532 01:41:35,119 --> 01:41:37,840 observations and interrogations that we 2533 01:41:37,840 --> 01:41:39,760 made during the session. So this is a 2534 01:41:39,760 --> 01:41:42,800 way of pulling out more value. Debrief 2535 01:41:42,800 --> 01:41:44,560 is absolutely key. It's why at the end 2536 01:41:44,560 --> 01:41:47,360 of the day um I will look through my 2537 01:41:47,360 --> 01:41:49,840 notes and debrief and write down what 2538 01:41:49,840 --> 01:41:51,600 went well, what didn't, what do I want 2539 01:41:51,600 --> 01:41:53,119 to do carrying forward. Are there any 2540 01:41:53,119 --> 01:41:54,639 new things I want to track? Am I still 2541 01:41:54,639 --> 01:41:56,719 on track my overall goals? These 2542 01:41:56,719 --> 01:42:01,199 debriefs are just a standard um to-do 2543 01:42:01,199 --> 01:42:03,520 management approach and just management 2544 01:42:03,520 --> 01:42:05,840 approach for getting better and 2545 01:42:05,840 --> 01:42:09,840 improving. It is a feedback mechanism 2546 01:42:09,840 --> 01:42:12,320 because it is information coming out of 2547 01:42:12,320 --> 01:42:15,840 our process that is feeding back into 2548 01:42:15,840 --> 01:42:20,000 helping us do the next thing. So lessons 2549 01:42:20,000 --> 01:42:22,480 learned. So I rely on linear notes now. 2550 01:42:22,480 --> 01:42:24,719 So I I just make my notes in order, 2551 01:42:24,719 --> 01:42:27,440 right? And I I use my debrief session to 2552 01:42:27,440 --> 01:42:29,440 potentially add in summaries to 2553 01:42:29,440 --> 01:42:32,239 potentially add more uh titles in there 2554 01:42:32,239 --> 01:42:34,080 to potentially add more structure. I 2555 01:42:34,080 --> 01:42:36,000 very often don't edit the notes very 2556 01:42:36,000 --> 01:42:38,400 much, but I can do that in a debrief. I 2557 01:42:38,400 --> 01:42:40,080 tend not to worry about formatting and 2558 01:42:40,080 --> 01:42:42,239 aesthetics very much, but because I'm 2559 01:42:42,239 --> 01:42:44,239 very often writing in markdown, I may go 2560 01:42:44,239 --> 01:42:46,560 back and add extra blank lines to make 2561 01:42:46,560 --> 01:42:49,119 sure things format in markdown. 2562 01:42:49,119 --> 01:42:52,880 Um, I do tend to use text files a lot. 2563 01:42:52,880 --> 01:42:54,880 Um, I do use Evernote, but sometimes 2564 01:42:54,880 --> 01:42:57,040 Evernote is a little bit clumsy to work 2565 01:42:57,040 --> 01:42:59,119 with because Evernote adds formatting. 2566 01:42:59,119 --> 01:43:00,960 When I when I start writing markdown, 2567 01:43:00,960 --> 01:43:02,960 Evernote will add extra formatting 2568 01:43:02,960 --> 01:43:04,239 there. It would be really good. The 2569 01:43:04,239 --> 01:43:06,320 ideal for me would be Evernote supported 2570 01:43:06,320 --> 01:43:08,480 markdown, but I could paste screenshots 2571 01:43:08,480 --> 01:43:10,560 in and then when I extract it as text, 2572 01:43:10,560 --> 01:43:12,480 it extracts out the whole thing, but I 2573 01:43:12,480 --> 01:43:14,239 haven't found a proper editor that does 2574 01:43:14,239 --> 01:43:17,840 that. So, I tend to use text files. 2575 01:43:17,840 --> 01:43:20,159 Cloud app is really good um screenshot 2576 01:43:20,159 --> 01:43:23,679 tool because it will paste um a URL into 2577 01:43:23,679 --> 01:43:25,280 my clipboard. When I take a screenshot, 2578 01:43:25,280 --> 01:43:26,880 there's a URL there. I can paste that 2579 01:43:26,880 --> 01:43:28,320 directly into my notes, which is 2580 01:43:28,320 --> 01:43:31,440 brilliant. Um, so different tools in 2581 01:43:31,440 --> 01:43:33,119 combination work in different ways, but 2582 01:43:33,119 --> 01:43:34,880 my standard approach is I'll have all 2583 01:43:34,880 --> 01:43:36,639 screenshots in an images folder because 2584 01:43:36,639 --> 01:43:38,159 that's kind of standard for working with 2585 01:43:38,159 --> 01:43:40,639 markdown. What I often find is that 2586 01:43:40,639 --> 01:43:42,719 having done a debrief, I've got a 2587 01:43:42,719 --> 01:43:44,560 summary of what I'm doing or what I've 2588 01:43:44,560 --> 01:43:46,480 done, which I can then use as a status 2589 01:43:46,480 --> 01:43:50,639 report to copy or paste into Jira or 2590 01:43:50,639 --> 01:43:52,719 whatever management system we're using. 2591 01:43:52,719 --> 01:43:55,520 So, I may not put my raw notes into 2592 01:43:55,520 --> 01:43:56,960 there. they may be saved somewhere else 2593 01:43:56,960 --> 01:43:59,440 but the summaries at a minimum will be 2594 01:43:59,440 --> 01:44:01,679 put into the overall project tracking 2595 01:44:01,679 --> 01:44:04,800 system so that people have insight and 2596 01:44:04,800 --> 01:44:06,880 visibility into the testing that I'm 2597 01:44:06,880 --> 01:44:09,679 doing. But the debrief is an absolutely 2598 01:44:09,679 --> 01:44:12,639 key approach when we do exploratory 2599 01:44:12,639 --> 01:44:15,639 testing. 2600 01:44:23,440 --> 01:44:26,639 So I moved on to a a modeling session 2601 01:44:26,639 --> 01:44:28,320 right when I went through the debrief I 2602 01:44:28,320 --> 01:44:31,440 made some notes and I realized I need to 2603 01:44:31,440 --> 01:44:34,719 try and understand the the context the 2604 01:44:34,719 --> 01:44:36,960 states the action states and the 2605 01:44:36,960 --> 01:44:39,360 relationship between those two entities 2606 01:44:39,360 --> 01:44:42,239 and their life cycle in more detail so 2607 01:44:42,239 --> 01:44:44,960 that I can try and identify and plan for 2608 01:44:44,960 --> 01:44:47,520 a better coverage approach to feed into 2609 01:44:47,520 --> 01:44:49,520 my exploratory testing. And you can see 2610 01:44:49,520 --> 01:44:52,400 here in my um notes, I'm saying see the 2611 01:44:52,400 --> 01:44:54,560 notes that I made on the smart pen, 2612 01:44:54,560 --> 01:44:57,840 right? Cuz what I'll I don't really I 2613 01:44:57,840 --> 01:44:59,280 want to try and do things as effectively 2614 01:44:59,280 --> 01:45:02,080 as possible, as fast as possible. So, 2615 01:45:02,080 --> 01:45:03,760 I'm not going to get out a diagramming 2616 01:45:03,760 --> 01:45:05,920 tool and start diagramming. I am going 2617 01:45:05,920 --> 01:45:08,719 to make notes. And the way that I make 2618 01:45:08,719 --> 01:45:12,159 notes is I have a smart pen. And you can 2619 01:45:12,159 --> 01:45:14,159 see here at the top of my notes, it says 2620 01:45:14,159 --> 01:45:16,400 test new pen, right? because my smart 2621 01:45:16,400 --> 01:45:18,560 pen broke and I used the guarantee and 2622 01:45:18,560 --> 01:45:20,800 got another one and it's working. So now 2623 01:45:20,800 --> 01:45:23,280 um when I write on my smart pen pad, it 2624 01:45:23,280 --> 01:45:25,119 automatically syncs into Evernote so I 2625 01:45:25,119 --> 01:45:28,159 don't have to do anything. Um the most 2626 01:45:28,159 --> 01:45:30,320 uh reliable way is to probably have a 2627 01:45:30,320 --> 01:45:33,920 pen and take uh photographs and we do 2628 01:45:33,920 --> 01:45:36,320 that of whiteboards. We do I do that in 2629 01:45:36,320 --> 01:45:37,920 my notebook when I'm doing things when I 2630 01:45:37,920 --> 01:45:39,360 don't have access to the smart pen. But 2631 01:45:39,360 --> 01:45:40,960 when I have access to the smart pen, I 2632 01:45:40,960 --> 01:45:42,800 will use that because even if the smart 2633 01:45:42,800 --> 01:45:45,040 pen doesn't sync properly, I can still 2634 01:45:45,040 --> 01:45:47,360 take a photograph of it and feed it in. 2635 01:45:47,360 --> 01:45:49,920 But I didn't have to do any work. I drew 2636 01:45:49,920 --> 01:45:51,760 my diagrams, my notes, and it 2637 01:45:51,760 --> 01:45:53,679 automatically syncs into Evernote. So 2638 01:45:53,679 --> 01:45:56,480 you can see what I've done here. I've 2639 01:45:56,480 --> 01:46:00,880 explored the state of the context. It's 2640 01:46:00,880 --> 01:46:03,440 not a big state model, but I can go from 2641 01:46:03,440 --> 01:46:05,040 active to hidden to closed. And I can do 2642 01:46:05,040 --> 01:46:06,400 that in a variety of ways. And I've 2643 01:46:06,400 --> 01:46:08,719 marked down the constraint like that. I 2644 01:46:08,719 --> 01:46:10,639 cannot move or I should not be able to 2645 01:46:10,639 --> 01:46:14,880 move to closed if the context has open 2646 01:46:14,880 --> 01:46:17,679 actions. And I made a note there that I 2647 01:46:17,679 --> 01:46:19,199 only did it with one open action. 2648 01:46:19,199 --> 01:46:20,880 Really, it's multiple open actions. So, 2649 01:46:20,880 --> 01:46:23,040 I really need to expand the scope to be 2650 01:46:23,040 --> 01:46:24,719 greater than or equal to one. So, I've 2651 01:46:24,719 --> 01:46:27,520 got a bigger set of things in there. 2652 01:46:27,520 --> 01:46:30,159 What I'm also conscious of is I really 2653 01:46:30,159 --> 01:46:33,280 only did the switch from trying to move 2654 01:46:33,280 --> 01:46:34,960 from active to closed. I didn't move 2655 01:46:34,960 --> 01:46:36,639 from hidden to closed and see if that 2656 01:46:36,639 --> 01:46:39,040 makes a difference. So I have to explore 2657 01:46:39,040 --> 01:46:43,679 the um moving into closed states um to 2658 01:46:43,679 --> 01:46:45,840 check that constraint. But even that's 2659 01:46:45,840 --> 01:46:47,920 not going to be enough 2660 01:46:47,920 --> 01:46:49,520 because 2661 01:46:49,520 --> 01:46:51,760 this the context here is related to 2662 01:46:51,760 --> 01:46:54,000 actions. So I really have to explore 2663 01:46:54,000 --> 01:46:56,800 actions in relation to this and actions 2664 01:46:56,800 --> 01:46:58,320 can have their own state model. So they 2665 01:46:58,320 --> 01:47:00,480 can be open or closed. That seems to be 2666 01:47:00,480 --> 01:47:02,960 what's important uh for this particular 2667 01:47:02,960 --> 01:47:05,520 constraint. Actions have other states or 2668 01:47:05,520 --> 01:47:07,199 attributes. They can be starred, not 2669 01:47:07,199 --> 01:47:09,199 starred. They can be dependent on others 2670 01:47:09,199 --> 01:47:11,280 or not dependent on others. So what I've 2671 01:47:11,280 --> 01:47:14,159 done is I've tried to make notes on that 2672 01:47:14,159 --> 01:47:17,199 using a a crude entity life history 2673 01:47:17,199 --> 01:47:19,600 model. So these are not like formal 2674 01:47:19,600 --> 01:47:21,360 diagrams. You you could probably model 2675 01:47:21,360 --> 01:47:23,040 these in formal tools, but I'm not using 2676 01:47:23,040 --> 01:47:24,560 them in completely formal. I'm using 2677 01:47:24,560 --> 01:47:26,880 them as the concept of there are states 2678 01:47:26,880 --> 01:47:28,320 when we switch between them. There may 2679 01:47:28,320 --> 01:47:30,320 well be there's in theory there's more 2680 01:47:30,320 --> 01:47:32,800 states in context because it's being 2681 01:47:32,800 --> 01:47:35,119 edited. it's there's other things that 2682 01:47:35,119 --> 01:47:36,960 are going through in the messaging but 2683 01:47:36,960 --> 01:47:40,080 I'm not modeling that at this point. 2684 01:47:40,080 --> 01:47:41,760 So I thought through well what is the 2685 01:47:41,760 --> 01:47:44,000 actual life cycle of the context so I 2686 01:47:44,000 --> 01:47:45,840 can create it when I create it it's in 2687 01:47:45,840 --> 01:47:49,360 active mode it's alive as a context i.e. 2688 01:47:49,360 --> 01:47:51,119 it's it's been created and it's not 2689 01:47:51,119 --> 01:47:53,199 deleted. So I've called that live. Then 2690 01:47:53,199 --> 01:47:54,960 I can do multiple things. That's an 2691 01:47:54,960 --> 01:47:56,400 iteration symbol. I can do multiple 2692 01:47:56,400 --> 01:47:57,679 things at different times. I can make it 2693 01:47:57,679 --> 01:47:59,119 active. I can make it hidden. I can make 2694 01:47:59,119 --> 01:48:01,119 it closed. I can do other things. I can 2695 01:48:01,119 --> 01:48:03,679 edit it. um edit the details but I 2696 01:48:03,679 --> 01:48:05,360 haven't represented in that in here. 2697 01:48:05,360 --> 01:48:06,800 This is a model. It doesn't include 2698 01:48:06,800 --> 01:48:10,639 everything. Um then I'm aware that well 2699 01:48:10,639 --> 01:48:12,159 there's a dependency between the 2700 01:48:12,159 --> 01:48:15,679 actions. So I can add actions to a 2701 01:48:15,679 --> 01:48:18,800 context. Um either moving them in or 2702 01:48:18,800 --> 01:48:20,719 editing the action to be part of the 2703 01:48:20,719 --> 01:48:23,199 context or creating the action to be 2704 01:48:23,199 --> 01:48:25,199 part of there. I can delete actions from 2705 01:48:25,199 --> 01:48:27,280 the context. I can move them out. I can 2706 01:48:27,280 --> 01:48:29,119 have repeated actions that will add on 2707 01:48:29,119 --> 01:48:31,440 to the context. So I really have to res 2708 01:48:31,440 --> 01:48:34,639 explore that because that is related to 2709 01:48:34,639 --> 01:48:37,119 the context and I really have to explore 2710 01:48:37,119 --> 01:48:40,400 that with all the different states that 2711 01:48:40,400 --> 01:48:43,119 the context can be in and I've got a a 2712 01:48:43,119 --> 01:48:45,440 fairly good set of coverage then if I do 2713 01:48:45,440 --> 01:48:48,400 that but then if I look at the uh action 2714 01:48:48,400 --> 01:48:50,800 itself I can create an action and an 2715 01:48:50,800 --> 01:48:52,880 action has to be part of a context when 2716 01:48:52,880 --> 01:48:55,600 I do. So I've got a reference there to 2717 01:48:55,600 --> 01:48:57,280 remind me there's a relationship between 2718 01:48:57,280 --> 01:48:59,679 the state when I create this. So I 2719 01:48:59,679 --> 01:49:01,040 should really create an action for an 2720 01:49:01,040 --> 01:49:02,560 active context, create an action for 2721 01:49:02,560 --> 01:49:03,840 hidden context, create an action for 2722 01:49:03,840 --> 01:49:05,119 closed context. I should do those 2723 01:49:05,119 --> 01:49:06,639 combinations. 2724 01:49:06,639 --> 01:49:08,639 Then I'm thinking, well, I need to amend 2725 01:49:08,639 --> 01:49:11,040 the actions. What does an amend mean? 2726 01:49:11,040 --> 01:49:12,719 And I haven't represented in here that I 2727 01:49:12,719 --> 01:49:15,520 can amend the text or the due date or 2728 01:49:15,520 --> 01:49:17,199 anything like that cuz that doesn't seem 2729 01:49:17,199 --> 01:49:20,080 relevant to the uh part of the system 2730 01:49:20,080 --> 01:49:21,679 that I'm exploring. So I'm deliberately 2731 01:49:21,679 --> 01:49:24,080 excluding parts, but it's obvious what 2732 01:49:24,080 --> 01:49:25,679 I'm excluding because it's not in my 2733 01:49:25,679 --> 01:49:28,800 model here. Um, so I can star something. 2734 01:49:28,800 --> 01:49:29,920 I don't know if that's important or not, 2735 01:49:29,920 --> 01:49:31,760 but it might be. And so I put it in 2736 01:49:31,760 --> 01:49:33,600 there. I can change the context. I can 2737 01:49:33,600 --> 01:49:35,040 go into the action and amend it and 2738 01:49:35,040 --> 01:49:37,440 change the context, which essentially is 2739 01:49:37,440 --> 01:49:39,520 starting to relate what happens to an 2740 01:49:39,520 --> 01:49:41,600 action with what happens to a context 2741 01:49:41,600 --> 01:49:43,679 over here. When I change the context for 2742 01:49:43,679 --> 01:49:45,840 an action, it deletes it from one of the 2743 01:49:45,840 --> 01:49:48,800 context over here. So these events are 2744 01:49:48,800 --> 01:49:52,239 related. Um, so I can close a an action, 2745 01:49:52,239 --> 01:49:53,520 I can open it, and you can see that 2746 01:49:53,520 --> 01:49:55,760 that's represented as the action state 2747 01:49:55,760 --> 01:49:57,440 because I'm interested in the action 2748 01:49:57,440 --> 01:49:59,600 state. But that's an event. I can open 2749 01:49:59,600 --> 01:50:02,400 it or close it. It the event then causes 2750 01:50:02,400 --> 01:50:04,159 a state change. And I'm really only 2751 01:50:04,159 --> 01:50:05,679 interested in these state changes. So 2752 01:50:05,679 --> 01:50:07,760 whatever here impacts that state change, 2753 01:50:07,760 --> 01:50:10,960 I'm modeling as an event. Then I'm also 2754 01:50:10,960 --> 01:50:13,760 thinking, well, does it matter if um I 2755 01:50:13,760 --> 01:50:15,760 try and have dependencies on action, 2756 01:50:15,760 --> 01:50:18,080 right? Because this just says context um 2757 01:50:18,080 --> 01:50:19,679 can't be closed if it has multiple open 2758 01:50:19,679 --> 01:50:22,560 actions. What if it's a an anclosed 2759 01:50:22,560 --> 01:50:24,719 action that is dependent on something 2760 01:50:24,719 --> 01:50:26,639 else? Can I do that? Can I have that? I 2761 01:50:26,639 --> 01:50:28,320 don't know. So I'm putting in here I 2762 01:50:28,320 --> 01:50:30,080 want to try and explore the dependencies 2763 01:50:30,080 --> 01:50:31,840 at this point as well. So that's what 2764 01:50:31,840 --> 01:50:35,520 this rough model is and it's a a well 2765 01:50:35,520 --> 01:50:37,360 this is a diagram of the model in my 2766 01:50:37,360 --> 01:50:38,880 head because I'm trying to clarify the 2767 01:50:38,880 --> 01:50:41,760 model in my head. So it's not a set of 2768 01:50:41,760 --> 01:50:45,040 formal models and I think of these as a 2769 01:50:45,040 --> 01:50:47,600 state model and an entity life history 2770 01:50:47,600 --> 01:50:49,520 model. And I'm trying to pull out the 2771 01:50:49,520 --> 01:50:50,800 events. And the reason I'm pulling out 2772 01:50:50,800 --> 01:50:53,600 the events is that if I ever want to do 2773 01:50:53,600 --> 01:50:57,199 any um ad hoc or quick um automating on 2774 01:50:57,199 --> 01:50:59,840 this and really have a lot of 2775 01:50:59,840 --> 01:51:03,360 combinations. Um I can just have event 2776 01:51:03,360 --> 01:51:06,480 triggers that say um just explore these 2777 01:51:06,480 --> 01:51:07,920 different events. We've got a context. 2778 01:51:07,920 --> 01:51:10,080 when we have a context, have a an event 2779 01:51:10,080 --> 01:51:12,320 that switches it into active. Um, have 2780 01:51:12,320 --> 01:51:15,040 an event that adds an an action to it, 2781 01:51:15,040 --> 01:51:18,159 have an event that explores this, and we 2782 01:51:18,159 --> 01:51:21,360 can just iterate over all of these and 2783 01:51:21,360 --> 01:51:23,280 at some point and we can make decisions 2784 01:51:23,280 --> 01:51:25,360 about, well, should we allow this, 2785 01:51:25,360 --> 01:51:28,000 should we not, or I can review the event 2786 01:51:28,000 --> 01:51:29,760 sequences that come through and see when 2787 01:51:29,760 --> 01:51:32,159 a message came um across and when it 2788 01:51:32,159 --> 01:51:34,719 didn't. So I've got a lot of scope for 2789 01:51:34,719 --> 01:51:37,119 this, but thinking it through this way 2790 01:51:37,119 --> 01:51:38,560 really helped because what I was then 2791 01:51:38,560 --> 01:51:40,800 able to do was then start make a 2792 01:51:40,800 --> 01:51:43,119 decision about what to do next. So this 2793 01:51:43,119 --> 01:51:45,360 is essentially the results of a modeling 2794 01:51:45,360 --> 01:51:48,400 session which then feeds into a planning 2795 01:51:48,400 --> 01:51:51,440 session and my plan is very simple and 2796 01:51:51,440 --> 01:51:54,239 again I did this in the notepad because 2797 01:51:54,239 --> 01:51:55,679 I'm I'm still working on that model 2798 01:51:55,679 --> 01:51:56,960 because I don't know whether this is 2799 01:51:56,960 --> 01:51:59,760 complete or not. So what I've done is 2800 01:51:59,760 --> 01:52:01,679 I've identified the things that I think 2801 01:52:01,679 --> 01:52:04,480 are most important to explore. So you 2802 01:52:04,480 --> 01:52:07,119 can see also that the the names that I'm 2803 01:52:07,119 --> 01:52:09,199 giving these sessions are are not like 2804 01:52:09,199 --> 01:52:11,040 fixed in stone. They're not so it's not 2805 01:52:11,040 --> 01:52:12,560 like you have to do a modeling session 2806 01:52:12,560 --> 01:52:15,440 then a planning session. It's the main 2807 01:52:15,440 --> 01:52:18,560 aim for that previous session was a 2808 01:52:18,560 --> 01:52:20,159 modeling session which fed into a 2809 01:52:20,159 --> 01:52:21,360 planning session but the planning 2810 01:52:21,360 --> 01:52:24,080 session was so small right 2 minutes I 2811 01:52:24,080 --> 01:52:25,920 didn't track it as a separate session. 2812 01:52:25,920 --> 01:52:27,520 So I've included that in the modeling 2813 01:52:27,520 --> 01:52:29,280 session. So I'm being flexible about how 2814 01:52:29,280 --> 01:52:31,440 I model this. It's really important that 2815 01:52:31,440 --> 01:52:33,199 when we model our processes, we're 2816 01:52:33,199 --> 01:52:36,159 flexible about it. Um because otherwise 2817 01:52:36,159 --> 01:52:38,719 we're going to get hung up on did I do 2818 01:52:38,719 --> 01:52:40,159 this properly? Did I do this formally? 2819 01:52:40,159 --> 01:52:41,840 Am I doing this the same way that so and 2820 01:52:41,840 --> 01:52:43,360 so does this? And we we never want to 2821 01:52:43,360 --> 01:52:44,880 get hung up on those things. We want to 2822 01:52:44,880 --> 01:52:46,639 get hung up on being effective and doing 2823 01:52:46,639 --> 01:52:49,599 the right things. So here I've 2824 01:52:49,599 --> 01:52:51,599 identified what I believe are the most 2825 01:52:51,599 --> 01:52:53,520 important things to explore next. If I 2826 01:52:53,520 --> 01:52:55,199 was working on a project, I would 2827 01:52:55,199 --> 01:52:57,360 discuss this. I would then agree this, 2828 01:52:57,360 --> 01:52:59,199 but I'm not. So, I'm making the decision 2829 01:52:59,199 --> 01:53:01,440 myself. So, I'm thinking the most 2830 01:53:01,440 --> 01:53:03,599 important things are well, put a context 2831 01:53:03,599 --> 01:53:05,599 in a closed state and then try and do 2832 01:53:05,599 --> 01:53:08,480 these things to it, right? Um try and 2833 01:53:08,480 --> 01:53:10,320 have an action event. So, I can create 2834 01:53:10,320 --> 01:53:11,840 an action event on something that's 2835 01:53:11,840 --> 01:53:14,320 closed. Create a normal action event and 2836 01:53:14,320 --> 01:53:16,159 create a repeat action event on there. 2837 01:53:16,159 --> 01:53:17,920 So, I'm trying to go through. I'm also 2838 01:53:17,920 --> 01:53:19,920 aware that I need to explore the action 2839 01:53:19,920 --> 01:53:21,679 state, but action state isn't relevant 2840 01:53:21,679 --> 01:53:23,840 to created because it's always created 2841 01:53:23,840 --> 01:53:26,719 in an open state. But then I'm also 2842 01:53:26,719 --> 01:53:28,000 thinking, well, I want to change the 2843 01:53:28,000 --> 01:53:30,400 context. So if it's a an action that's 2844 01:53:30,400 --> 01:53:32,400 on a closed context, I'm going to want 2845 01:53:32,400 --> 01:53:34,400 to change the context, possibly move it 2846 01:53:34,400 --> 01:53:35,840 to another one that's closed, another 2847 01:53:35,840 --> 01:53:38,000 one that's open. And is the action 2848 01:53:38,000 --> 01:53:40,159 itself going to be open or closed? Well, 2849 01:53:40,159 --> 01:53:41,440 the only ones that's really important is 2850 01:53:41,440 --> 01:53:44,000 open. So here I'll probably explore an 2851 01:53:44,000 --> 01:53:47,040 open action which is on a closed context 2852 01:53:47,040 --> 01:53:49,280 because I know how to do that. Then see 2853 01:53:49,280 --> 01:53:51,599 if I can move it into an open context. 2854 01:53:51,599 --> 01:53:53,040 Move it into a closed context and try 2855 01:53:53,040 --> 01:53:55,199 and move it between these things. Um and 2856 01:53:55,199 --> 01:53:57,040 I'm just going to try and explore this 2857 01:53:57,040 --> 01:53:59,119 model. This would be my rough plan for 2858 01:53:59,119 --> 01:54:03,040 doing that. And I probably won't um go 2859 01:54:03,040 --> 01:54:05,360 further than this in a planning session. 2860 01:54:05,360 --> 01:54:07,520 If it was an agile project and I didn't 2861 01:54:07,520 --> 01:54:10,560 have time to do this straight away, then 2862 01:54:10,560 --> 01:54:14,000 I would probably spend time um planning 2863 01:54:14,000 --> 01:54:15,920 this out. If the functionality wasn't 2864 01:54:15,920 --> 01:54:18,480 ready yet, then I might spend time 2865 01:54:18,480 --> 01:54:20,639 planning this out in more detail and 2866 01:54:20,639 --> 01:54:23,119 writing down exactly context and close 2867 01:54:23,119 --> 01:54:25,679 state and create an action. Context 2868 01:54:25,679 --> 01:54:28,080 closed state, create a repeating action 2869 01:54:28,080 --> 01:54:30,960 um against that context. context and 2870 01:54:30,960 --> 01:54:32,880 closed state. Um, take one of the 2871 01:54:32,880 --> 01:54:34,800 actions on it and try and change the 2872 01:54:34,800 --> 01:54:36,719 context and move on to another closed 2873 01:54:36,719 --> 01:54:38,480 state. So, I would expand that at this 2874 01:54:38,480 --> 01:54:40,239 point 2875 01:54:40,239 --> 01:54:43,360 and because that's the planning is as 2876 01:54:43,360 --> 01:54:47,119 in-depth as you need it to be to either 2877 01:54:47,119 --> 01:54:49,119 remind you what you're going to do next 2878 01:54:49,119 --> 01:54:51,760 to plan it so that someone else can do 2879 01:54:51,760 --> 01:54:54,320 it to plan it so you can communicate it 2880 01:54:54,320 --> 01:54:56,880 so that people can say no and review it. 2881 01:54:56,880 --> 01:54:59,599 Planning is supporting communication and 2882 01:54:59,599 --> 01:55:02,480 it's supporting helping you think about 2883 01:55:02,480 --> 01:55:04,960 what it is your next steps are. It's 2884 01:55:04,960 --> 01:55:07,760 helping you estimate how much time am I 2885 01:55:07,760 --> 01:55:09,040 going to spend on this? Am I going to 2886 01:55:09,040 --> 01:55:12,159 have to do going forward? So, I combined 2887 01:55:12,159 --> 01:55:14,239 two things into there into a rough plan 2888 01:55:14,239 --> 01:55:15,840 cuz my assumption is I'll just go 2889 01:55:15,840 --> 01:55:18,159 straight away and do this. If for some 2890 01:55:18,159 --> 01:55:19,440 reason I don't get to go straight away 2891 01:55:19,440 --> 01:55:21,920 and do this, I can come back later and 2892 01:55:21,920 --> 01:55:24,159 expand this, right? Because it will 2893 01:55:24,159 --> 01:55:26,560 remind me what is going on. 2894 01:55:26,560 --> 01:55:29,760 it's clear enough to help me. So that 2895 01:55:29,760 --> 01:55:33,360 was a a modeling slashplanning session 2896 01:55:33,360 --> 01:55:35,199 to help me get my head around what I 2897 01:55:35,199 --> 01:55:37,760 need to do. And also I'm aware now the 2898 01:55:37,760 --> 01:55:41,360 amount of uh complexity 2899 01:55:41,360 --> 01:55:44,000 uh and relationships in here and I 2900 01:55:44,000 --> 01:55:45,679 haven't included projects in here. I 2901 01:55:45,679 --> 01:55:47,280 haven't looked to see whether a project 2902 01:55:47,280 --> 01:55:49,920 state is related to this. I'm also 2903 01:55:49,920 --> 01:55:52,320 conscious that this is very informal. So 2904 01:55:52,320 --> 01:55:55,840 there's a risk that I might not uh have 2905 01:55:55,840 --> 01:55:57,760 ex have explored the complexity 2906 01:55:57,760 --> 01:56:00,719 possible. There might be a better way of 2907 01:56:00,719 --> 01:56:02,880 modeling this such that I could use 2908 01:56:02,880 --> 01:56:04,719 techniques. Maybe there's an an actual 2909 01:56:04,719 --> 01:56:08,480 event modeling um diagramming approach 2910 01:56:08,480 --> 01:56:10,159 that I can use to help me understand 2911 01:56:10,159 --> 01:56:12,480 this. And then maybe there's um 2912 01:56:12,480 --> 01:56:16,000 different ways of uh covering that 2913 01:56:16,000 --> 01:56:18,080 automatically that just aren't springing 2914 01:56:18,080 --> 01:56:19,280 into my head at the moment. Maybe 2915 01:56:19,280 --> 01:56:21,679 there's a tool that I can use to model 2916 01:56:21,679 --> 01:56:23,599 events and have it come through. Maybe I 2917 01:56:23,599 --> 01:56:26,320 could feed this into um Graph Walker and 2918 01:56:26,320 --> 01:56:28,080 have it pull out the the states 2919 01:56:28,080 --> 01:56:29,920 properly. Maybe I can combine multiple 2920 01:56:29,920 --> 01:56:32,719 graphs um in Graph Walker and model it 2921 01:56:32,719 --> 01:56:35,040 that way because maybe I don't have to 2922 01:56:35,040 --> 01:56:37,760 use it to actually automate, but maybe I 2923 01:56:37,760 --> 01:56:40,639 can use it to generate hints that I will 2924 01:56:40,639 --> 01:56:42,560 follow. Right? So there's possible 2925 01:56:42,560 --> 01:56:45,119 options around tooling here because I'm 2926 01:56:45,119 --> 01:56:46,880 starting to think this through in a more 2927 01:56:46,880 --> 01:56:51,199 formal way. but modeling, planning, um, 2928 01:56:51,199 --> 01:56:53,760 and the tools that I've used are text 2929 01:56:53,760 --> 01:56:57,280 tools at all the time, but I've added in 2930 01:56:57,280 --> 01:56:58,800 a little bit more technology. So, this 2931 01:56:58,800 --> 01:57:00,960 is a smart pen so that I don't have to 2932 01:57:00,960 --> 01:57:03,840 take um, photographs of it and tidy them 2933 01:57:03,840 --> 01:57:07,440 up and put them on in my notes. And uh, 2934 01:57:07,440 --> 01:57:11,480 I'll see what I do next. 2935 01:57:19,520 --> 01:57:21,520 So after the recon session, it was clear 2936 01:57:21,520 --> 01:57:24,080 that while I understood 2937 01:57:24,080 --> 01:57:27,040 roughly what was going on, I really 2938 01:57:27,040 --> 01:57:30,719 needed to model it to be able to 2939 01:57:30,719 --> 01:57:33,679 approach it from a effective coverage 2940 01:57:33,679 --> 01:57:36,880 position. Different phases feed into 2941 01:57:36,880 --> 01:57:38,480 debriefs where I decide what I'm going 2942 01:57:38,480 --> 01:57:40,320 to do. Go back to planning and go right 2943 01:57:40,320 --> 01:57:42,719 now I'm going to focus on modeling to 2944 01:57:42,719 --> 01:57:46,320 work out how best to cover this and it 2945 01:57:46,320 --> 01:57:48,080 all feeds in the different sessions feed 2946 01:57:48,080 --> 01:57:50,159 into each other because we're gaining 2947 01:57:50,159 --> 01:57:51,840 more information and understanding about 2948 01:57:51,840 --> 01:57:54,239 what we're doing. So this is the note 2949 01:57:54,239 --> 01:57:58,320 that I made in my earlier uh session the 2950 01:57:58,320 --> 01:58:00,400 recon session. I needed to prep a more 2951 01:58:00,400 --> 01:58:02,080 comprehensive coverage approach because 2952 01:58:02,080 --> 01:58:04,639 I didn't test this, right? Test is in 2953 01:58:04,639 --> 01:58:06,960 quotes cuz what does test mean? But I'm 2954 01:58:06,960 --> 01:58:09,119 aware that I kind of did a cursory 2955 01:58:09,119 --> 01:58:12,719 overview of it. Um, so I did an initial 2956 01:58:12,719 --> 01:58:14,480 basic exploration, but I didn't really 2957 01:58:14,480 --> 01:58:17,520 track what I did. I didn't really make 2958 01:58:17,520 --> 01:58:19,280 decisions about this state followed by 2959 01:58:19,280 --> 01:58:22,400 this stage. So it was a bit ad hoc. I 2960 01:58:22,400 --> 01:58:24,960 may not have effectively taken notes on 2961 01:58:24,960 --> 01:58:26,400 the coverage. I could probably extract 2962 01:58:26,400 --> 01:58:28,400 that out the session, but it was easier 2963 01:58:28,400 --> 01:58:29,920 just to go right, let's just do this 2964 01:58:29,920 --> 01:58:31,760 properly. Let's think this through. 2965 01:58:31,760 --> 01:58:33,440 Let's model this and get a good 2966 01:58:33,440 --> 01:58:35,840 understanding. Rather than dive straight 2967 01:58:35,840 --> 01:58:39,760 into a diagramming tool, and there are 2968 01:58:39,760 --> 01:58:41,920 loads of very good diagramming tools, I 2969 01:58:41,920 --> 01:58:44,560 instead decided to draw it. And here I'm 2970 01:58:44,560 --> 01:58:47,599 using a a smart pen. So, it's a 2971 01:58:47,599 --> 01:58:51,360 Livescribe aer pen, which means that 2972 01:58:51,360 --> 01:58:53,440 when I draw on a notebook, it 2973 01:58:53,440 --> 01:58:56,080 automatically updates in Evernote. So, 2974 01:58:56,080 --> 01:58:57,920 I've always got an image of what I'm 2975 01:58:57,920 --> 01:59:00,639 doing. The pens can have issues. I had 2976 01:59:00,639 --> 01:59:03,840 to resend off for a new one because my 2977 01:59:03,840 --> 01:59:06,320 um pen broke, but when they work, they 2978 01:59:06,320 --> 01:59:09,199 are fantastic. And so, this was um two 2979 01:59:09,199 --> 01:59:10,719 days ago, I got a new pen, which was 2980 01:59:10,719 --> 01:59:12,560 just in time for this. So, I used that. 2981 01:59:12,560 --> 01:59:15,679 If I didn't have a smart pen, I would 2982 01:59:15,679 --> 01:59:18,080 write it down in a bit of paper and take 2983 01:59:18,080 --> 01:59:20,080 a photograph of it. And I've written 2984 01:59:20,080 --> 01:59:21,280 scripts over the years, I think 2985 01:59:21,280 --> 01:59:25,840 somewhere in GitHub, which uh use image 2986 01:59:25,840 --> 01:59:28,719 magic to straighten images and make them 2987 01:59:28,719 --> 01:59:30,400 black and white and get rid of all 2988 01:59:30,400 --> 01:59:31,840 background and other stuff. And I've 2989 01:59:31,840 --> 01:59:33,840 used that on whiteboards. And there's 2990 01:59:33,840 --> 01:59:36,000 actual tools you can use and buy where 2991 01:59:36,000 --> 01:59:38,400 you take a whiteboard photo and it will 2992 01:59:38,400 --> 01:59:41,360 um get rid of the background, straighten 2993 01:59:41,360 --> 01:59:43,840 up, make it look nicer. But the point is 2994 01:59:43,840 --> 01:59:46,320 we don't need expensive tools. We just 2995 01:59:46,320 --> 01:59:49,280 need something that supports us thinking 2996 01:59:49,280 --> 01:59:51,119 through the problem. And I make the 2997 01:59:51,119 --> 01:59:53,440 distinction between modeling and 2998 01:59:53,440 --> 01:59:57,199 creating a representation of that model. 2999 01:59:57,199 --> 01:59:59,280 Because what I'm doing here is whilst it 3000 01:59:59,280 --> 02:00:01,199 looks like I'm drawing diagrams, what 3001 02:00:01,199 --> 02:00:04,639 I'm doing is I'm modeling the entities, 3002 02:00:04,639 --> 02:00:06,560 the states, 3003 02:00:06,560 --> 02:00:08,159 the relationships, I'm trying to get 3004 02:00:08,159 --> 02:00:11,199 that in my head. What I've got on paper 3005 02:00:11,199 --> 02:00:13,599 is a representation of what is in my 3006 02:00:13,599 --> 02:00:15,520 head. What you can see here is something 3007 02:00:15,520 --> 02:00:17,679 that I would interpret. It doesn't have 3008 02:00:17,679 --> 02:00:19,280 all the bits of information. It doesn't 3009 02:00:19,280 --> 02:00:20,639 have everything that's in my model. 3010 02:00:20,639 --> 02:00:22,719 There's no screenshots there. There's 3011 02:00:22,719 --> 02:00:24,400 nothing about the actual fields that are 3012 02:00:24,400 --> 02:00:26,480 on a context. All of those are in my 3013 02:00:26,480 --> 02:00:28,639 model which are in my head. But I'm 3014 02:00:28,639 --> 02:00:31,440 making a diagrammatic representation 3015 02:00:31,440 --> 02:00:34,400 which allows me to zoom in on some of 3016 02:00:34,400 --> 02:00:37,840 those um aspects. What I'm interested in 3017 02:00:37,840 --> 02:00:41,040 modeling here is the state transitions, 3018 02:00:41,040 --> 02:00:43,599 the constraints and the relationships 3019 02:00:43,599 --> 02:00:45,679 between the different entities. And I'm 3020 02:00:45,679 --> 02:00:47,840 concentrating on two entities here which 3021 02:00:47,840 --> 02:00:51,440 are the action and the context. I'm 3022 02:00:51,440 --> 02:00:54,400 ignoring projects. So you have an 3023 02:00:54,400 --> 02:00:55,760 understanding of state transition 3024 02:00:55,760 --> 02:00:58,080 diagrams, entity life history diagrams, 3025 02:00:58,080 --> 02:01:02,239 um flow diagrams, 3026 02:01:02,239 --> 02:01:04,480 sequence diagrams, all the formal types 3027 02:01:04,480 --> 02:01:07,520 of diagrammings you can have and then 3028 02:01:07,520 --> 02:01:09,760 once you've got that understanding, 3029 02:01:09,760 --> 02:01:12,560 throw it away so that you can model 3030 02:01:12,560 --> 02:01:15,679 informally as you require. The formal 3031 02:01:15,679 --> 02:01:16,880 models are really good when you're 3032 02:01:16,880 --> 02:01:18,480 working with tools that will then do 3033 02:01:18,480 --> 02:01:20,239 something with them. Right? A formal 3034 02:01:20,239 --> 02:01:22,320 state transition diagram is really great 3035 02:01:22,320 --> 02:01:24,000 when you're working with a tool like 3036 02:01:24,000 --> 02:01:27,119 graph walker which can then interpret 3037 02:01:27,119 --> 02:01:29,599 your state transition model and uh 3038 02:01:29,599 --> 02:01:31,520 automate the application for you from 3039 02:01:31,520 --> 02:01:34,239 that model. Formal models are great when 3040 02:01:34,239 --> 02:01:35,679 they have tool support that will do 3041 02:01:35,679 --> 02:01:38,800 something beyond creating a diagram. 3042 02:01:38,800 --> 02:01:41,360 Diagrams are there to be interpreted 3043 02:01:41,360 --> 02:01:43,599 into supporting someone else's modeling 3044 02:01:43,599 --> 02:01:46,719 process. So with this modeling is a 3045 02:01:46,719 --> 02:01:49,040 fundamental skill with testing and when 3046 02:01:49,040 --> 02:01:51,920 people um people are often not aware 3047 02:01:51,920 --> 02:01:53,760 that they're modeling all the time right 3048 02:01:53,760 --> 02:01:57,040 everything that we see observe learn 3049 02:01:57,040 --> 02:01:59,280 that goes into a model in our heads very 3050 02:01:59,280 --> 02:02:01,679 often we talk about what intrinsic 3051 02:02:01,679 --> 02:02:05,280 models internal models mental models 3052 02:02:05,280 --> 02:02:07,119 doesn't matter all models are mental 3053 02:02:07,119 --> 02:02:09,520 models what we do is we create 3054 02:02:09,520 --> 02:02:11,199 diagrammatic representations or 3055 02:02:11,199 --> 02:02:14,320 communications of those to help us focus 3056 02:02:14,320 --> 02:02:16,159 or to help other people understand what 3057 02:02:16,159 --> 02:02:18,400 we're doing. I knew I had to do a 3058 02:02:18,400 --> 02:02:21,440 modeling process because the model that 3059 02:02:21,440 --> 02:02:24,000 I had after doing the recon session was 3060 02:02:24,000 --> 02:02:26,320 ambiguous. It wasn't clear. So I needed 3061 02:02:26,320 --> 02:02:29,040 to do a modeling process to get clearer 3062 02:02:29,040 --> 02:02:31,199 so that I could understand what I was 3063 02:02:31,199 --> 02:02:33,440 doing so I could build scope for going 3064 02:02:33,440 --> 02:02:36,320 forward. Very very simple concepts can 3065 02:02:36,320 --> 02:02:40,320 expand into very complex models. 3066 02:02:40,320 --> 02:02:42,880 not um complicated models but complex 3067 02:02:42,880 --> 02:02:45,760 models, rich models, models that have a 3068 02:02:45,760 --> 02:02:48,159 high degree of interaction, 3069 02:02:48,159 --> 02:02:50,400 a lot of combinations. Now the benefit 3070 02:02:50,400 --> 02:02:52,400 of formal models is that they have tool 3071 02:02:52,400 --> 02:02:54,480 support. So you have state transition 3072 02:02:54,480 --> 02:02:57,760 diagrammers that will help you um create 3073 02:02:57,760 --> 02:02:59,840 very exact state transition diagrams 3074 02:02:59,840 --> 02:03:02,400 that are exact to the spec that can then 3075 02:03:02,400 --> 02:03:05,119 be interpreted by other tools. 3076 02:03:05,119 --> 02:03:07,599 We don't need to use those. It's very 3077 02:03:07,599 --> 02:03:10,080 useful to have a grounding in those. so 3078 02:03:10,080 --> 02:03:11,360 that we understand what we're doing and 3079 02:03:11,360 --> 02:03:12,639 we understand the different uh 3080 02:03:12,639 --> 02:03:14,639 perspectives that we can create when 3081 02:03:14,639 --> 02:03:17,199 we're drawing diagrams. We can look at 3082 02:03:17,199 --> 02:03:19,599 state, we can look at the life 3083 02:03:19,599 --> 02:03:21,199 histories, we look at entities, we look 3084 02:03:21,199 --> 02:03:22,320 at attributes, we can look at 3085 02:03:22,320 --> 02:03:23,920 relationships, we can look at flows, we 3086 02:03:23,920 --> 02:03:25,679 can look at data flows, we can model the 3087 02:03:25,679 --> 02:03:27,840 data. There's a whole bunch of different 3088 02:03:27,840 --> 02:03:29,599 diagramming approaches that can support 3089 02:03:29,599 --> 02:03:33,440 us in that form of modeling. But too 3090 02:03:33,440 --> 02:03:37,199 often I see people jumping to a tool. 3091 02:03:37,199 --> 02:03:39,119 What we really need is some way of 3092 02:03:39,119 --> 02:03:41,760 supporting us with our modeling. So I 3093 02:03:41,760 --> 02:03:43,920 use pen and paper, sometimes just a 3094 02:03:43,920 --> 02:03:46,800 camera and I'll capture that, copy that 3095 02:03:46,800 --> 02:03:49,119 from wherever the photograph is stored 3096 02:03:49,119 --> 02:03:51,520 into Evernote. I I've done consultancy 3097 02:03:51,520 --> 02:03:54,000 reports which are have appendices which 3098 02:03:54,000 --> 02:03:56,800 are just diagrams drawn on paper or on 3099 02:03:56,800 --> 02:03:58,560 whiteboards. 3100 02:03:58,560 --> 02:04:00,400 I think it's important to just capture 3101 02:04:00,400 --> 02:04:02,239 and provide and then interpret around 3102 02:04:02,239 --> 02:04:04,480 it. So if I do need to create diagrams, 3103 02:04:04,480 --> 02:04:06,239 I'll use something like draw.io. That's 3104 02:04:06,239 --> 02:04:07,840 where I created the diagram that you're 3105 02:04:07,840 --> 02:04:11,280 seeing in this um set of slides. Um I 3106 02:04:11,280 --> 02:04:13,520 draw.io is free. You can download a 3107 02:04:13,520 --> 02:04:16,000 desktop version. I find it quite useful. 3108 02:04:16,000 --> 02:04:19,360 Um if I'm wanting a codebased solution, 3109 02:04:19,360 --> 02:04:21,199 um I'll use graph viz which uses a 3110 02:04:21,199 --> 02:04:24,639 domain specific language for creating uh 3111 02:04:24,639 --> 02:04:26,800 diagrams. And there's a whole bunch of 3112 02:04:26,800 --> 02:04:31,840 text to uh image diagramming tools that 3113 02:04:31,840 --> 02:04:35,119 I sometimes use as well, but I don't 3114 02:04:35,119 --> 02:04:37,679 necessarily need to use complicated 3115 02:04:37,679 --> 02:04:41,920 tools. The days where we would buy the 3116 02:04:41,920 --> 02:04:44,000 pro version of Vizio and script it have 3117 02:04:44,000 --> 02:04:46,320 gone now. so many options open for 3118 02:04:46,320 --> 02:04:50,639 creating diagrams, but I still rely on 3119 02:04:50,639 --> 02:04:52,800 pen and paper when I want to try and 3120 02:04:52,800 --> 02:04:56,080 think through the problem and change it 3121 02:04:56,080 --> 02:04:59,440 before um codifying it for more formal 3122 02:04:59,440 --> 02:05:01,360 communication processes in an actual 3123 02:05:01,360 --> 02:05:04,480 diagram. But the modeling process, it's 3124 02:05:04,480 --> 02:05:08,320 that modeling session to actually spend 3125 02:05:08,320 --> 02:05:10,560 time getting your head straight is 3126 02:05:10,560 --> 02:05:12,080 really important and that will lead on 3127 02:05:12,080 --> 02:05:16,000 to planning sessions. 3128 02:05:23,760 --> 02:05:26,239 So, another planning session. Having 3129 02:05:26,239 --> 02:05:29,840 modeled the states, I then want to plan 3130 02:05:29,840 --> 02:05:31,920 what I'm going to do next. And it's a I 3131 02:05:31,920 --> 02:05:34,719 kind of bled those two sessions together 3132 02:05:34,719 --> 02:05:36,880 because the modeling session was maybe I 3133 02:05:36,880 --> 02:05:38,639 don't know 40 minutes. And then the 3134 02:05:38,639 --> 02:05:40,560 planning was just a quick plan 3135 02:05:40,560 --> 02:05:43,199 diagrammatic drawn on paper um which 3136 02:05:43,199 --> 02:05:44,880 took about 5 minutes. So I didn't really 3137 02:05:44,880 --> 02:05:47,040 track that separately but it is the 3138 02:05:47,040 --> 02:05:49,920 concept of a planning session. And this 3139 02:05:49,920 --> 02:05:51,679 was it. This was what I planned. This 3140 02:05:51,679 --> 02:05:53,520 was my plan. 3141 02:05:53,520 --> 02:05:55,360 So I've identified the most important 3142 02:05:55,360 --> 02:05:58,400 areas to explore which is um some states 3143 02:05:58,400 --> 02:06:00,560 and some state transitions. Then I'm 3144 02:06:00,560 --> 02:06:03,440 looking at the events that an action can 3145 02:06:03,440 --> 02:06:06,560 undergo and then I'll try and map the 3146 02:06:06,560 --> 02:06:08,880 states to the actions and I'll I'll 3147 02:06:08,880 --> 02:06:11,679 explore this as a model. So that's my 3148 02:06:11,679 --> 02:06:15,280 quick plan. Now if this was a a real 3149 02:06:15,280 --> 02:06:17,760 project, what I would be doing is I 3150 02:06:17,760 --> 02:06:20,320 would be adding these as notes in a Jira 3151 02:06:20,320 --> 02:06:21,760 task or making them visible because we 3152 02:06:21,760 --> 02:06:24,000 may not do them immediately. Um putting 3153 02:06:24,000 --> 02:06:26,080 on a canban board, discussing the ideas 3154 02:06:26,080 --> 02:06:28,719 with a team. Um, if I wasn't doing it 3155 02:06:28,719 --> 02:06:31,360 immediately, then I may need to track 3156 02:06:31,360 --> 02:06:33,599 this better, expand it a little bit 3157 02:06:33,599 --> 02:06:36,480 further so I don't forget my thoughts. 3158 02:06:36,480 --> 02:06:40,320 A lot of our planning is related to how 3159 02:06:40,320 --> 02:06:41,520 quickly we're going to implement that 3160 02:06:41,520 --> 02:06:44,000 plan. How detailed do we plan, it's how 3161 02:06:44,000 --> 02:06:45,280 quickly we're going to do it. If we're 3162 02:06:45,280 --> 02:06:46,960 not going to do it immediately and we 3163 02:06:46,960 --> 02:06:48,239 think we're going to forget, but it's 3164 02:06:48,239 --> 02:06:49,840 important and we've got lot of ideas, we 3165 02:06:49,840 --> 02:06:52,639 may go into it into more depth as a plan 3166 02:06:52,639 --> 02:06:54,079 now. But if we're going to do it 3167 02:06:54,079 --> 02:06:56,639 immediately, we may plan on the fly. So 3168 02:06:56,639 --> 02:06:59,040 it depends how exploratory our project 3169 02:06:59,040 --> 02:07:00,880 is going to be. So one of the things to 3170 02:07:00,880 --> 02:07:02,400 to point out is that modeling and 3171 02:07:02,400 --> 02:07:05,760 planning are so related because when we 3172 02:07:05,760 --> 02:07:07,280 have a model and when we have a a 3173 02:07:07,280 --> 02:07:10,320 relatively formal model um that's that's 3174 02:07:10,320 --> 02:07:13,520 can be used for coverage. So planning is 3175 02:07:13,520 --> 02:07:16,880 really prioritizing parts of our model 3176 02:07:16,880 --> 02:07:18,719 coverage. 3177 02:07:18,719 --> 02:07:21,280 So I have a a model there which is a 3178 02:07:21,280 --> 02:07:23,199 diagram with the state transitions and 3179 02:07:23,199 --> 02:07:25,679 I'm going to cover those state 3180 02:07:25,679 --> 02:07:27,920 transitions when I do my testing. It's 3181 02:07:27,920 --> 02:07:30,480 going to be a coverage approach. 3182 02:07:30,480 --> 02:07:32,880 Um having a representation of the model 3183 02:07:32,880 --> 02:07:35,920 from a specific perspective state life 3184 02:07:35,920 --> 02:07:39,280 history um hierarchy flows events just 3185 02:07:39,280 --> 02:07:42,239 makes it easier to see. It makes it 3186 02:07:42,239 --> 02:07:44,320 easier to see what coverage we're going 3187 02:07:44,320 --> 02:07:46,239 to do now and what we might have to 3188 02:07:46,239 --> 02:07:48,639 leave until later. Right? Because an 3189 02:07:48,639 --> 02:07:52,239 initial plan will help us just focus 3190 02:07:52,239 --> 02:07:54,079 which allows us to maximize the 3191 02:07:54,079 --> 02:07:56,320 effectiveness of our testing. And we 3192 02:07:56,320 --> 02:07:58,560 only this is this is key. We expand our 3193 02:07:58,560 --> 02:08:01,360 plan only as far as we need to support 3194 02:08:01,360 --> 02:08:04,079 the next session. One of the issues we 3195 02:08:04,079 --> 02:08:07,280 had with uh old-fashioned structured 3196 02:08:07,280 --> 02:08:09,679 testing is that we planned too far, 3197 02:08:09,679 --> 02:08:11,679 right? We planned in so much depth we'd 3198 02:08:11,679 --> 02:08:15,119 spend months planning and create more 3199 02:08:15,119 --> 02:08:17,360 plan than we had ever got time to 3200 02:08:17,360 --> 02:08:18,880 implement and then you'd have to go 3201 02:08:18,880 --> 02:08:22,079 through planning sessions to scope down 3202 02:08:22,079 --> 02:08:23,840 and depp prioritize and it was a mess. 3203 02:08:23,840 --> 02:08:26,159 It was just a huge waste, right? But 3204 02:08:26,159 --> 02:08:29,760 that was what we did but we overplanned 3205 02:08:29,760 --> 02:08:32,480 and the what we want to do is plan 3206 02:08:32,480 --> 02:08:34,719 effectively which means minimal planning 3207 02:08:34,719 --> 02:08:38,639 to support us in the next step. And my 3208 02:08:38,639 --> 02:08:40,159 next step is going to be a coverage 3209 02:08:40,159 --> 02:08:43,920 session based on that simple plan, which 3210 02:08:43,920 --> 02:08:46,960 means I'll have to expand that plan in 3211 02:08:46,960 --> 02:08:50,679 my coverage session. 3212 02:08:59,599 --> 02:09:01,199 So I've got the concept of a coverage 3213 02:09:01,199 --> 02:09:04,159 session. And a covered session for me is 3214 02:09:04,159 --> 02:09:06,480 when I have a relatively well- 3215 02:09:06,480 --> 02:09:10,480 definfined model and a a formal 3216 02:09:10,480 --> 02:09:13,280 representation of that model and my aim 3217 02:09:13,280 --> 02:09:15,840 is to cover it. That's a coverage 3218 02:09:15,840 --> 02:09:18,159 session because I'm focused on working 3219 02:09:18,159 --> 02:09:20,639 through the uh steps. And a coverage 3220 02:09:20,639 --> 02:09:22,800 session could be as simple as here are a 3221 02:09:22,800 --> 02:09:25,440 list of acceptance criteria. 3222 02:09:25,440 --> 02:09:26,880 Check whether all these acceptance 3223 02:09:26,880 --> 02:09:29,360 criteria have been met. Here is a a mind 3224 02:09:29,360 --> 02:09:32,320 map of areas. check that all these areas 3225 02:09:32,320 --> 02:09:34,639 exist. Here is a list of status quotes. 3226 02:09:34,639 --> 02:09:36,400 Check that the API returns these status 3227 02:09:36,400 --> 02:09:40,000 codes. Right? I'm covering a specific 3228 02:09:40,000 --> 02:09:42,880 set of things. So a covering session is 3229 02:09:42,880 --> 02:09:46,159 is the first real session um in this 3230 02:09:46,159 --> 02:09:48,079 entire exercise that is actually 3231 02:09:48,079 --> 02:09:49,599 testing, right? All the rest have been 3232 02:09:49,599 --> 02:09:51,679 investigating, modeling. I've learned 3233 02:09:51,679 --> 02:09:53,520 things. I've I've found defects. I've 3234 02:09:53,520 --> 02:09:55,760 got notes. I've do this communication. 3235 02:09:55,760 --> 02:09:58,719 But this is the actual formal testing 3236 02:09:58,719 --> 02:10:00,960 session. And if I wasn't splitting all 3237 02:10:00,960 --> 02:10:03,599 of this into sessions, all the previous 3238 02:10:03,599 --> 02:10:05,360 work would be invisible, right? People 3239 02:10:05,360 --> 02:10:07,280 wouldn't know it was happening. Um there 3240 02:10:07,280 --> 02:10:10,480 would be less notes for it. It would 3241 02:10:10,480 --> 02:10:13,920 just be me doing stuff. Now the I 3242 02:10:13,920 --> 02:10:16,239 thought that the diagram that I created 3243 02:10:16,239 --> 02:10:17,760 in the modeling session was a little bit 3244 02:10:17,760 --> 02:10:19,920 weak to support a coverage session. So I 3245 02:10:19,920 --> 02:10:23,119 created a mind map to expand it. Did the 3246 02:10:23,119 --> 02:10:24,400 normal thing as I'm doing the coverage 3247 02:10:24,400 --> 02:10:26,480 session. I keep notes. Um, I actually 3248 02:10:26,480 --> 02:10:29,360 found missing items from my plan and 3249 02:10:29,360 --> 02:10:30,800 added them into my notes, which is what 3250 02:10:30,800 --> 02:10:32,960 you expect, right? Because we're doing 3251 02:10:32,960 --> 02:10:35,280 minimal planning. 3252 02:10:35,280 --> 02:10:37,679 As we go through the testing, we learn 3253 02:10:37,679 --> 02:10:41,040 more. We adjust our plan. Some things we 3254 02:10:41,040 --> 02:10:42,719 do immediately because they they feed 3255 02:10:42,719 --> 02:10:45,280 directly into the plan. Some things we 3256 02:10:45,280 --> 02:10:48,159 put off until later. But one of the key 3257 02:10:48,159 --> 02:10:50,560 things for a covered session is that I'm 3258 02:10:50,560 --> 02:10:54,480 trying to keep um additional exploration 3259 02:10:54,480 --> 02:10:56,480 to a minimum. So I'm trying to really 3260 02:10:56,480 --> 02:10:58,480 focus in on the coverage. I will still 3261 02:10:58,480 --> 02:11:00,800 be doing observation. I may do a lot of 3262 02:11:00,800 --> 02:11:02,320 interrogation, but I'm going to try and 3263 02:11:02,320 --> 02:11:05,599 not go too far outside the coverage 3264 02:11:05,599 --> 02:11:07,599 scope. So I'm I'm using the coverage as 3265 02:11:07,599 --> 02:11:11,440 a constraint to really zoom in on that 3266 02:11:11,440 --> 02:11:15,280 area. So this is my expanded plan. So, I 3267 02:11:15,280 --> 02:11:19,040 went from a very rough uh text model 3268 02:11:19,040 --> 02:11:22,480 into a a a hierarchy. Now, a lot of 3269 02:11:22,480 --> 02:11:23,920 people look at this and go, "Well, it's 3270 02:11:23,920 --> 02:11:27,520 a mind map." Well, it's a mindm tool, 3271 02:11:27,520 --> 02:11:30,639 but it's it's really a hierarchy. 3272 02:11:30,639 --> 02:11:32,560 So, I've got the context closed and I've 3273 02:11:32,560 --> 02:11:34,159 got the things I'm going to do for that 3274 02:11:34,159 --> 02:11:36,480 closed context. Now, my initial thought 3275 02:11:36,480 --> 02:11:39,119 was all these different action events I 3276 02:11:39,119 --> 02:11:41,440 would use during the state transition 3277 02:11:41,440 --> 02:11:43,360 process as well, going from closed to 3278 02:11:43,360 --> 02:11:47,040 open, but it didn't fit. So, you can see 3279 02:11:47,040 --> 02:11:49,520 that I've expanded my plan out so it's 3280 02:11:49,520 --> 02:11:51,520 very clear what I'm going to cover. It's 3281 02:11:51,520 --> 02:11:53,440 very clear that I'm not going to look at 3282 02:11:53,440 --> 02:11:55,840 dependencies at this point in time. So, 3283 02:11:55,840 --> 02:11:58,000 I can come back and look at that later. 3284 02:11:58,000 --> 02:12:00,719 Um, and I'm going to repeat some of the 3285 02:12:00,719 --> 02:12:02,800 testing for the open and the hidden. So 3286 02:12:02,800 --> 02:12:04,159 it's I mean it's I think it's clear 3287 02:12:04,159 --> 02:12:06,239 there what I'm going to do and it's a 3288 02:12:06,239 --> 02:12:08,719 very simple diagram but it's very very 3289 02:12:08,719 --> 02:12:11,599 tight and I can work through that for my 3290 02:12:11,599 --> 02:12:14,400 actual um coverage session. So as I make 3291 02:12:14,400 --> 02:12:17,280 notes um you can see that the headings 3292 02:12:17,280 --> 02:12:18,960 that come through are actually related 3293 02:12:18,960 --> 02:12:21,280 to the mind map. I'm just going through 3294 02:12:21,280 --> 02:12:24,079 mind map branch by branch and doing 3295 02:12:24,079 --> 02:12:25,840 testing and making notes as I go 3296 02:12:25,840 --> 02:12:28,239 through. And uh and I mean you'll see 3297 02:12:28,239 --> 02:12:30,480 the notes in more detail during the 3298 02:12:30,480 --> 02:12:33,280 debrief session. But I mean this having 3299 02:12:33,280 --> 02:12:34,800 this degree of coverage was useful 3300 02:12:34,800 --> 02:12:38,239 because it allowed me to explore that 3301 02:12:38,239 --> 02:12:41,599 relationship between the uh moving the 3302 02:12:41,599 --> 02:12:46,719 context state and the actions. So it 3303 02:12:46,719 --> 02:12:48,719 became very obvious that there is a 3304 02:12:48,719 --> 02:12:50,400 constraint that you can't close a 3305 02:12:50,400 --> 02:12:52,960 context when it has open actions. But 3306 02:12:52,960 --> 02:12:56,079 it's possible to add an open action to a 3307 02:12:56,079 --> 02:12:59,840 closed context. It's possible to have an 3308 02:12:59,840 --> 02:13:02,800 action on an open context and amend the 3309 02:13:02,800 --> 02:13:04,719 action so that it's moved to a closed 3310 02:13:04,719 --> 02:13:07,199 context. The constraint isn't enforced 3311 02:13:07,199 --> 02:13:08,800 in all the different combinations it 3312 02:13:08,800 --> 02:13:11,280 might expect. But having that model that 3313 02:13:11,280 --> 02:13:13,520 shows the combinations is what I was 3314 02:13:13,520 --> 02:13:15,840 exploring to allow me to see that in 3315 02:13:15,840 --> 02:13:19,079 real depth. 3316 02:13:26,400 --> 02:13:28,719 So, I've just finished an actual test 3317 02:13:28,719 --> 02:13:30,400 session. This is the first session 3318 02:13:30,400 --> 02:13:32,239 really where I've done like what you 3319 02:13:32,239 --> 02:13:35,440 might call proper testing. And because 3320 02:13:35,440 --> 02:13:38,960 what I did is I took the plan that I had 3321 02:13:38,960 --> 02:13:41,760 where I'd prioritized what I was going 3322 02:13:41,760 --> 02:13:44,239 to do and what was going to cover the 3323 02:13:44,239 --> 02:13:46,560 different states. Um, and because I'm 3324 02:13:46,560 --> 02:13:48,320 about to act on it, I expanded it out 3325 02:13:48,320 --> 02:13:50,480 into a form that I can follow. And I I'm 3326 02:13:50,480 --> 02:13:52,639 I'm calling this a coverage session 3327 02:13:52,639 --> 02:13:54,800 because I'm going to stick as much as 3328 02:13:54,800 --> 02:13:59,280 possible to the uh the model that I'm 3329 02:13:59,280 --> 02:14:01,760 using to drive this particular session 3330 02:14:01,760 --> 02:14:04,960 and it's a coverage model. So to 3331 02:14:04,960 --> 02:14:07,360 represent this, I put it in a mind map 3332 02:14:07,360 --> 02:14:11,119 and just expanded out the um states. So 3333 02:14:11,119 --> 02:14:13,679 this mind map here represents this. I've 3334 02:14:13,679 --> 02:14:16,239 got the context.closed closed. I want to 3335 02:14:16,239 --> 02:14:18,320 create an action from the homepage via 3336 02:14:18,320 --> 02:14:20,239 repeated action. And I've just expanded 3337 02:14:20,239 --> 02:14:22,079 these things out. And you can also see 3338 02:14:22,079 --> 02:14:25,360 that as I did it, um my initial thoughts 3339 02:14:25,360 --> 02:14:27,520 were I'll do the contact. Close the 3340 02:14:27,520 --> 02:14:30,320 different the action events. But uh when 3341 02:14:30,320 --> 02:14:32,560 I actually come plan it, I discover well 3342 02:14:32,560 --> 02:14:36,480 the open closed switch is really only 3343 02:14:36,480 --> 02:14:40,960 for um open actions or repeated actions. 3344 02:14:40,960 --> 02:14:43,679 And I can't really do it for um repeated 3345 02:14:43,679 --> 02:14:46,159 actions quite easily, but there are 3346 02:14:46,159 --> 02:14:48,000 repeated actions there. So I didn't have 3347 02:14:48,000 --> 02:14:51,599 to do it with the um action close 3348 02:14:51,599 --> 02:14:53,520 because you can't do you can't have this 3349 02:14:53,520 --> 02:14:55,440 multiple states happening at the same 3350 02:14:55,440 --> 02:14:57,760 time for a single user. It might be 3351 02:14:57,760 --> 02:14:59,199 possible to do that with multiple users, 3352 02:14:59,199 --> 02:15:01,520 but the timing could be quite hard. So I 3353 02:15:01,520 --> 02:15:04,000 didn't um try and explore that. So my 3354 02:15:04,000 --> 02:15:06,639 initial plan expanded 3355 02:15:06,639 --> 02:15:09,040 uh into this and it's not quite as large 3356 02:15:09,040 --> 02:15:11,280 as I was anticipating. 3357 02:15:11,280 --> 02:15:13,040 Remember I haven't covered all the 3358 02:15:13,040 --> 02:15:16,400 relationships that were in place on the 3359 02:15:16,400 --> 02:15:19,440 uh previous uh diagram covering all my 3360 02:15:19,440 --> 02:15:22,480 thoughts but it's a coverage session 3361 02:15:22,480 --> 02:15:25,119 because my aim is to cover this. I'm 3362 02:15:25,119 --> 02:15:26,560 going to work through each one of these 3363 02:15:26,560 --> 02:15:29,119 things and I'm still exploring because 3364 02:15:29,119 --> 02:15:30,880 I'm observing and I'm keep paying 3365 02:15:30,880 --> 02:15:33,599 attention to what happens. In fact, as I 3366 02:15:33,599 --> 02:15:38,639 was uh performing the testing, I noticed 3367 02:15:38,639 --> 02:15:40,320 there were opportunities for additional 3368 02:15:40,320 --> 02:15:42,000 testing that were not on this coverage 3369 02:15:42,000 --> 02:15:44,239 plan. So, I followed those up. I didn't 3370 02:15:44,239 --> 02:15:46,400 go too far because it's a coverage 3371 02:15:46,400 --> 02:15:48,719 session. And had I seen anything else I 3372 02:15:48,719 --> 02:15:50,639 want to do, I would have made notes. So, 3373 02:15:50,639 --> 02:15:53,040 here are my notes. You see with my notes 3374 02:15:53,040 --> 02:15:55,840 in this session, there's a lot more 3375 02:15:55,840 --> 02:15:58,079 evidence, right? I've taken a lot more 3376 02:15:58,079 --> 02:16:01,280 screenshots as I've gone through because 3377 02:16:01,280 --> 02:16:04,079 I'm actually testing. I actually want to 3378 02:16:04,079 --> 02:16:06,239 gather evidence as I go through. So, I 3379 02:16:06,239 --> 02:16:09,520 need tools that support me in that 3380 02:16:09,520 --> 02:16:11,199 evidence gathering in a way that is 3381 02:16:11,199 --> 02:16:14,800 fairly seamless. So, snag it, hit a 3382 02:16:14,800 --> 02:16:17,760 shortcut key, take screenshot, and paste 3383 02:16:17,760 --> 02:16:20,639 it in. I might use cloud app, take 3384 02:16:20,639 --> 02:16:23,440 screenshot. um 3385 02:16:23,440 --> 02:16:26,000 then it automatically creates a a URL 3386 02:16:26,000 --> 02:16:28,639 and I paste it in and then I can see the 3387 02:16:28,639 --> 02:16:30,159 uh screenshots afterwards. But because 3388 02:16:30,159 --> 02:16:32,639 I'm making my notes in Evernote, it's as 3389 02:16:32,639 --> 02:16:34,960 easy to copy it from Snag It as it is in 3390 02:16:34,960 --> 02:16:37,280 here. It also makes the notes pretty 3391 02:16:37,280 --> 02:16:39,280 simple and easy to read because you can 3392 02:16:39,280 --> 02:16:41,840 see where I've been, what I'm switching, 3393 02:16:41,840 --> 02:16:44,960 what I'm doing. Um so one of the 3394 02:16:44,960 --> 02:16:46,240 interesting things is I wasn't sure I 3395 02:16:46,240 --> 02:16:48,240 was actually going to be able to um test 3396 02:16:48,240 --> 02:16:50,399 the repeated actions. the repeated 3397 02:16:50,399 --> 02:16:54,080 actions are in the system. I go in and I 3398 02:16:54,080 --> 02:16:56,639 create a repeating to-do. 3399 02:16:56,639 --> 02:16:58,800 Then I have to add a new recurring 3400 02:16:58,800 --> 02:17:01,120 action and I choose the context. I want 3401 02:17:01,120 --> 02:17:02,960 to be in the closed one, but because you 3402 02:17:02,960 --> 02:17:05,120 have to set the occurrence and it starts 3403 02:17:05,120 --> 02:17:06,880 in the future. I wasn't sure this was 3404 02:17:06,880 --> 02:17:08,800 going to happen, but I experimented. 3405 02:17:08,800 --> 02:17:11,200 What I did is I set one into the past 3406 02:17:11,200 --> 02:17:13,599 and then uh when I actually went into 3407 02:17:13,599 --> 02:17:15,679 the the context, I saw that the repeated 3408 02:17:15,679 --> 02:17:18,240 action had been added. So I was able to 3409 02:17:18,240 --> 02:17:20,800 test the repeated action and repeated 3410 02:17:20,800 --> 02:17:23,760 actions were added into a closed context 3411 02:17:23,760 --> 02:17:26,880 as well. And then I just went through 3412 02:17:26,880 --> 02:17:30,240 the different combinations identified 3413 02:17:30,240 --> 02:17:32,559 making notes as I went as to which 3414 02:17:32,559 --> 02:17:34,719 context I was working with, taking the 3415 02:17:34,719 --> 02:17:37,120 screenshots to see the evidence. And all 3416 02:17:37,120 --> 02:17:39,280 of this will help me later on when I 3417 02:17:39,280 --> 02:17:42,080 review this. And the actual taking 3418 02:17:42,080 --> 02:17:44,719 evidence and making notes doesn't add an 3419 02:17:44,719 --> 02:17:47,920 awful lot more to the session time, but 3420 02:17:47,920 --> 02:17:50,719 it does add an awful lot more to the 3421 02:17:50,719 --> 02:17:53,920 authority that your session has when 3422 02:17:53,920 --> 02:17:57,040 you're debriefing or explaining or 3423 02:17:57,040 --> 02:17:59,280 showing it to people or uploading it 3424 02:17:59,280 --> 02:18:01,760 into the um tracking system that you're 3425 02:18:01,760 --> 02:18:05,920 using. All that extra um evidence just 3426 02:18:05,920 --> 02:18:07,760 adds more weight to the fact that you 3427 02:18:07,760 --> 02:18:11,040 are doing thorough testing. Um there 3428 02:18:11,040 --> 02:18:13,439 were a couple of new paths that I found 3429 02:18:13,439 --> 02:18:14,800 as I was going through because remember 3430 02:18:14,800 --> 02:18:16,719 the plan is not necessarily guaranteed 3431 02:18:16,719 --> 02:18:19,120 to be complete. It is a more expanded 3432 02:18:19,120 --> 02:18:21,679 plan than I had at the start. So I've 3433 02:18:21,679 --> 02:18:23,359 gone from something very basic to 3434 02:18:23,359 --> 02:18:26,960 something bigger. Um and then as I went 3435 02:18:26,960 --> 02:18:29,599 through I saw um paths that were new 3436 02:18:29,599 --> 02:18:33,840 because I hadn't considered uh 3437 02:18:33,840 --> 02:18:35,519 moving from the hidden to closed. Well, 3438 02:18:35,519 --> 02:18:38,559 I mean, I had in the initial um diagram, 3439 02:18:38,559 --> 02:18:40,639 but I forgot to add it into this plan. 3440 02:18:40,639 --> 02:18:43,359 So, I've added it there. I for I hadn't 3441 02:18:43,359 --> 02:18:47,120 realized that deferred might have an an 3442 02:18:47,120 --> 02:18:49,120 an option here cuz when you click the 3443 02:18:49,120 --> 02:18:50,800 drop down, there's an item to defer a 3444 02:18:50,800 --> 02:18:52,880 to-do. So, should I be able to defer a 3445 02:18:52,880 --> 02:18:55,840 to-do on a closed context uh and push it 3446 02:18:55,840 --> 02:18:57,519 off to tomorrow? So, I get reminder for 3447 02:18:57,519 --> 02:18:59,599 some context actually closed. Don't 3448 02:18:59,599 --> 02:19:02,240 know, but I tried that and I can. So I 3449 02:19:02,240 --> 02:19:04,639 will get a reminder tomorrow in contexts 3450 02:19:04,639 --> 02:19:07,760 that are closed. So um we've explored 3451 02:19:07,760 --> 02:19:10,719 fairly thoroughly 3452 02:19:10,719 --> 02:19:12,479 or have I? I don't know. But we can 3453 02:19:12,479 --> 02:19:15,359 certainly review the coverage to 3454 02:19:15,359 --> 02:19:17,200 determine whether it's thorough or not 3455 02:19:17,200 --> 02:19:19,439 and make a decision as a project. I feel 3456 02:19:19,439 --> 02:19:21,359 it's um fairly thorough. It's probably 3457 02:19:21,359 --> 02:19:25,040 more thorough than the actual 3458 02:19:25,040 --> 02:19:27,760 investigation warrants, but I don't have 3459 02:19:27,760 --> 02:19:29,439 anyone to ask a question to. And part of 3460 02:19:29,439 --> 02:19:31,840 the reason if this was a real project 3461 02:19:31,840 --> 02:19:34,639 and I was following uh an assumption 3462 02:19:34,639 --> 02:19:37,200 like this as far as I have done here, 3463 02:19:37,200 --> 02:19:39,679 this would probably be a mistake because 3464 02:19:39,679 --> 02:19:41,519 we might discover well no no it's it's 3465 02:19:41,519 --> 02:19:44,639 perfectly valid to um make all these 3466 02:19:44,639 --> 02:19:46,639 state changes on a a context that is 3467 02:19:46,639 --> 02:19:49,520 closed. The only thing we're stopping is 3468 02:19:49,520 --> 02:19:53,040 uh creating a new 3469 02:19:53,040 --> 02:19:56,399 context on a closed state. and you can 3470 02:19:56,399 --> 02:19:58,080 amend it and change it and do whatever 3471 02:19:58,080 --> 02:19:59,359 else you want to to get it on a closed 3472 02:19:59,359 --> 02:20:01,280 state. But all we've really decided is 3473 02:20:01,280 --> 02:20:03,200 when you create a new one, it can't be 3474 02:20:03,200 --> 02:20:05,200 on a closed state. That's what closed 3475 02:20:05,200 --> 02:20:07,439 context state means. And if that was the 3476 02:20:07,439 --> 02:20:11,040 answer, that would be uh fine. We'd live 3477 02:20:11,040 --> 02:20:12,560 with that as a project. If that was the 3478 02:20:12,560 --> 02:20:14,000 decision that the project has made and 3479 02:20:14,000 --> 02:20:15,120 that's how the story is being 3480 02:20:15,120 --> 02:20:16,880 implemented, we might flag that that 3481 02:20:16,880 --> 02:20:18,640 might be confusing to people and it 3482 02:20:18,640 --> 02:20:19,920 might not give the constraints they 3483 02:20:19,920 --> 02:20:23,840 want. But um the project decision is 3484 02:20:23,840 --> 02:20:25,359 kind of what we go along with and 3485 02:20:25,359 --> 02:20:27,600 there's no real bug here. It's not 3486 02:20:27,600 --> 02:20:29,760 crashing the system. It's not a massive 3487 02:20:29,760 --> 02:20:31,520 impact on anything that the user is 3488 02:20:31,520 --> 02:20:34,800 going to do. So we can let it ride. It's 3489 02:20:34,800 --> 02:20:36,880 just we're investigating it and I'm 3490 02:20:36,880 --> 02:20:39,600 pushing it further to try and see what I 3491 02:20:39,600 --> 02:20:42,399 learn about my test process. So my aim 3492 02:20:42,399 --> 02:20:44,080 is slightly different than as if if I 3493 02:20:44,080 --> 02:20:47,120 was on a a proper project. And I've made 3494 02:20:47,120 --> 02:20:49,359 notes of the additional coverage items 3495 02:20:49,359 --> 02:20:51,600 that weren't actually on the the the 3496 02:20:51,600 --> 02:20:53,600 real plan. So, this is probably the 3497 02:20:53,600 --> 02:20:57,840 first um real testing that we've done, 3498 02:20:57,840 --> 02:20:59,280 which is interesting, right? We spent 3499 02:20:59,280 --> 02:21:01,600 quite a lot of time, but I haven't 3500 02:21:01,600 --> 02:21:04,160 really done any testing up until this 3501 02:21:04,160 --> 02:21:07,200 point. And the testing also wasn't 3502 02:21:07,200 --> 02:21:08,720 particularly 3503 02:21:08,720 --> 02:21:11,840 um exploratory. I mean, I've planned it 3504 02:21:11,840 --> 02:21:16,880 three times. Um, I in advance or in a 3505 02:21:16,880 --> 02:21:19,600 model, then in advance in the 3506 02:21:19,600 --> 02:21:22,240 handwritten notes, then in a mind map, 3507 02:21:22,240 --> 02:21:24,240 and then I adjusted the plan as I went 3508 02:21:24,240 --> 02:21:25,840 through. But the whole notion of 3509 02:21:25,840 --> 02:21:28,479 exploratory testing is that we're um 3510 02:21:28,479 --> 02:21:31,200 planning and executing at the same time 3511 02:21:31,200 --> 02:21:34,000 and expanding the plan. What I have to 3512 02:21:34,000 --> 02:21:36,319 be careful about is when I find things 3513 02:21:36,319 --> 02:21:39,520 that are far off plan that I don't 3514 02:21:39,520 --> 02:21:41,520 necessarily follow them immediately. 3515 02:21:41,520 --> 02:21:44,080 Sometimes I might if it's looks really 3516 02:21:44,080 --> 02:21:46,000 serious or the risk looks high. But in 3517 02:21:46,000 --> 02:21:47,600 my notes, whenever I do that, I will 3518 02:21:47,600 --> 02:21:50,160 make a note that I've gone off track and 3519 02:21:50,160 --> 02:21:52,479 I'll put the timestamp in. If I have an 3520 02:21:52,479 --> 02:21:53,920 idea that looks like it would take me 3521 02:21:53,920 --> 02:21:55,600 off track and I don't want to follow it, 3522 02:21:55,600 --> 02:21:57,439 I will make a note in my notes for 3523 02:21:57,439 --> 02:21:59,920 something to do later on and pick that 3524 02:21:59,920 --> 02:22:02,960 up in a debrief. Um, and I've gathered a 3525 02:22:02,960 --> 02:22:05,680 lot of evidence because it's an actual 3526 02:22:05,680 --> 02:22:08,880 testing session. I think it's really key 3527 02:22:08,880 --> 02:22:11,760 in exploratory testing to spend more 3528 02:22:11,760 --> 02:22:15,280 time explaining what you did and having 3529 02:22:15,280 --> 02:22:17,760 the evidence for that than necessarily 3530 02:22:17,760 --> 02:22:19,520 planning in advance. But the planning in 3531 02:22:19,520 --> 02:22:21,840 advance is important when it's a 3532 02:22:21,840 --> 02:22:24,160 relatively complicated thing to get your 3533 02:22:24,160 --> 02:22:26,160 head around and you want to make sure 3534 02:22:26,160 --> 02:22:28,000 that you're going to get the coverage 3535 02:22:28,000 --> 02:22:31,280 that's going to help you. Um, and but 3536 02:22:31,280 --> 02:22:33,600 what I haven't done is I didn't make my 3537 02:22:33,600 --> 02:22:35,920 notes in my mind map, right? Some people 3538 02:22:35,920 --> 02:22:37,600 use mind maps, make their notes in it. I 3539 02:22:37,600 --> 02:22:40,000 don't tend to work that way um simply 3540 02:22:40,000 --> 02:22:43,600 because I like to have linear notes. I 3541 02:22:43,600 --> 02:22:47,040 like to keep things running um based on 3542 02:22:47,040 --> 02:22:49,359 the the time stamps and have it work 3543 02:22:49,359 --> 02:22:52,640 that way. Um, and at this point I still 3544 02:22:52,640 --> 02:22:55,840 haven't really done exploratory testing, 3545 02:22:55,840 --> 02:22:58,319 loose testing, following ideas as we're 3546 02:22:58,319 --> 02:23:01,200 going through, generating a lot of um, 3547 02:23:01,200 --> 02:23:03,920 paths based on the observations I'm 3548 02:23:03,920 --> 02:23:06,479 making in the system. So, we're still 3549 02:23:06,479 --> 02:23:09,920 early in the testing phase. If I jump 3550 02:23:09,920 --> 02:23:12,160 straight into an exploratory session, I 3551 02:23:12,160 --> 02:23:14,560 may not add value into the project 3552 02:23:14,560 --> 02:23:19,040 because the project has no data on what 3553 02:23:19,040 --> 02:23:21,120 it's expecting 3554 02:23:21,120 --> 02:23:23,120 the system to do. So sometimes we start 3555 02:23:23,120 --> 02:23:25,920 with the acceptance criteria. This is my 3556 02:23:25,920 --> 02:23:27,600 notion of the expanded form of the 3557 02:23:27,600 --> 02:23:30,000 acceptance criteria. When I'm 3558 02:23:30,000 --> 02:23:32,880 comfortable that this works or doesn't 3559 02:23:32,880 --> 02:23:35,359 work, then I might move more deeply into 3560 02:23:35,359 --> 02:23:38,080 more uh technical observation, 3561 02:23:38,080 --> 02:23:40,160 exploratory testing, and following the 3562 02:23:40,160 --> 02:23:42,720 the work through. But that's why this is 3563 02:23:42,720 --> 02:23:44,080 different. This is why that's why the 3564 02:23:44,080 --> 02:23:46,640 notion is it's a coverage session 3565 02:23:46,640 --> 02:23:49,760 because I'm covering a 3566 02:23:49,760 --> 02:23:55,040 predefined scope fairly tightly. Um, and 3567 02:23:55,040 --> 02:23:56,560 the so the only other tool I've really 3568 02:23:56,560 --> 02:23:59,760 added in here is the mindmap tool to 3569 02:23:59,760 --> 02:24:02,479 support me with visual planning so that 3570 02:24:02,479 --> 02:24:05,520 I can see I can think through in advance 3571 02:24:05,520 --> 02:24:07,680 what I'm doing. Clearly could be other 3572 02:24:07,680 --> 02:24:10,000 tools I could use to do that. And you 3573 02:24:10,000 --> 02:24:11,920 haven't seen a lot of formal test 3574 02:24:11,920 --> 02:24:14,240 techniques in here, but the what we're 3575 02:24:14,240 --> 02:24:17,040 doing is we're exploring um states, 3576 02:24:17,040 --> 02:24:20,240 combinations, paths. We're doing all of 3577 02:24:20,240 --> 02:24:22,720 that kind of inherently, but we're still 3578 02:24:22,720 --> 02:24:25,840 working essentially from an acceptance 3579 02:24:25,840 --> 02:24:27,760 criteria point of view. And this really 3580 02:24:27,760 --> 02:24:30,960 represents combinations of what I feel 3581 02:24:30,960 --> 02:24:35,040 are acceptance criteria for this story. 3582 02:24:35,040 --> 02:24:37,439 We go beyond the acceptance criteria 3583 02:24:37,439 --> 02:24:39,760 when we start doing exploratory testing 3584 02:24:39,760 --> 02:24:43,319 in more detail. 3585 02:24:51,200 --> 02:24:53,040 So, the notes for the coverage session 3586 02:24:53,040 --> 02:24:55,439 are pretty thorough. There's a lot more 3587 02:24:55,439 --> 02:24:57,760 notes. I gathered much more evidence 3588 02:24:57,760 --> 02:25:00,800 during testing than I do during recon. 3589 02:25:00,800 --> 02:25:03,040 But the recon's actually good practice 3590 02:25:03,040 --> 02:25:05,280 because then I know what tools I need to 3591 02:25:05,280 --> 02:25:07,280 support me during the actual testing 3592 02:25:07,280 --> 02:25:08,720 session. So, I'm ready with my 3593 02:25:08,720 --> 02:25:11,040 screenshot tool. I'm ready with a way of 3594 02:25:11,040 --> 02:25:14,399 using Evernote to to document it. Um, 3595 02:25:14,399 --> 02:25:17,280 and I tend to use Freeplane. A lot of 3596 02:25:17,280 --> 02:25:20,000 people use Xmind for their outlining or 3597 02:25:20,000 --> 02:25:21,760 mind mapping tool. I use Free Plane 3598 02:25:21,760 --> 02:25:23,520 because it is a built-in scripting 3599 02:25:23,520 --> 02:25:27,600 language. And I value flexibility and 3600 02:25:27,600 --> 02:25:30,319 um, supporting me in more ways than I do 3601 02:25:30,319 --> 02:25:32,880 necessarily aesthetics. XMind does not 3602 02:25:32,880 --> 02:25:34,560 have scripting capabilities. It does not 3603 02:25:34,560 --> 02:25:37,359 have an API. In order to use Xmind, I 3604 02:25:37,359 --> 02:25:39,200 would have to export it into a certain 3605 02:25:39,200 --> 02:25:41,520 file format, then write code that will 3606 02:25:41,520 --> 02:25:43,520 then read that file, parse it, and do 3607 02:25:43,520 --> 02:25:45,840 things, which I could do, but I don't 3608 02:25:45,840 --> 02:25:48,080 need any of that boilerplate stuff with 3609 02:25:48,080 --> 02:25:50,000 free plane because I'm working in the 3610 02:25:50,000 --> 02:25:52,160 model. I'm scripting it in the the 3611 02:25:52,160 --> 02:25:54,880 diagram itself. So, people prefer tools 3612 02:25:54,880 --> 02:25:56,720 for different reasons, but I I like free 3613 02:25:56,720 --> 02:26:00,080 plane or um free mind because it has 3614 02:26:00,080 --> 02:26:02,240 built-in scripting and is more flexible 3615 02:26:02,240 --> 02:26:04,399 for me. Now, plans may not be complete. 3616 02:26:04,399 --> 02:26:06,560 plans are unlikely to be complete 3617 02:26:06,560 --> 02:26:08,000 because we won't have thought through 3618 02:26:08,000 --> 02:26:09,760 everything. So, we have to be aware of 3619 02:26:09,760 --> 02:26:12,800 new opportunities to follow. Now, with a 3620 02:26:12,800 --> 02:26:15,520 coverage session, I follow them if they 3621 02:26:15,520 --> 02:26:17,680 are within the scope of the coverage. If 3622 02:26:17,680 --> 02:26:19,920 there are areas that I missed in the 3623 02:26:19,920 --> 02:26:22,720 planning, if it's 3624 02:26:22,720 --> 02:26:26,080 more out of scope idea, then I'm 3625 02:26:26,080 --> 02:26:28,399 unlikely to follow. I'm likely to add it 3626 02:26:28,399 --> 02:26:31,120 down as a note or a to-do or an idea and 3627 02:26:31,120 --> 02:26:32,880 feed it into a planning session via a 3628 02:26:32,880 --> 02:26:35,120 debrief. But what I do is I keep notes 3629 02:26:35,120 --> 02:26:37,760 of the extra things that I do. So it's 3630 02:26:37,760 --> 02:26:40,560 obvious in my notes for the debrief that 3631 02:26:40,560 --> 02:26:42,720 we expanded the plan. Because I plan in 3632 02:26:42,720 --> 02:26:44,560 advance, I know roughly what I want to 3633 02:26:44,560 --> 02:26:47,680 do. So I know what tooling I need. I I 3634 02:26:47,680 --> 02:26:49,680 didn't really need any extra tools for 3635 02:26:49,680 --> 02:26:52,000 this type of testing. But I did have to 3636 02:26:52,000 --> 02:26:54,080 bring in extra tools for to support my 3637 02:26:54,080 --> 02:26:56,000 planning. Like I brought in free plane 3638 02:26:56,000 --> 02:26:58,000 to support my planning. And over time 3639 02:26:58,000 --> 02:26:59,600 you'll add to the tooling on your 3640 02:26:59,600 --> 02:27:02,000 projects to support the actual processes 3641 02:27:02,000 --> 02:27:04,399 and approaches that you're taking. But a 3642 02:27:04,399 --> 02:27:07,359 coverage session is an exploratory 3643 02:27:07,359 --> 02:27:10,560 testing session that has a very tight 3644 02:27:10,560 --> 02:27:14,319 charter which is do this coverage with 3645 02:27:14,319 --> 02:27:18,240 less permission almost to to explore or 3646 02:27:18,240 --> 02:27:19,760 go off peace. It's very important that 3647 02:27:19,760 --> 02:27:24,359 we rein it in at that point. 3648 02:27:33,439 --> 02:27:35,359 So, I should really talk about issues a 3649 02:27:35,359 --> 02:27:37,280 little bit simply because if this is a 3650 02:27:37,280 --> 02:27:40,720 real project, um, I would be doing more 3651 02:27:40,720 --> 02:27:42,720 about the issues and the defects, but 3652 02:27:42,720 --> 02:27:44,399 you're not really seeing that here 3653 02:27:44,399 --> 02:27:48,000 because this is a very, uh, small 3654 02:27:48,000 --> 02:27:49,680 example. So, I've made notes, but I 3655 02:27:49,680 --> 02:27:52,160 haven't really followed them up. So I 3656 02:27:52,160 --> 02:27:54,399 have 3657 02:27:54,399 --> 02:27:58,000 seen in the system that there is 3658 02:27:58,000 --> 02:28:00,720 supposed to be the ability to move a 3659 02:28:00,720 --> 02:28:03,359 context into a closed state. There's a 3660 02:28:03,359 --> 02:28:05,920 constraint where we should not be able 3661 02:28:05,920 --> 02:28:07,840 to move a context into a closed state 3662 02:28:07,840 --> 02:28:13,920 when it has open actions. But I can um 3663 02:28:13,920 --> 02:28:19,680 add an action to a closed context. When 3664 02:28:19,680 --> 02:28:22,960 I amend the action, I cannot create an 3665 02:28:22,960 --> 02:28:25,600 action on a closed context, but the 3666 02:28:25,600 --> 02:28:27,920 drop-down shows me the closed context. 3667 02:28:27,920 --> 02:28:30,399 So perhaps it shouldn't. So there are 3668 02:28:30,399 --> 02:28:32,560 ways of I've got ways of bypassing the 3669 02:28:32,560 --> 02:28:35,120 constraint, and there are functionality 3670 02:28:35,120 --> 02:28:37,520 in the tool itself that lets me hit that 3671 02:28:37,520 --> 02:28:40,240 constraint more easily, right? I can try 3672 02:28:40,240 --> 02:28:42,319 to add an action under closed context. 3673 02:28:42,319 --> 02:28:43,760 If that constraint was really important, 3674 02:28:43,760 --> 02:28:45,120 perhaps that shouldn't even be an 3675 02:28:45,120 --> 02:28:46,640 option. So, these are the kind of things 3676 02:28:46,640 --> 02:28:49,040 that I would probably want to discuss or 3677 02:28:49,040 --> 02:28:50,880 raise on a real project. But I don't 3678 02:28:50,880 --> 02:28:53,280 know if it's a real issue here because 3679 02:28:53,280 --> 02:28:55,200 um it's an open source project. It works 3680 02:28:55,200 --> 02:28:57,680 fine. I don't know what their intent was 3681 02:28:57,680 --> 02:29:00,000 behind the requirement. But what I do 3682 02:29:00,000 --> 02:29:02,080 know is that on a real project, I would 3683 02:29:02,080 --> 02:29:04,960 not have pursued this as far, right? 3684 02:29:04,960 --> 02:29:08,560 because I used essentially that issue as 3685 02:29:08,560 --> 02:29:11,520 the reason why I did the state 3686 02:29:11,520 --> 02:29:13,600 transition testing, why the reason why I 3687 02:29:13,600 --> 02:29:15,280 combined it with the action in more 3688 02:29:15,280 --> 02:29:16,880 detail. I think that's an important 3689 02:29:16,880 --> 02:29:18,960 combination, but if it's a real project, 3690 02:29:18,960 --> 02:29:20,800 I might not have done that as early and 3691 02:29:20,800 --> 02:29:23,120 I might not have explored it as 3692 02:29:23,120 --> 02:29:25,600 thoroughly because we may not have felt 3693 02:29:25,600 --> 02:29:27,760 that that was an important uh 3694 02:29:27,760 --> 02:29:30,080 combination or relationship. So, if this 3695 02:29:30,080 --> 02:29:32,160 is an issue, when would it be found? 3696 02:29:32,160 --> 02:29:35,120 Right? So if it was a traditional 3697 02:29:35,120 --> 02:29:37,600 structured or process, we're writing 3698 02:29:37,600 --> 02:29:40,479 test cases, scripts or whatever else, 3699 02:29:40,479 --> 02:29:43,840 hopefully when we're analyzing whatever 3700 02:29:43,840 --> 02:29:45,200 requirements or documents and we're 3701 02:29:45,200 --> 02:29:47,280 writing our test cases and conditions, 3702 02:29:47,280 --> 02:29:48,880 hopefully we would have found it then. 3703 02:29:48,880 --> 02:29:50,399 Hopefully we would have asked questions 3704 02:29:50,399 --> 02:29:52,640 then we would have gained clarification. 3705 02:29:52,640 --> 02:29:54,560 The issue with that process is it might 3706 02:29:54,560 --> 02:29:58,800 take weeks or days or months to get to 3707 02:29:58,800 --> 02:30:00,319 that point. Very often those kind of 3708 02:30:00,319 --> 02:30:02,479 projects you would track all your 3709 02:30:02,479 --> 02:30:04,319 questions and then every couple of weeks 3710 02:30:04,319 --> 02:30:06,560 have a meeting to clarify questions but 3711 02:30:06,560 --> 02:30:08,319 you'd be working on those assumptions. 3712 02:30:08,319 --> 02:30:11,200 So you'd have a lot of waste and rework. 3713 02:30:11,200 --> 02:30:14,399 Um so the one of the issues with a a 3714 02:30:14,399 --> 02:30:16,960 very tight scripted process is that 3715 02:30:16,960 --> 02:30:18,800 these kind of problems can take a long 3716 02:30:18,800 --> 02:30:20,720 time to find. Someone has to go away get 3717 02:30:20,720 --> 02:30:22,720 the answer then there's a big discussion 3718 02:30:22,720 --> 02:30:24,560 in a meeting. Should we do this? Then 3719 02:30:24,560 --> 02:30:26,960 some has to bring in the designers and 3720 02:30:26,960 --> 02:30:29,200 the analysts and it can take a long time 3721 02:30:29,200 --> 02:30:32,800 to get this stuff fixed. But that QA and 3722 02:30:32,800 --> 02:30:35,760 clarification process is essentially an 3723 02:30:35,760 --> 02:30:38,560 an exploratory process asking questions 3724 02:30:38,560 --> 02:30:40,560 um thinking through possibilities. 3725 02:30:40,560 --> 02:30:43,600 That's an exploratory process. Um we do 3726 02:30:43,600 --> 02:30:46,479 exploration during um traditional 3727 02:30:46,479 --> 02:30:49,760 structured uh test case test scripting 3728 02:30:49,760 --> 02:30:52,080 type processes. It's just that there's 3729 02:30:52,080 --> 02:30:53,680 it's in advance and there's a lot of 3730 02:30:53,680 --> 02:30:56,000 scope for waste. If it was an agile 3731 02:30:56,000 --> 02:30:58,319 project, then hopefully we would have 3732 02:30:58,319 --> 02:31:01,280 found it during a a story grooming 3733 02:31:01,280 --> 02:31:04,080 session or when the story is pitched to 3734 02:31:04,080 --> 02:31:06,000 the team, we would ask questions about 3735 02:31:06,000 --> 02:31:10,240 it. Um, if not, then would it be found 3736 02:31:10,240 --> 02:31:12,000 in an acceptance criteria? Well, 3737 02:31:12,000 --> 02:31:15,520 probably not because uh we didn't ask 3738 02:31:15,520 --> 02:31:17,359 the question. So we don't necessarily 3739 02:31:17,359 --> 02:31:20,080 know that one of the acceptance criteria 3740 02:31:20,080 --> 02:31:22,720 is the closed context should not be 3741 02:31:22,720 --> 02:31:25,920 shown in the list of contacts when 3742 02:31:25,920 --> 02:31:27,680 creating an action unless someone 3743 02:31:27,680 --> 02:31:29,600 prompted that by thinking it through 3744 02:31:29,600 --> 02:31:31,760 maybe the product owner someone did an 3745 02:31:31,760 --> 02:31:34,800 exploratory thinking process a modeling 3746 02:31:34,800 --> 02:31:36,720 process to work out the implication of 3747 02:31:36,720 --> 02:31:39,120 what they're doing. But again it's an 3748 02:31:39,120 --> 02:31:41,520 exploratory process. This is one of the 3749 02:31:41,520 --> 02:31:43,920 keys to do in exploratory testing. 3750 02:31:43,920 --> 02:31:46,479 Understanding that exploratory testing 3751 02:31:46,479 --> 02:31:49,040 doesn't just mean when we're hands-on at 3752 02:31:49,040 --> 02:31:51,200 the keyboard. It's the whole notion of 3753 02:31:51,200 --> 02:31:53,760 exploring the models, the requirements, 3754 02:31:53,760 --> 02:31:55,920 the interactions, the processes, how 3755 02:31:55,920 --> 02:31:57,840 we're building things, the technology 3756 02:31:57,840 --> 02:32:00,720 we're using. All of this that is where 3757 02:32:00,720 --> 02:32:02,319 we explore and that is how we find 3758 02:32:02,319 --> 02:32:04,319 things early. 3759 02:32:04,319 --> 02:32:06,720 But we have to be working in projects 3760 02:32:06,720 --> 02:32:10,160 that believe that that is suitable. Now 3761 02:32:10,160 --> 02:32:12,960 ultimately projects make decisions about 3762 02:32:12,960 --> 02:32:16,319 defects, right? To me this seems like a 3763 02:32:16,319 --> 02:32:18,720 mismatch in streams. If we have a 3764 02:32:18,720 --> 02:32:21,680 constraint and it's too easy to bypass, 3765 02:32:21,680 --> 02:32:25,040 then it's almost a worthless constraint 3766 02:32:25,040 --> 02:32:28,479 cuz it it it only triggers at one point 3767 02:32:28,479 --> 02:32:30,000 uh or two points. When I try and create 3768 02:32:30,000 --> 02:32:32,240 an action on a closed one, it says no. 3769 02:32:32,240 --> 02:32:34,000 But I should just not give people the 3770 02:32:34,000 --> 02:32:36,399 option. When I try and move a state to 3771 02:32:36,399 --> 02:32:38,479 closed when it has open actions, that's 3772 02:32:38,479 --> 02:32:40,240 valid. But then why don't I have the 3773 02:32:40,240 --> 02:32:42,479 same thing when I try and change an 3774 02:32:42,479 --> 02:32:46,000 action to move on to a a closed context 3775 02:32:46,000 --> 02:32:47,680 and surely I should receive the same 3776 02:32:47,680 --> 02:32:49,439 constraint. We're not enforcing it 3777 02:32:49,439 --> 02:32:51,680 enough. The project would have to decide 3778 02:32:51,680 --> 02:32:53,600 whether it's the problem for me in terms 3779 02:32:53,600 --> 02:32:56,000 of the impact on the system reliability, 3780 02:32:56,000 --> 02:32:58,479 the robustness, the data integrity. None 3781 02:32:58,479 --> 02:33:00,479 of that matters. The system was not 3782 02:33:00,479 --> 02:33:02,240 built with this constraint in mind. So 3783 02:33:02,240 --> 02:33:04,479 this has been added later. So we might 3784 02:33:04,479 --> 02:33:07,359 not push hard on this. If the user 3785 02:33:07,359 --> 02:33:10,240 decides, look, I I just want to stop 3786 02:33:10,240 --> 02:33:12,399 moving a context to closed when it has 3787 02:33:12,399 --> 02:33:14,479 open actions, right? That's cuz I keep 3788 02:33:14,479 --> 02:33:16,080 doing that and it's wrong and it annoys 3789 02:33:16,080 --> 02:33:17,920 me, so I just want a constraint there. 3790 02:33:17,920 --> 02:33:19,280 Fine. I just don't want to be able to 3791 02:33:19,280 --> 02:33:22,640 accidentally add an action to a closed 3792 02:33:22,640 --> 02:33:25,520 context. So, we put that in. That's 3793 02:33:25,520 --> 02:33:27,439 fine, right? Projects make decisions 3794 02:33:27,439 --> 02:33:30,160 about what is a defect and what is not. 3795 02:33:30,160 --> 02:33:32,319 We have to be very careful when we're 3796 02:33:32,319 --> 02:33:35,600 advocating for stuff that we're actually 3797 02:33:35,600 --> 02:33:38,560 fighting the right battles. It's not an 3798 02:33:38,560 --> 02:33:41,680 easy thing to resolve, but all of this 3799 02:33:41,680 --> 02:33:44,080 requires an exploratory process to 3800 02:33:44,080 --> 02:33:46,399 investigate whether the things that we 3801 02:33:46,399 --> 02:33:49,200 found are actually defects or not. And 3802 02:33:49,200 --> 02:33:51,200 we do that as a team. We do that as a 3803 02:33:51,200 --> 02:33:54,200 project. 3804 02:34:02,000 --> 02:34:03,600 Okay, so let's talk a little bit about 3805 02:34:03,600 --> 02:34:06,000 tooling. I mean, I know when I do this 3806 02:34:06,000 --> 02:34:08,880 session as a conference talk, people are 3807 02:34:08,880 --> 02:34:10,720 going to be much more interested in 3808 02:34:10,720 --> 02:34:13,280 well, what tools did I use? Um, and I 3809 02:34:13,280 --> 02:34:14,800 know that I'm going to be disappointing 3810 02:34:14,800 --> 02:34:16,479 them because for me, the important thing 3811 02:34:16,479 --> 02:34:18,479 is what are all the processes? What are 3812 02:34:18,479 --> 02:34:21,520 the thinking approaches that we use? 3813 02:34:21,520 --> 02:34:23,600 tooling is just something that we use to 3814 02:34:23,600 --> 02:34:26,960 support um the testing. But what's key 3815 02:34:26,960 --> 02:34:28,640 about tooling is well, what actually 3816 02:34:28,640 --> 02:34:32,240 drives it. So for me, what drives my 3817 02:34:32,240 --> 02:34:34,720 choice of tooling is I need to be able 3818 02:34:34,720 --> 02:34:36,640 to observe the system. I need to be able 3819 02:34:36,640 --> 02:34:38,000 to see what's happening. I need to be 3820 02:34:38,000 --> 02:34:40,319 able to monitor and receive alerts. 3821 02:34:40,319 --> 02:34:43,040 That's what observation means for me. I 3822 02:34:43,040 --> 02:34:44,479 need to be able to interrogate, which 3823 02:34:44,479 --> 02:34:46,399 means stopping what I'm doing with 3824 02:34:46,399 --> 02:34:49,600 testing, then specifically targeting an 3825 02:34:49,600 --> 02:34:52,720 area of the system and interrogating the 3826 02:34:52,720 --> 02:34:54,399 data that's there or looking back 3827 02:34:54,399 --> 02:34:55,680 through the previous locks and 3828 02:34:55,680 --> 02:34:57,920 interrogating it for more information. 3829 02:34:57,920 --> 02:34:59,520 Observation is something that happens at 3830 02:34:59,520 --> 02:35:02,000 the same time as testing. 3831 02:35:02,000 --> 02:35:04,080 Interrogation is something I have to 3832 02:35:04,080 --> 02:35:08,399 pause my testing in order to go and do. 3833 02:35:08,399 --> 02:35:12,800 Manipulation is where I uh change the 3834 02:35:12,800 --> 02:35:14,880 data where I create inputs for the 3835 02:35:14,880 --> 02:35:18,479 system. Can I manipulate the uh ATP 3836 02:35:18,479 --> 02:35:19,840 traffic? So I'll create something at the 3837 02:35:19,840 --> 02:35:22,640 GUI um breakpoint the traffic change the 3838 02:35:22,640 --> 02:35:24,240 traffic to try and bypass the GUI 3839 02:35:24,240 --> 02:35:25,840 validation and see if the server can 3840 02:35:25,840 --> 02:35:28,160 handle it. Can I manipulate this at an 3841 02:35:28,160 --> 02:35:30,160 API level? Can I manipulate this at 3842 02:35:30,160 --> 02:35:32,160 database level? 3843 02:35:32,160 --> 02:35:35,200 needs tools in order to do more than 3844 02:35:35,200 --> 02:35:37,280 just work with the graphical user 3845 02:35:37,280 --> 02:35:39,520 interface. And then I have all the 3846 02:35:39,520 --> 02:35:40,960 tooling that I need for my admin 3847 02:35:40,960 --> 02:35:42,640 support. And there's very often more 3848 02:35:42,640 --> 02:35:44,880 tooling here than anywhere else. So, I 3849 02:35:44,880 --> 02:35:47,520 need um tools for my process like 3850 02:35:47,520 --> 02:35:50,640 tracking my tasks, recording my time, 3851 02:35:50,640 --> 02:35:52,240 gathering the evidence, taking 3852 02:35:52,240 --> 02:35:53,840 screenshots, where am I going to put 3853 02:35:53,840 --> 02:35:55,920 this, is it under version control, how 3854 02:35:55,920 --> 02:35:57,520 am I going to take my notes, how am I 3855 02:35:57,520 --> 02:36:00,479 going to um draw my models, all of these 3856 02:36:00,479 --> 02:36:04,560 um admin type aspects are are what's 3857 02:36:04,560 --> 02:36:07,760 going to drive my tooling. So 3858 02:36:07,760 --> 02:36:10,960 observation is seeing stuff in real time 3859 02:36:10,960 --> 02:36:13,439 where I'll be doing some testing with a 3860 02:36:13,439 --> 02:36:15,680 proxy open and I'll see the traffic. So 3861 02:36:15,680 --> 02:36:17,520 I'll see whether there's any status 3862 02:36:17,520 --> 02:36:20,160 codes that are not what I expect. That's 3863 02:36:20,160 --> 02:36:21,680 observing 3864 02:36:21,680 --> 02:36:23,680 um and seeing in real time which allows 3865 02:36:23,680 --> 02:36:26,399 me to take action to quickly catch 3866 02:36:26,399 --> 02:36:29,040 issues JavaScript errors appearing in 3867 02:36:29,040 --> 02:36:31,120 the console. Observation is what 3868 02:36:31,120 --> 02:36:33,359 supports monitoring. We we can't monitor 3869 02:36:33,359 --> 02:36:36,000 unless we can observe. Observation is 3870 02:36:36,000 --> 02:36:39,520 key to creating alerts. Uh if there's 3871 02:36:39,520 --> 02:36:41,760 any errors in a log or if one of the 3872 02:36:41,760 --> 02:36:44,399 servers goes down as we're testing, we 3873 02:36:44,399 --> 02:36:46,399 have something in the background using 3874 02:36:46,399 --> 02:36:49,120 the observation approach to monitor and 3875 02:36:49,120 --> 02:36:52,960 alert us. So interrogation is deep dives 3876 02:36:52,960 --> 02:36:55,280 after doing something. So perhaps I 3877 02:36:55,280 --> 02:36:58,000 observed something, then I pause and I 3878 02:36:58,000 --> 02:37:00,479 interrogate the observation in more 3879 02:37:00,479 --> 02:37:02,479 detail. So I mean it could be just 3880 02:37:02,479 --> 02:37:04,960 seconds after but it's still after the 3881 02:37:04,960 --> 02:37:07,840 testing process. Um it's more we get 3882 02:37:07,840 --> 02:37:10,800 more data when we interrogate than we do 3883 02:37:10,800 --> 02:37:12,880 when we're observing because when we're 3884 02:37:12,880 --> 02:37:14,479 observing we can only we're observing 3885 02:37:14,479 --> 02:37:16,479 like the guey and the traffic and a 3886 02:37:16,479 --> 02:37:18,240 bunch of other things. So there's a lot 3887 02:37:18,240 --> 02:37:19,920 of information there. But when we're 3888 02:37:19,920 --> 02:37:21,680 interrogating we're zooming in and we're 3889 02:37:21,680 --> 02:37:23,439 seeing all the headers. We would never 3890 02:37:23,439 --> 02:37:26,319 be able to monitor or observe those 3891 02:37:26,319 --> 02:37:28,560 manually. But we can interrogate them to 3892 02:37:28,560 --> 02:37:30,319 see all the headers on a request and see 3893 02:37:30,319 --> 02:37:33,200 if they're what we expect. Manipulation 3894 02:37:33,200 --> 02:37:36,080 is our ability to change stuff which is 3895 02:37:36,080 --> 02:37:38,880 inputting data, creating uh values, 3896 02:37:38,880 --> 02:37:41,359 deleting things, using default static 3897 02:37:41,359 --> 02:37:44,160 data, repeating requests, using the API, 3898 02:37:44,160 --> 02:37:46,800 working at the database, sshing into the 3899 02:37:46,800 --> 02:37:50,240 box, all of these manipulation aspects. 3900 02:37:50,240 --> 02:37:52,160 And that's why we need more tools and we 3901 02:37:52,160 --> 02:37:55,120 need permissions cuz technology will 3902 02:37:55,120 --> 02:37:57,359 limit us in terms of our observation, 3903 02:37:57,359 --> 02:37:59,200 interrogation and manipulation and so 3904 02:37:59,200 --> 02:38:01,040 will our knowledge. So will our skill 3905 02:38:01,040 --> 02:38:03,040 sets and these are the things that are 3906 02:38:03,040 --> 02:38:05,520 very easy to work on as we are testing 3907 02:38:05,520 --> 02:38:08,560 applications because we want to improve 3908 02:38:08,560 --> 02:38:10,160 our abilities to test the application. 3909 02:38:10,160 --> 02:38:11,680 Other people want us to improve our 3910 02:38:11,680 --> 02:38:14,000 abilities to test the application. So I 3911 02:38:14,000 --> 02:38:16,479 think you rarely receive push back if 3912 02:38:16,479 --> 02:38:19,439 you're training yourself on the job to 3913 02:38:19,439 --> 02:38:21,520 interrogate, observe and manipulate in 3914 02:38:21,520 --> 02:38:23,920 more detail and to learn the technology 3915 02:38:23,920 --> 02:38:25,920 that the application is using. Now 3916 02:38:25,920 --> 02:38:29,120 evidence gathering is absolutely key. So 3917 02:38:29,120 --> 02:38:31,760 we need a lot of tooling for this. Um 3918 02:38:31,760 --> 02:38:34,319 normally I put this into my kind of 3919 02:38:34,319 --> 02:38:39,200 modeling type of in my Morim model the 3920 02:38:39,200 --> 02:38:40,800 modeling observation reflection 3921 02:38:40,800 --> 02:38:42,960 interrogation and manipulation. That's 3922 02:38:42,960 --> 02:38:45,040 it's kind of the modeling that this is 3923 02:38:45,040 --> 02:38:46,800 but I pulled out as evidence gathering 3924 02:38:46,800 --> 02:38:49,120 because a lot of people may not 3925 02:38:49,120 --> 02:38:51,200 understand the modeling part or may see 3926 02:38:51,200 --> 02:38:53,040 that as part of a session whereas 3927 02:38:53,040 --> 02:38:54,880 evidence gathering is a process that we 3928 02:38:54,880 --> 02:38:58,800 use in parallel with our testing. So 3929 02:38:58,800 --> 02:39:00,560 we're recording the observations we 3930 02:39:00,560 --> 02:39:03,760 make. Now I was using Evernote for most 3931 02:39:03,760 --> 02:39:05,600 of the note takingaking but very often 3932 02:39:05,600 --> 02:39:08,640 I'll use that in a text editor. The PDF 3933 02:39:08,640 --> 02:39:10,640 that you have of my notes was created 3934 02:39:10,640 --> 02:39:13,280 using marked which is a markdown viewer. 3935 02:39:13,280 --> 02:39:15,680 Very often I'll use pandoc. And to 3936 02:39:15,680 --> 02:39:18,160 generate these things I use the 3937 02:39:18,160 --> 02:39:21,439 livescribe ager pen to automatically 3938 02:39:21,439 --> 02:39:24,000 create the diagrams in Evernote. Two 3939 02:39:24,000 --> 02:39:26,720 screen capture tools snag and cloud app. 3940 02:39:26,720 --> 02:39:29,439 Snag it mostly for the static images and 3941 02:39:29,439 --> 02:39:32,319 cloud app for the animated gifts. But I 3942 02:39:32,319 --> 02:39:34,319 the to there's a lot of tools there to 3943 02:39:34,319 --> 02:39:36,319 support because notetaking and evidence 3944 02:39:36,319 --> 02:39:39,840 gathering is so important in the actual 3945 02:39:39,840 --> 02:39:43,520 testing later on I use a proxy tool and 3946 02:39:43,520 --> 02:39:45,600 I pick a proxy tool that allows me to 3947 02:39:45,600 --> 02:39:48,080 save the sessions again for evidence 3948 02:39:48,080 --> 02:39:50,319 gathering to support later interrogation 3949 02:39:50,319 --> 02:39:52,560 support later looking at and seeing 3950 02:39:52,560 --> 02:39:55,200 whether I did the testing that I want. I 3951 02:39:55,200 --> 02:39:57,359 mean, if you only included tools for 3952 02:39:57,359 --> 02:39:59,600 evidence gathering, um you'll be in a a 3953 02:39:59,600 --> 02:40:02,319 good place to um support your 3954 02:40:02,319 --> 02:40:04,319 communication processes, you may not be 3955 02:40:04,319 --> 02:40:06,319 in a good place to really go deep in the 3956 02:40:06,319 --> 02:40:09,040 system. But if you only have tools, then 3957 02:40:09,040 --> 02:40:10,960 put the tools in your evidence 3958 02:40:10,960 --> 02:40:13,200 gathering. So in summary to that is what 3959 02:40:13,200 --> 02:40:15,040 drives tooling? Well, it's the needs of 3960 02:40:15,040 --> 02:40:18,160 testing. But we have to identify those 3961 02:40:18,160 --> 02:40:21,359 needs. So I identify it from models of 3962 02:40:21,359 --> 02:40:22,880 uh observation, interrogation, 3963 02:40:22,880 --> 02:40:25,680 manipulation, and modeling. Other people 3964 02:40:25,680 --> 02:40:27,680 will have different ways of identifying 3965 02:40:27,680 --> 02:40:29,840 their needs, but they'll probably end up 3966 02:40:29,840 --> 02:40:31,920 in the same position. So specifically 3967 02:40:31,920 --> 02:40:34,399 for the web, I can test blind, which 3968 02:40:34,399 --> 02:40:36,000 means I don't have any way to observe or 3969 02:40:36,000 --> 02:40:39,120 interrogate or I can add tooling. And 3970 02:40:39,120 --> 02:40:41,359 with the web, we have tools out the box 3971 02:40:41,359 --> 02:40:43,040 like the dev tools in the browser 3972 02:40:43,040 --> 02:40:46,160 itself, or proxy tools. Both dev tools 3973 02:40:46,160 --> 02:40:48,080 and proxy tools support observation and 3974 02:40:48,080 --> 02:40:51,680 interrogation. I prefer proxy tools 3975 02:40:51,680 --> 02:40:54,240 because it's a lot easier for me to 3976 02:40:54,240 --> 02:40:58,080 observe the DOM and the traffic at the 3977 02:40:58,080 --> 02:40:59,760 same time with a proxy tool because I 3978 02:40:59,760 --> 02:41:01,600 can use the dev tools for the DOM and 3979 02:41:01,600 --> 02:41:03,520 the proxy tools for the traffic. So I 3980 02:41:03,520 --> 02:41:05,439 have multiple observation points at the 3981 02:41:05,439 --> 02:41:07,359 same time. In terms of interrogation and 3982 02:41:07,359 --> 02:41:10,479 manipulation, um the proxy tools do 3983 02:41:10,479 --> 02:41:13,359 that, some of the dev tools do that, 3984 02:41:13,359 --> 02:41:16,399 some don't. So I gain consistency cross 3985 02:41:16,399 --> 02:41:19,439 browser by using the proxy tools for the 3986 02:41:19,439 --> 02:41:22,000 HTTP traffic. But one of the keys that 3987 02:41:22,000 --> 02:41:25,280 we have is that the technology that we 3988 02:41:25,280 --> 02:41:28,720 use will require different tools. So we 3989 02:41:28,720 --> 02:41:31,520 have our needs for testing but then the 3990 02:41:31,520 --> 02:41:34,720 technology is what really chooses the 3991 02:41:34,720 --> 02:41:37,760 specific tool that we use to implement 3992 02:41:37,760 --> 02:41:41,399 those needs. 3993 02:41:49,040 --> 02:41:52,080 Okay, so back to the testing. So this is 3994 02:41:52,080 --> 02:41:54,240 uh an exploratory session. Um the 3995 02:41:54,240 --> 02:41:56,240 coverage is essentially an exploratory 3996 02:41:56,240 --> 02:41:57,760 session. It's just it's very 3997 02:41:57,760 --> 02:42:00,560 constrained. So I haven't described that 3998 02:42:00,560 --> 02:42:02,160 as an exploratory session. Really all 3999 02:42:02,160 --> 02:42:04,800 our sessions are exploratory. 4000 02:42:04,800 --> 02:42:06,399 So here what I'm talking about is 4001 02:42:06,399 --> 02:42:08,160 something where I have much more free 4002 02:42:08,160 --> 02:42:10,560 reign. Um, and I'm calling that a 4003 02:42:10,560 --> 02:42:12,479 technical exploratory session because 4004 02:42:12,479 --> 02:42:16,160 it's really being driven by technology 4005 02:42:16,160 --> 02:42:19,359 aims, technology constraints. 4006 02:42:19,359 --> 02:42:22,319 So, having done a coverage session, I'm 4007 02:42:22,319 --> 02:42:23,280 then going to say, "All right, well, 4008 02:42:23,280 --> 02:42:26,240 let's look at this in a bit more detail 4009 02:42:26,240 --> 02:42:30,560 at a technology level. So when I'm 4010 02:42:30,560 --> 02:42:32,399 looking at the changing of the state in 4011 02:42:32,399 --> 02:42:34,479 the context, I want to look at the 4012 02:42:34,479 --> 02:42:37,680 traffic that's involved. Uh so a much 4013 02:42:37,680 --> 02:42:40,000 more lower level to see whether that 4014 02:42:40,000 --> 02:42:41,680 triggers anything. I don't know what's 4015 02:42:41,680 --> 02:42:44,399 in there yet. I haven't seen it. So I'm 4016 02:42:44,399 --> 02:42:46,960 giving myself permission to look more 4017 02:42:46,960 --> 02:42:49,920 deeply at the system and explore it and 4018 02:42:49,920 --> 02:42:52,080 push it as we see fit at the time. So 4019 02:42:52,080 --> 02:42:55,439 this is a a real true in quotes 4020 02:42:55,439 --> 02:42:57,760 exploratory session. I don't really know 4021 02:42:57,760 --> 02:42:59,040 how long we're going to spend. I don't 4022 02:42:59,040 --> 02:43:00,240 know how long it's going to take. I 4023 02:43:00,240 --> 02:43:01,359 don't really know what I'm going to find 4024 02:43:01,359 --> 02:43:04,479 out. I'm going to have to extract 4025 02:43:04,479 --> 02:43:06,880 coverage from this later on in a 4026 02:43:06,880 --> 02:43:08,160 debrief. I think that's the real 4027 02:43:08,160 --> 02:43:09,840 difference between an exploratory 4028 02:43:09,840 --> 02:43:12,479 session and a coverage session. Coverage 4029 02:43:12,479 --> 02:43:14,960 session, we come in knowing what 4030 02:43:14,960 --> 02:43:16,800 coverage we're going to try and achieve. 4031 02:43:16,800 --> 02:43:19,840 Then we might achieve a bit more or we 4032 02:43:19,840 --> 02:43:21,920 might descope some during the session. 4033 02:43:21,920 --> 02:43:24,560 So the debrief is there. But with a real 4034 02:43:24,560 --> 02:43:25,920 exploratory session, we may not really 4035 02:43:25,920 --> 02:43:27,280 know what we're going to cover. So we 4036 02:43:27,280 --> 02:43:28,960 have to pull that out retrospectively. 4037 02:43:28,960 --> 02:43:32,080 So it's kind of like a spectrum from um 4038 02:43:32,080 --> 02:43:35,200 complete coverage to 4039 02:43:35,200 --> 02:43:37,280 complete free reign and exploratory. And 4040 02:43:37,280 --> 02:43:38,960 the closer you are to free reign 4041 02:43:38,960 --> 02:43:40,560 exploratory, the more debriefing you're 4042 02:43:40,560 --> 02:43:42,000 going to have to do to pull out the 4043 02:43:42,000 --> 02:43:45,520 coverage to see what you've done. 4044 02:43:45,520 --> 02:43:48,479 So the reason that I'm calling this a 4045 02:43:48,479 --> 02:43:51,200 technical exploratory session is because 4046 02:43:51,200 --> 02:43:53,359 I'm working specifically a technical 4047 02:43:53,359 --> 02:43:55,120 level. An exploratory session might be 4048 02:43:55,120 --> 02:43:57,359 more about the functionality, the the 4049 02:43:57,359 --> 02:44:00,800 users, um, how the GUI works. But a 4050 02:44:00,800 --> 02:44:02,640 technical one is basically saying, I 4051 02:44:02,640 --> 02:44:04,880 want you to go below the covers. I want 4052 02:44:04,880 --> 02:44:06,479 and I need tools for this. I'm going to 4053 02:44:06,479 --> 02:44:08,560 manipulate a much lower level. It's 4054 02:44:08,560 --> 02:44:10,000 going to resend requests. I'm going to 4055 02:44:10,000 --> 02:44:12,640 do DOM manipulation to bypass it. Now, 4056 02:44:12,640 --> 02:44:15,120 the testing can be driven by the 4057 02:44:15,120 --> 02:44:17,680 technical observations, right? Like, 4058 02:44:17,680 --> 02:44:19,200 well, what happens if I change that? I 4059 02:44:19,200 --> 02:44:20,800 look at it in the DOM. I see that it's 4060 02:44:20,800 --> 02:44:22,720 got a constraint. What happens if I 4061 02:44:22,720 --> 02:44:24,399 bypass that constraint? What if I remove 4062 02:44:24,399 --> 02:44:26,000 that constraint? What if I add more 4063 02:44:26,000 --> 02:44:28,240 fields in? What if I do things that I 4064 02:44:28,240 --> 02:44:30,560 can't do at the GUI? This is all what I 4065 02:44:30,560 --> 02:44:33,279 mean by a technical exploratory session. 4066 02:44:33,279 --> 02:44:35,600 And tools are mandatory at this. I could 4067 02:44:35,600 --> 02:44:37,760 do exploratory sessions in the GUI 4068 02:44:37,760 --> 02:44:39,600 without many much tooling, but for a 4069 02:44:39,600 --> 02:44:41,359 technical exploratory session, I 4070 02:44:41,359 --> 02:44:44,399 absolutely have to have tooling. So the 4071 02:44:44,399 --> 02:44:47,279 tools I'm using are Firefox. I don't 4072 02:44:47,279 --> 02:44:50,160 often use Firefox, but I do use Firefox 4073 02:44:50,160 --> 02:44:54,160 when I'm working with proxies because um 4074 02:44:54,160 --> 02:44:56,000 I have fewer plugins. I don't use 4075 02:44:56,000 --> 02:44:58,800 Firefox as much. So, and it's easier for 4076 02:44:58,800 --> 02:45:00,399 me to configure through a proxy. That's 4077 02:45:00,399 --> 02:45:04,640 the only reason. Um I do have a a Chrome 4078 02:45:04,640 --> 02:45:09,040 uh plugin to help me remove uh 4079 02:45:09,040 --> 02:45:11,359 extensions. Let's have a look. This is 4080 02:45:11,359 --> 02:45:13,760 the 4081 02:45:13,760 --> 02:45:16,720 extensity extension which lets me switch 4082 02:45:16,720 --> 02:45:18,479 extensions on and off which is quite 4083 02:45:18,479 --> 02:45:20,560 handy with Chrome. But because with 4084 02:45:20,560 --> 02:45:22,399 Chrome I'm often logged into Google, 4085 02:45:22,399 --> 02:45:23,920 there's a little bit more noise than I 4086 02:45:23,920 --> 02:45:26,160 have with Firefox. And I use the 4087 02:45:26,160 --> 02:45:29,359 Foxyroxy plugin to configure it to use 4088 02:45:29,359 --> 02:45:31,279 that proxy. One of the things I also 4089 02:45:31,279 --> 02:45:33,040 liked about Firefox is that it didn't 4090 02:45:33,040 --> 02:45:35,520 use the system proxy. Chrome very often 4091 02:45:35,520 --> 02:45:37,680 uses the system proxy, i.e. uses the 4092 02:45:37,680 --> 02:45:40,240 system proxy. Firefox certainly didn't 4093 02:45:40,240 --> 02:45:41,680 used to care. Unfortunately, all the 4094 02:45:41,680 --> 02:45:43,040 browsers are getting closer and closer 4095 02:45:43,040 --> 02:45:44,240 together because they're all getting 4096 02:45:44,240 --> 02:45:47,439 starting to get based on Chromium. 4097 02:45:47,439 --> 02:45:50,000 I'm using the OWAP Zap proxy because 4098 02:45:50,000 --> 02:45:51,920 it's completely free. Therefore, anyone 4099 02:45:51,920 --> 02:45:55,760 can repeat these this type of work. Um, 4100 02:45:55,760 --> 02:45:57,279 it allows me to observe, interrogate, 4101 02:45:57,279 --> 02:45:59,520 and manipulate an HTTP level. I'm not 4102 02:45:59,520 --> 02:46:01,520 using any of the security tools, but 4103 02:46:01,520 --> 02:46:04,000 OWAP Zap Proxy also allows me to save 4104 02:46:04,000 --> 02:46:06,319 the sessions, which I can't do if I'm 4105 02:46:06,319 --> 02:46:08,720 using Burp. Um, I think you can save the 4106 02:46:08,720 --> 02:46:10,880 sessions if you use Charles. You have to 4107 02:46:10,880 --> 02:46:13,600 pay for Charles. So, I'm I've used OASP 4108 02:46:13,600 --> 02:46:15,520 Zap Proxy because it's completely open 4109 02:46:15,520 --> 02:46:18,399 source. For this particular example, I 4110 02:46:18,399 --> 02:46:21,359 use the Firefox dev tools to interrogate 4111 02:46:21,359 --> 02:46:24,160 and manipulate DOM level and the proxy 4112 02:46:24,160 --> 02:46:27,520 is for the HTTP level. Um, I used a text 4113 02:46:27,520 --> 02:46:30,800 editor to help me view XML and I used 4114 02:46:30,800 --> 02:46:33,439 Sublime Text simply because um, I've got 4115 02:46:33,439 --> 02:46:35,439 a license for that and it starts up 4116 02:46:35,439 --> 02:46:38,399 fast. Um, and every time I type in text 4117 02:46:38,399 --> 02:46:40,240 editor, I'm so used to typing sublime. 4118 02:46:40,240 --> 02:46:41,680 So that's why I used that. I could have 4119 02:46:41,680 --> 02:46:44,640 used Visual Studio um, code, the 4120 02:46:44,640 --> 02:46:46,560 lightweight Visual Studio one, which is 4121 02:46:46,560 --> 02:46:49,120 my normal default text editor for doing 4122 02:46:49,120 --> 02:46:51,760 work. But for ad hoc stuff, I end up 4123 02:46:51,760 --> 02:46:53,680 using Sublime. Snag it for taking 4124 02:46:53,680 --> 02:46:56,960 screenshots and Evernote for note 4125 02:46:56,960 --> 02:47:00,240 takingaking. Not not taking, not taking. 4126 02:47:00,240 --> 02:47:03,040 Evernote for note takingaking. So this 4127 02:47:03,040 --> 02:47:04,640 is what my screen pretty much looks like 4128 02:47:04,640 --> 02:47:07,200 as I'm doing the technical testing. So 4129 02:47:07,200 --> 02:47:09,600 I've got the browser on one side with 4130 02:47:09,600 --> 02:47:11,840 the DOM up so I can see that and observe 4131 02:47:11,840 --> 02:47:14,000 it with the proxy on the other side and 4132 02:47:14,000 --> 02:47:16,720 then other tools floating around as I 4133 02:47:16,720 --> 02:47:18,399 need them. Uh and it's a fairly good 4134 02:47:18,399 --> 02:47:20,240 working environment. I tend to have a a 4135 02:47:20,240 --> 02:47:22,240 large monitor. If I'm working 4136 02:47:22,240 --> 02:47:24,160 exclusively on the laptop, then I'll set 4137 02:47:24,160 --> 02:47:26,080 it to a higher resolution than normal to 4138 02:47:26,080 --> 02:47:28,160 give me more screen real estate. Having 4139 02:47:28,160 --> 02:47:30,560 multiple monitors is an absolute boon 4140 02:47:30,560 --> 02:47:32,960 when we're testing because we can have 4141 02:47:32,960 --> 02:47:34,240 things that we're observing, things that 4142 02:47:34,240 --> 02:47:35,840 we want to interrogate in other windows 4143 02:47:35,840 --> 02:47:37,840 and drop down to them later on, have 4144 02:47:37,840 --> 02:47:39,359 multiple things to just scan around 4145 02:47:39,359 --> 02:47:42,399 with. So my basic process was to work in 4146 02:47:42,399 --> 02:47:45,040 the GUI, observe the impact of what I 4147 02:47:45,040 --> 02:47:47,840 did in the GUI at an HTTP level. So I 4148 02:47:47,840 --> 02:47:51,200 can see instantly if JavaScript is being 4149 02:47:51,200 --> 02:47:53,840 used. So when I was doing the 4150 02:47:53,840 --> 02:47:56,880 autocomplete for contexts when creating 4151 02:47:56,880 --> 02:47:58,880 a new action, I could see instantly 4152 02:47:58,880 --> 02:48:00,319 through the proxy that it was using 4153 02:48:00,319 --> 02:48:02,399 JavaScript autocomp completion to send a 4154 02:48:02,399 --> 02:48:04,399 message every time I typed a key cuz I I 4155 02:48:04,399 --> 02:48:06,160 didn't know how that worked until I had 4156 02:48:06,160 --> 02:48:07,520 something that let me observe the 4157 02:48:07,520 --> 02:48:11,359 traffic. I interrogate the traffic after 4158 02:48:11,359 --> 02:48:14,319 doing something to see what it is to 4159 02:48:14,319 --> 02:48:16,800 gain more information to build a better 4160 02:48:16,800 --> 02:48:18,720 model of the system and how it works. I 4161 02:48:18,720 --> 02:48:20,960 might manipulate the traffic, so resend 4162 02:48:20,960 --> 02:48:24,399 it to repeat the same action but with 4163 02:48:24,399 --> 02:48:26,319 some variables changed because it's 4164 02:48:26,319 --> 02:48:28,000 faster doing that than it is doing it in 4165 02:48:28,000 --> 02:48:30,399 the GUI. If I find anything interesting, 4166 02:48:30,399 --> 02:48:32,720 then I'll try and repeat it in the GUI. 4167 02:48:32,720 --> 02:48:34,240 And the reason I do that is it's much 4168 02:48:34,240 --> 02:48:37,279 easier to justify the raising of a 4169 02:48:37,279 --> 02:48:40,000 defect when you can recreate it through 4170 02:48:40,000 --> 02:48:43,359 the GUI than it is at an HTTP level. 4171 02:48:43,359 --> 02:48:46,000 Now, what I find is it's very important 4172 02:48:46,000 --> 02:48:47,760 to keep an eye on the the time when 4173 02:48:47,760 --> 02:48:50,640 we're doing this because an exploratory 4174 02:48:50,640 --> 02:48:53,040 session, you can often get carried away 4175 02:48:53,040 --> 02:48:54,960 and get so engrossed in it that if you 4176 02:48:54,960 --> 02:48:56,800 don't keep an eye on it, you might spend 4177 02:48:56,800 --> 02:48:58,560 too long. Um, it's one of the reasons 4178 02:48:58,560 --> 02:49:01,920 why people like time boxing um and to 4179 02:49:01,920 --> 02:49:03,920 keep tight rain on the scope of the 4180 02:49:03,920 --> 02:49:06,800 testing. I didn't time box this, but 4181 02:49:06,800 --> 02:49:10,000 what I did is I kept timestamps as I was 4182 02:49:10,000 --> 02:49:12,000 going through and I could see the 4183 02:49:12,000 --> 02:49:14,160 progress of time. Essentially, I stopped 4184 02:49:14,160 --> 02:49:15,760 not because of time, but because I 4185 02:49:15,760 --> 02:49:18,319 essentially I ran out of value that I 4186 02:49:18,319 --> 02:49:21,920 thought I could add in this process. So, 4187 02:49:21,920 --> 02:49:25,600 that's a basic overview of how I did the 4188 02:49:25,600 --> 02:49:29,960 technical exploratory testing. 4189 02:49:37,840 --> 02:49:40,399 just finished uh an exploratory session 4190 02:49:40,399 --> 02:49:41,840 which I'm calling a technical 4191 02:49:41,840 --> 02:49:43,680 exploratory session which is a kind of 4192 02:49:43,680 --> 02:49:46,960 sub class of exploratory session. So an 4193 02:49:46,960 --> 02:49:49,040 exploratory session is we we have much 4194 02:49:49,040 --> 02:49:50,800 more free reign for what we're doing. 4195 02:49:50,800 --> 02:49:53,120 We'll set up aims and objectives for the 4196 02:49:53,120 --> 02:49:56,800 session, but we're really being driven 4197 02:49:56,800 --> 02:49:59,760 by what we observe, by what we learn at 4198 02:49:59,760 --> 02:50:02,800 the time whilst trying to keep in in 4199 02:50:02,800 --> 02:50:05,359 line with the focus that we've set. I'm 4200 02:50:05,359 --> 02:50:07,840 a technical exploratory session and I 4201 02:50:07,840 --> 02:50:09,920 have much many more tools open. I'm I'm 4202 02:50:09,920 --> 02:50:12,319 going to be driven much more by the um 4203 02:50:12,319 --> 02:50:14,960 technical information, the the HTTP 4204 02:50:14,960 --> 02:50:17,279 requests, the messages that I'm seeing 4205 02:50:17,279 --> 02:50:19,359 rather than the the GUI and the 4206 02:50:19,359 --> 02:50:21,439 functional flow. So, it's just a 4207 02:50:21,439 --> 02:50:23,520 different level of observation that 4208 02:50:23,520 --> 02:50:26,560 leads me to a progress uh based on 4209 02:50:26,560 --> 02:50:28,080 slightly different information. So, much 4210 02:50:28,080 --> 02:50:30,399 more technical technically informed 4211 02:50:30,399 --> 02:50:31,680 information. That's what I mean by a 4212 02:50:31,680 --> 02:50:34,720 technical exploratory session. So I'm 4213 02:50:34,720 --> 02:50:37,439 using Firefox and I'm using Firefox 4214 02:50:37,439 --> 02:50:39,279 because I don't really log into Firefox. 4215 02:50:39,279 --> 02:50:41,040 So there's less traffic when I use it in 4216 02:50:41,040 --> 02:50:43,279 combination with a proxy. Using Foxy 4217 02:50:43,279 --> 02:50:45,520 proxy plugin to configure Firefox to 4218 02:50:45,520 --> 02:50:48,160 point to the proxy. I'm using Zap as my 4219 02:50:48,160 --> 02:50:49,520 proxy because it's completely open 4220 02:50:49,520 --> 02:50:51,200 source and allows me to save this 4221 02:50:51,200 --> 02:50:55,439 session. Um which some of the tools uh 4222 02:50:55,439 --> 02:50:56,880 like Burpuite you have to pay for that 4223 02:50:56,880 --> 02:50:59,600 functionality. And Zap is crossplatform. 4224 02:50:59,600 --> 02:51:01,840 So when I understand Zap on one 4225 02:51:01,840 --> 02:51:03,680 platform, I can use it quite easily on 4226 02:51:03,680 --> 02:51:07,520 another. I'm using the dev tools to help 4227 02:51:07,520 --> 02:51:10,800 me with the uh DOM. So essentially I use 4228 02:51:10,800 --> 02:51:13,279 the proxy for all the HTTP stuff. I 4229 02:51:13,279 --> 02:51:14,960 don't jump back and forwards between the 4230 02:51:14,960 --> 02:51:17,600 network tab. I use the proxy for the 4231 02:51:17,600 --> 02:51:19,600 network. The proxy is observing, 4232 02:51:19,600 --> 02:51:21,439 interrogating, and manipulating HTTP 4233 02:51:21,439 --> 02:51:24,560 requests. The dev tools are for 4234 02:51:24,560 --> 02:51:27,279 interrogating, manipulating the HTML 4235 02:51:27,279 --> 02:51:30,560 DOM. So if I want to make changes and 4236 02:51:30,560 --> 02:51:33,520 come into a context 4237 02:51:33,520 --> 02:51:36,160 and then go okay so I don't want to 4238 02:51:36,160 --> 02:51:39,040 submit closed I want to submit close 4239 02:51:39,040 --> 02:51:42,240 then I'll come in here and manipulate it 4240 02:51:42,240 --> 02:51:45,120 at the uh DOM level but I'm much more 4241 02:51:45,120 --> 02:51:48,880 likely to do that at the uh HTTP level 4242 02:51:48,880 --> 02:51:52,800 first I come in here I go close and then 4243 02:51:52,800 --> 02:51:56,479 that lets me send to bypass the um kind 4244 02:51:56,479 --> 02:51:58,399 of normal gooey the messages that are 4245 02:51:58,399 --> 02:52:00,319 being sent through. 4246 02:52:00,319 --> 02:52:02,000 So, I'm also using Snagit for 4247 02:52:02,000 --> 02:52:03,920 screenshots. I used a text editor 4248 02:52:03,920 --> 02:52:06,240 because I wanted to check the results 4249 02:52:06,240 --> 02:52:09,520 and as an export and Sublime seemed like 4250 02:52:09,520 --> 02:52:12,000 the easiest editor that I had installed 4251 02:52:12,000 --> 02:52:13,200 to use that. It could have been any 4252 02:52:13,200 --> 02:52:16,000 editor. And I'm using Evernote for my 4253 02:52:16,000 --> 02:52:19,279 note takingaking as before. 4254 02:52:19,279 --> 02:52:21,040 Um, so this is what it pretty much looks 4255 02:52:21,040 --> 02:52:25,120 like when I'm testing. I've got my HTTP 4256 02:52:25,120 --> 02:52:28,080 traffic. I've got my browser and I've 4257 02:52:28,080 --> 02:52:29,840 got the dev tools open. These aren't 4258 02:52:29,840 --> 02:52:32,160 open all the time, right? Because my 4259 02:52:32,160 --> 02:52:33,840 basic technical approach is I'm I'm 4260 02:52:33,840 --> 02:52:36,399 working with this. And what's good about 4261 02:52:36,399 --> 02:52:39,680 the um HTTP view is I can see things 4262 02:52:39,680 --> 02:52:43,279 like well this uh 4263 02:52:43,279 --> 02:52:45,279 has code completion. This has name 4264 02:52:45,279 --> 02:52:47,439 completion. And I I didn't know whether 4265 02:52:47,439 --> 02:52:49,520 this was cached or whether it was done 4266 02:52:49,520 --> 02:52:51,200 by messages to the server. But I can see 4267 02:52:51,200 --> 02:52:53,600 that as I type this in, messages are 4268 02:52:53,600 --> 02:52:55,200 being sent to the server. So that I know 4269 02:52:55,200 --> 02:52:57,200 that these values are not cached. I know 4270 02:52:57,200 --> 02:52:59,359 that they're coming in or I'm assuming 4271 02:52:59,359 --> 02:53:01,120 that they're coming in. So the way I 4272 02:53:01,120 --> 02:53:03,359 check is by looking at the actual 4273 02:53:03,359 --> 02:53:05,359 message and looking at the response and 4274 02:53:05,359 --> 02:53:07,840 I can see what's coming back. So I can 4275 02:53:07,840 --> 02:53:10,319 see that the things shown in that are 4276 02:53:10,319 --> 02:53:14,160 not um cached. But interestingly this is 4277 02:53:14,160 --> 02:53:16,319 a JSON request. A lot of the requests 4278 02:53:16,319 --> 02:53:18,560 that are coming back through the XHR 4279 02:53:18,560 --> 02:53:21,279 requests in tracks are not JSON. 4280 02:53:21,279 --> 02:53:24,880 um complete uh JavaScript with HTML 4281 02:53:24,880 --> 02:53:26,319 which again is a slightly different 4282 02:53:26,319 --> 02:53:28,479 interesting. So we have two different 4283 02:53:28,479 --> 02:53:31,600 approaches to handling H XHR requests 4284 02:53:31,600 --> 02:53:33,920 which I find interesting and it helps 4285 02:53:33,920 --> 02:53:35,680 build up a better profile of the 4286 02:53:35,680 --> 02:53:38,800 application in my head. 4287 02:53:38,800 --> 02:53:40,880 So basically I'm working in the GUI. I'm 4288 02:53:40,880 --> 02:53:43,840 observing the impact on the HTTP traffic 4289 02:53:43,840 --> 02:53:46,160 so I can see whether it's JavaScript or 4290 02:53:46,160 --> 02:53:48,560 actual HTTP messages. I'll come in, I'll 4291 02:53:48,560 --> 02:53:50,399 interrogate these in more detail. 4292 02:53:50,399 --> 02:53:51,840 Basically means I stop doing what I'm 4293 02:53:51,840 --> 02:53:54,399 over here. Then I'll come into here and 4294 02:53:54,399 --> 02:53:56,160 choose a message. Interrogate it by 4295 02:53:56,160 --> 02:53:58,399 looking at it, looking at more detail. 4296 02:53:58,399 --> 02:54:00,399 And I've kind of paused my work to 4297 02:54:00,399 --> 02:54:02,720 understand a bit more what's going on. 4298 02:54:02,720 --> 02:54:04,800 If I want to manipulate one of these, 4299 02:54:04,800 --> 02:54:07,040 say I want to, so this is a post on 4300 02:54:07,040 --> 02:54:08,800 to-dos. So this is creating a to-do. If 4301 02:54:08,800 --> 02:54:10,880 I wanted to create another to-do, I 4302 02:54:10,880 --> 02:54:12,960 would come in here and manipulate the 4303 02:54:12,960 --> 02:54:15,040 request and send it through. So I'm 4304 02:54:15,040 --> 02:54:17,520 bypassing the guey to work at a much 4305 02:54:17,520 --> 02:54:19,680 more technical level and create it from 4306 02:54:19,680 --> 02:54:24,160 the HTTP requests. I did learn that when 4307 02:54:24,160 --> 02:54:28,319 I'm manipulating things in Zap, I really 4308 02:54:28,319 --> 02:54:30,720 want to work at the text level because 4309 02:54:30,720 --> 02:54:33,279 then I can control the ordering and the 4310 02:54:33,279 --> 02:54:35,200 actual values because I found when I was 4311 02:54:35,200 --> 02:54:37,439 working at the table view, I didn't 4312 02:54:37,439 --> 02:54:39,359 quite get the output messages I was 4313 02:54:39,359 --> 02:54:43,200 expecting because this is sorted under 4314 02:54:43,200 --> 02:54:44,720 um 4315 02:54:44,720 --> 02:54:47,200 alphabetical parameter name here I 4316 02:54:47,200 --> 02:54:50,399 think. And uh this one I thought I had 4317 02:54:50,399 --> 02:54:52,160 typed in the value but I hadn't saved it 4318 02:54:52,160 --> 02:54:54,000 so I didn't quite get the result I 4319 02:54:54,000 --> 02:54:56,319 expected. But working at text although 4320 02:54:56,319 --> 02:54:58,240 it's a little bit more clumsy guarantees 4321 02:54:58,240 --> 02:55:00,080 that I'm getting the request. So we've 4322 02:55:00,080 --> 02:55:02,080 always got issues when we not issues we 4323 02:55:02,080 --> 02:55:04,080 always got the potential for risk when 4324 02:55:04,080 --> 02:55:06,240 we use extra tools that the tool itself 4325 02:55:06,240 --> 02:55:09,520 might get in the way. And uh when I was 4326 02:55:09,520 --> 02:55:12,800 using Zap, I had to upgrade the version 4327 02:55:12,800 --> 02:55:15,359 of Zap here um cuz I hadn't used it for 4328 02:55:15,359 --> 02:55:17,680 a while, reinstantiate the certificates, 4329 02:55:17,680 --> 02:55:20,640 load them into Firefox um because the 4330 02:55:20,640 --> 02:55:22,080 certificate was out of date. So it took 4331 02:55:22,080 --> 02:55:24,160 me about 20 minutes just to get started 4332 02:55:24,160 --> 02:55:27,040 because I was using tools. The tools 4333 02:55:27,040 --> 02:55:28,399 give me more insight, but there's 4334 02:55:28,399 --> 02:55:30,800 overhead and potential risks every time 4335 02:55:30,800 --> 02:55:33,040 we use them. 4336 02:55:33,040 --> 02:55:36,080 And it's very important that because I'm 4337 02:55:36,080 --> 02:55:37,760 working at a low level here, I've got 4338 02:55:37,760 --> 02:55:40,960 way more information than um I had 4339 02:55:40,960 --> 02:55:42,800 before. And here I can see there's a 4340 02:55:42,800 --> 02:55:45,040 default context name. When I saw this, I 4341 02:55:45,040 --> 02:55:46,640 went, "What is what is that?" And I was 4342 02:55:46,640 --> 02:55:48,240 hunting through the admin interface to 4343 02:55:48,240 --> 02:55:50,880 try and find the default context. I 4344 02:55:50,880 --> 02:55:52,880 couldn't find it. This was the first one 4345 02:55:52,880 --> 02:55:57,520 that I set up. Um which I thought was in 4346 02:55:57,520 --> 02:55:58,720 fact, it's not even Yeah. So that was 4347 02:55:58,720 --> 02:56:00,160 the first one I set up, but it's been 4348 02:56:00,160 --> 02:56:03,200 renamed. So, the original name is 4349 02:56:03,200 --> 02:56:04,640 changing over time, but I don't know how 4350 02:56:04,640 --> 02:56:07,040 to adjust this. I experimented a little 4351 02:56:07,040 --> 02:56:10,319 bit creating a um to-do without a 4352 02:56:10,319 --> 02:56:12,000 context to see if it used default 4353 02:56:12,000 --> 02:56:13,680 context. It didn't. So, I don't know 4354 02:56:13,680 --> 02:56:15,760 what this is for. I've now got questions 4355 02:56:15,760 --> 02:56:18,319 about what these things are, how they 4356 02:56:18,319 --> 02:56:20,000 are used, what is the impact on the 4357 02:56:20,000 --> 02:56:22,560 system, is there a potential risk there 4358 02:56:22,560 --> 02:56:24,800 that I would have to explore in my 4359 02:56:24,800 --> 02:56:27,520 testing. I wouldn't pick this up from 4360 02:56:27,520 --> 02:56:29,520 the GUI and get more information at 4361 02:56:29,520 --> 02:56:31,600 technical level. So there's interesting 4362 02:56:31,600 --> 02:56:33,359 things there. I also have to keep an eye 4363 02:56:33,359 --> 02:56:36,240 on the time because um with a lot more 4364 02:56:36,240 --> 02:56:38,479 information that's a lot easier to find 4365 02:56:38,479 --> 02:56:41,439 way more more more more test ideas uh 4366 02:56:41,439 --> 02:56:43,520 some of which might take me off scope. 4367 02:56:43,520 --> 02:56:45,200 So I have to be very careful which ones 4368 02:56:45,200 --> 02:56:47,359 I pursue. So I have to keep an eye on 4369 02:56:47,359 --> 02:56:49,200 the time very carefully when I'm doing 4370 02:56:49,200 --> 02:56:51,120 testing at this low level simply because 4371 02:56:51,120 --> 02:56:53,120 there's so much more I could be doing, 4372 02:56:53,120 --> 02:56:54,479 so much more I could be progressing. 4373 02:56:54,479 --> 02:56:57,040 There's so much more information to read 4374 02:56:57,040 --> 02:56:59,760 and understand and pull together. and 4375 02:56:59,760 --> 02:57:02,000 I'm getting a much much richer model of 4376 02:57:02,000 --> 02:57:04,240 the application which is good because 4377 02:57:04,240 --> 02:57:06,080 then that leads on to more testing later 4378 02:57:06,080 --> 02:57:10,080 on. Um so I found some issues with Zap 4379 02:57:10,080 --> 02:57:12,960 in that it wasn't able to save the 4380 02:57:12,960 --> 02:57:16,560 sessions in all the folders I wanted. Um 4381 02:57:16,560 --> 02:57:18,160 it was a high level folder. I don't know 4382 02:57:18,160 --> 02:57:19,520 if that's because I'm working on a Mac. 4383 02:57:19,520 --> 02:57:20,720 I don't know if that's cuz the operating 4384 02:57:20,720 --> 02:57:22,880 system has just been upgraded. Um I 4385 02:57:22,880 --> 02:57:26,240 don't know. Um, I had to switch off the 4386 02:57:26,240 --> 02:57:28,319 HUD when I started and because it was 4387 02:57:28,319 --> 02:57:31,200 too much information and I wanted to 4388 02:57:31,200 --> 02:57:33,120 reduce the amount of information 4389 02:57:33,120 --> 02:57:35,200 overload as I was testing and I'm not 4390 02:57:35,200 --> 02:57:38,399 used to the HUD in Zap yet. So, it's a 4391 02:57:38,399 --> 02:57:40,479 whole new set of technology that if I 4392 02:57:40,479 --> 02:57:42,560 had it working, it would possibly 4393 02:57:42,560 --> 02:57:47,439 distract me. Like the HUD on Zap is 4394 02:57:47,439 --> 02:57:49,040 here. 4395 02:57:49,040 --> 02:57:54,120 Then, okay. then refresh. 4396 02:57:54,720 --> 02:57:56,399 And now I've got a whole bunch more 4397 02:57:56,399 --> 02:57:58,720 stuff here. And there's also a risk that 4398 02:57:58,720 --> 02:58:01,040 this impacts my testing. I last time I 4399 02:58:01,040 --> 02:58:02,640 tried HUD, it was in beta mode and it 4400 02:58:02,640 --> 02:58:04,560 crashed my browser. So I switched off. 4401 02:58:04,560 --> 02:58:06,240 I'm sure it doesn't crash the browser 4402 02:58:06,240 --> 02:58:08,080 anymore. But there's a risk. It's extra 4403 02:58:08,080 --> 02:58:09,680 tooling. And if it's extra stuff that I 4404 02:58:09,680 --> 02:58:12,399 don't need, then I'm going to switch it 4405 02:58:12,399 --> 02:58:17,720 off so that it doesn't get in my way. 4406 02:58:18,720 --> 02:58:22,160 Options. HUD. 4407 02:58:22,160 --> 02:58:23,840 Okay, 4408 02:58:23,840 --> 02:58:25,760 bye-bye. So, I'm going to switch that 4409 02:58:25,760 --> 02:58:28,160 off to be as clean as possible in my 4410 02:58:28,160 --> 02:58:31,920 system. I found uh interesting things 4411 02:58:31,920 --> 02:58:35,120 that the tracks XHR messages um always 4412 02:58:35,120 --> 02:58:37,279 respond with a 200 even if there's an 4413 02:58:37,279 --> 02:58:41,200 error. Um some of these things are post 4414 02:58:41,200 --> 02:58:43,040 200 4415 02:58:43,040 --> 02:58:45,439 response error, right? So, there's an 4416 02:58:45,439 --> 02:58:46,800 error in there, but the the code 4417 02:58:46,800 --> 02:58:49,439 response is a 200. So, I would probably 4418 02:58:49,439 --> 02:58:54,000 raise that as a bug. Um, because 4419 02:58:54,000 --> 02:58:56,160 it's it's not obvious to me in the GUI 4420 02:58:56,160 --> 02:58:58,319 that the message has come back as a 200, 4421 02:58:58,319 --> 02:59:00,720 but it's obvious to me in the HTTP view 4422 02:59:00,720 --> 02:59:02,880 that the message is a 200. And really, 4423 02:59:02,880 --> 02:59:05,120 we want status codes that trigger that. 4424 02:59:05,120 --> 02:59:07,840 But this is an internal API. This is not 4425 02:59:07,840 --> 02:59:10,880 an API that you would use to interact 4426 02:59:10,880 --> 02:59:13,359 with tracks and because you're expected 4427 02:59:13,359 --> 02:59:16,399 to use the JSON API, which is a formal 4428 02:59:16,399 --> 02:59:18,880 API with status quotes. So, but this 4429 02:59:18,880 --> 02:59:20,560 might also suggest that there's two 4430 02:59:20,560 --> 02:59:22,880 implementations. There's a guey API 4431 02:59:22,880 --> 02:59:25,359 implementation and there's a backend API 4432 02:59:25,359 --> 02:59:26,880 implementation. So, perhaps there's some 4433 02:59:26,880 --> 02:59:28,960 risk there that I need to explore and 4434 02:59:28,960 --> 02:59:31,040 look into. And I wouldn't know that 4435 02:59:31,040 --> 02:59:34,399 unless I was investigating this at a um 4436 02:59:34,399 --> 02:59:38,160 a uh HTTP level. And I see a whole bunch 4437 02:59:38,160 --> 02:59:42,319 of stuff in here that uh some of which I 4438 02:59:42,319 --> 02:59:44,800 followed up. But when I do a post here 4439 02:59:44,800 --> 02:59:46,960 in the request, I can see that there's a 4440 02:59:46,960 --> 02:59:49,760 method and this method is a put, but the 4441 02:59:49,760 --> 02:59:52,640 HTTP method is a post. So I explored 4442 02:59:52,640 --> 02:59:55,040 that a little bit to see um what 4443 02:59:55,040 --> 02:59:57,359 interesting things happened. And I'll 4444 02:59:57,359 --> 02:59:58,640 have a look at my notes in a second. 4445 02:59:58,640 --> 03:00:00,399 We'll see that. So let's have a look at 4446 03:00:00,399 --> 03:00:02,240 the notes because the notes that I take 4447 03:00:02,240 --> 03:00:05,680 are not really any different when I'm 4448 03:00:05,680 --> 03:00:08,319 working at this level. I've still got my 4449 03:00:08,319 --> 03:00:11,200 aims. I've still got um the tracking of 4450 03:00:11,200 --> 03:00:12,479 what I've actually done. And I've still 4451 03:00:12,479 --> 03:00:15,680 got the timestamps. Um, and I do record 4452 03:00:15,680 --> 03:00:18,479 in here the actual messages and the 4453 03:00:18,479 --> 03:00:19,840 content that I'm sending through. So 4454 03:00:19,840 --> 03:00:21,920 even though it's being tracked by the 4455 03:00:21,920 --> 03:00:25,040 HTTP proxy, I don't necessarily rely on 4456 03:00:25,040 --> 03:00:28,319 that, right? I rely on my notes cuz this 4457 03:00:28,319 --> 03:00:30,479 is what I'm focusing on. This was of 4458 03:00:30,479 --> 03:00:33,520 interest to me. There's a lot of HTTP 4459 03:00:33,520 --> 03:00:35,600 messages in here. If I don't have it in 4460 03:00:35,600 --> 03:00:37,200 here, chances are I didn't really use 4461 03:00:37,200 --> 03:00:40,160 that to inform my testing. So there may 4462 03:00:40,160 --> 03:00:42,240 be scope for reviewing this and seeing 4463 03:00:42,240 --> 03:00:45,520 things that happen later on. 4464 03:00:45,520 --> 03:00:49,200 And you can see in here I explored the 4465 03:00:49,200 --> 03:00:50,960 um underscore method being different 4466 03:00:50,960 --> 03:00:54,399 from the verb the HTTP verb. And I I 4467 03:00:54,399 --> 03:00:56,080 found it interesting that when I put in 4468 03:00:56,080 --> 03:00:58,960 a post with a post method, I got a 404 4469 03:00:58,960 --> 03:01:00,960 which suggests that this is being used 4470 03:01:00,960 --> 03:01:03,439 for rooting that I did not expect. So 4471 03:01:03,439 --> 03:01:05,840 I'm not entirely clear in my head how 4472 03:01:05,840 --> 03:01:07,680 the application hangs together and 4473 03:01:07,680 --> 03:01:09,359 what's important for rooting. So there 4474 03:01:09,359 --> 03:01:12,960 may be scope for exploring verb and 4475 03:01:12,960 --> 03:01:15,040 method combinations in here to see what 4476 03:01:15,040 --> 03:01:16,960 happens to see if we can bypass 4477 03:01:16,960 --> 03:01:18,960 validation to be put into different 4478 03:01:18,960 --> 03:01:21,680 parts of the app. Don't know. So again, 4479 03:01:21,680 --> 03:01:24,479 it's one of those things that I might 4480 03:01:24,479 --> 03:01:28,240 want to look at. Um you saw that when I 4481 03:01:28,240 --> 03:01:29,680 put through some messages and got an 4482 03:01:29,680 --> 03:01:32,000 error, we get a 200 and code and I made 4483 03:01:32,000 --> 03:01:36,240 a note of that in my notes. Um I tried 4484 03:01:36,240 --> 03:01:38,640 um putting in 4485 03:01:38,640 --> 03:01:42,800 context states that are not uh valid. So 4486 03:01:42,800 --> 03:01:45,920 I used a closed state instead of closed 4487 03:01:45,920 --> 03:01:49,840 and saw a 200 response come back um 4488 03:01:49,840 --> 03:01:51,359 telling me that the context has been 4489 03:01:51,359 --> 03:01:53,359 saved. But when I actually went to view 4490 03:01:53,359 --> 03:01:55,120 it and because I don't have database 4491 03:01:55,120 --> 03:01:56,800 access 4492 03:01:56,800 --> 03:01:59,120 um I my tools didn't allow me to observe 4493 03:01:59,120 --> 03:02:01,040 everything. So I used the application 4494 03:02:01,040 --> 03:02:04,160 itself as an export to allow me to view 4495 03:02:04,160 --> 03:02:07,359 the internals to see whether um the data 4496 03:02:07,359 --> 03:02:10,160 on the back end had changed even if the 4497 03:02:10,160 --> 03:02:12,800 GUI wasn't reporting that. So I've got 4498 03:02:12,800 --> 03:02:15,760 limitations in how far I can observe and 4499 03:02:15,760 --> 03:02:17,920 interrogate with the technology because 4500 03:02:17,920 --> 03:02:20,479 even here I'm assuming that the system 4501 03:02:20,479 --> 03:02:22,560 is not lying to me. I'm not looking 4502 03:02:22,560 --> 03:02:24,399 directly in the database to see whether 4503 03:02:24,399 --> 03:02:27,040 the states did change. 4504 03:02:27,040 --> 03:02:29,520 Um, but it's it was interesting to see 4505 03:02:29,520 --> 03:02:32,399 that we get a positive response back 4506 03:02:32,399 --> 03:02:34,080 when it was actually an error and when 4507 03:02:34,080 --> 03:02:35,840 nothing was actually changed, but it 4508 03:02:35,840 --> 03:02:39,439 said that it did save it. So, I think 4509 03:02:39,439 --> 03:02:42,160 there was more exploration possible in 4510 03:02:42,160 --> 03:02:43,600 there. But one of the interesting things 4511 03:02:43,600 --> 03:02:46,479 with exploratory testing is you because 4512 03:02:46,479 --> 03:02:49,200 you're so focused on doing and observing 4513 03:02:49,200 --> 03:02:51,520 and learning, you only really get a feel 4514 03:02:51,520 --> 03:02:54,800 for the coverage when you debrief. When 4515 03:02:54,800 --> 03:02:56,560 you step back and look at your notes, 4516 03:02:56,560 --> 03:02:59,760 you reverse engineer your coverage 4517 03:02:59,760 --> 03:03:02,640 rather than following it as you go 4518 03:03:02,640 --> 03:03:06,399 through in a in a real exploratory 4519 03:03:06,399 --> 03:03:07,680 session, not a real exploratory session, 4520 03:03:07,680 --> 03:03:09,680 in a session that is prioritizing 4521 03:03:09,680 --> 03:03:11,200 exploration, 4522 03:03:11,200 --> 03:03:15,120 then coverage is important, but it's not 4523 03:03:15,120 --> 03:03:18,160 the main driver, right? The main driver 4524 03:03:18,160 --> 03:03:20,720 is the aims that we have and we try and 4525 03:03:20,720 --> 03:03:22,960 keep on scope and the observations that 4526 03:03:22,960 --> 03:03:25,279 we're making. at least when I do it. Um, 4527 03:03:25,279 --> 03:03:26,800 if I really want coverage to be 4528 03:03:26,800 --> 03:03:28,720 important, then I stress coverage in my 4529 03:03:28,720 --> 03:03:30,479 aims. And it's coverage that's really 4530 03:03:30,479 --> 03:03:33,120 driving me with a, um, well, I still 4531 03:03:33,120 --> 03:03:35,040 think of it as a true exploratory 4532 03:03:35,040 --> 03:03:37,200 session. Um, coverage is something that 4533 03:03:37,200 --> 03:03:39,200 I reverse engineer. Yeah. So, I think 4534 03:03:39,200 --> 03:03:40,640 I've mentioned some of this stuff. 4535 03:03:40,640 --> 03:03:44,640 Essentially, um, I'm what I do is I work 4536 03:03:44,640 --> 03:03:46,640 here. I see the stuff in here. I 4537 03:03:46,640 --> 03:03:49,279 manipulate in here. Then if I manipulate 4538 03:03:49,279 --> 03:03:51,040 in here and see something that is 4539 03:03:51,040 --> 03:03:52,640 interesting, I will then try and see 4540 03:03:52,640 --> 03:03:55,120 whether I can recreate that manipulation 4541 03:03:55,120 --> 03:03:57,120 in here because it's a lot easier to 4542 03:03:57,120 --> 03:03:58,720 raise defects against things you can do 4543 03:03:58,720 --> 03:04:02,560 in the guey than uh just at an HTTP 4544 03:04:02,560 --> 03:04:04,560 level. I have raised defects just at an 4545 03:04:04,560 --> 03:04:06,479 HTTP level. When you say, "Hey, look, I 4546 03:04:06,479 --> 03:04:08,640 can send this HTTP request and buy this 4547 03:04:08,640 --> 03:04:11,279 product for 0." Then people take notice 4548 03:04:11,279 --> 03:04:13,040 of it regardless of whether you can do 4549 03:04:13,040 --> 03:04:16,080 that at the GUIN or not. So, but I do 4550 03:04:16,080 --> 03:04:17,840 like to move back to the GUI because it 4551 03:04:17,840 --> 03:04:19,520 makes it easier for other people to 4552 03:04:19,520 --> 03:04:21,760 recreate the bugs. If I say send through 4553 03:04:21,760 --> 03:04:24,319 this request, they have to get a proxy 4554 03:04:24,319 --> 03:04:25,840 up. They have to come into the GUI. If I 4555 03:04:25,840 --> 03:04:28,800 say come into the GUI and open the form, 4556 03:04:28,800 --> 03:04:31,120 inspect it, change the value to X, then 4557 03:04:31,120 --> 03:04:33,120 hit the submit, then you see the error 4558 03:04:33,120 --> 03:04:36,399 that is a lot easier for um programmers 4559 03:04:36,399 --> 03:04:40,880 to deal with. So, using tools themselves 4560 03:04:40,880 --> 03:04:43,680 have risk and impact. So, it took me a 4561 03:04:43,680 --> 03:04:46,479 little while to set up um the proxy 4562 03:04:46,479 --> 03:04:48,399 before I started. That impacted my 4563 03:04:48,399 --> 03:04:51,680 testing, but I I couldn't do the work 4564 03:04:51,680 --> 03:04:53,439 unless the tool was working. So, that 4565 03:04:53,439 --> 03:04:55,920 was a necessary um tradeoff and side 4566 03:04:55,920 --> 03:04:58,479 effect. I have to be very careful when 4567 03:04:58,479 --> 03:05:00,479 I'm doing this type of testing that I 4568 03:05:00,479 --> 03:05:01,920 don't get carried away because there's 4569 03:05:01,920 --> 03:05:03,600 way more information. There's way more 4570 03:05:03,600 --> 03:05:05,279 stuff in here. I'm learning an awful lot 4571 03:05:05,279 --> 03:05:07,600 of things. So, I have to keep an eye on 4572 03:05:07,600 --> 03:05:12,800 the uh time. Otherwise, these sessions 4573 03:05:12,800 --> 03:05:14,720 can take longer than they need to. And I 4574 03:05:14,720 --> 03:05:16,880 have to keep really sure that I'm still 4575 03:05:16,880 --> 03:05:20,720 keeping on track with value. Is this 4576 03:05:20,720 --> 03:05:22,240 technical investigation I'm about to do 4577 03:05:22,240 --> 03:05:24,880 going to add value? So, I I have to be 4578 03:05:24,880 --> 03:05:26,560 careful that I don't spend too long 4579 03:05:26,560 --> 03:05:28,399 investigating the mismatch between the 4580 03:05:28,399 --> 03:05:30,720 verbs and the method. Um, I just do 4581 03:05:30,720 --> 03:05:32,800 enough to see is this interesting for 4582 03:05:32,800 --> 03:05:34,800 future work. Is there an immediate 4583 03:05:34,800 --> 03:05:36,720 problem here? But I've got it in my 4584 03:05:36,720 --> 03:05:38,800 notes so I can revisit it. when I do a 4585 03:05:38,800 --> 03:05:40,319 debrief on this, then I'll come out with 4586 03:05:40,319 --> 03:05:43,359 all my to-dos and 4587 03:05:43,359 --> 03:05:46,160 things after that to know where to go. 4588 03:05:46,160 --> 03:05:48,560 Um, I try to duplicate bugs at the guey 4589 03:05:48,560 --> 03:05:49,920 as well as just at the HTTP level 4590 03:05:49,920 --> 03:05:51,040 because they're easier to take 4591 03:05:51,040 --> 03:05:54,240 seriously. And the automated recording 4592 03:05:54,240 --> 03:05:58,800 here is not my main uh record, right? 4593 03:05:58,800 --> 03:06:00,640 This is a useful source of evidence. 4594 03:06:00,640 --> 03:06:03,040 I'll save it. We can review it later on. 4595 03:06:03,040 --> 03:06:06,240 But my main evidence is coming from um 4596 03:06:06,240 --> 03:06:08,800 my logs in Evernote. Where is you? Where 4597 03:06:08,800 --> 03:06:11,520 has Evernote gone? 4598 03:06:11,520 --> 03:06:14,640 There. So this is my still my main log. 4599 03:06:14,640 --> 03:06:16,880 That's why I copy the messages in here 4600 03:06:16,880 --> 03:06:18,240 because I thought this was important 4601 03:06:18,240 --> 03:06:20,800 enough. It's useful to come in here and 4602 03:06:20,800 --> 03:06:24,240 review it. Um and as we because I've got 4603 03:06:24,240 --> 03:06:26,000 fairly detailed notes on what we did, 4604 03:06:26,000 --> 03:06:27,439 there's some time stamps. I could look 4605 03:06:27,439 --> 03:06:29,840 at the 1223, look at the time stamp in 4606 03:06:29,840 --> 03:06:32,080 here, and I can be fairly sure that 4607 03:06:32,080 --> 03:06:34,399 round about this point is what we're 4608 03:06:34,399 --> 03:06:37,359 talking about in my notes. So, I can 4609 03:06:37,359 --> 03:06:38,800 start working through my notes in 4610 03:06:38,800 --> 03:06:41,439 combination with this to see what I did, 4611 03:06:41,439 --> 03:06:43,680 but it's really an after the fact 4612 03:06:43,680 --> 03:06:47,359 record. It's not my main um information 4613 03:06:47,359 --> 03:06:49,920 source. So, that's probably all I should 4614 03:06:49,920 --> 03:06:55,040 cover with the uh debrief here. And uh 4615 03:06:55,040 --> 03:06:57,120 it's interesting. It's good insight. Uh 4616 03:06:57,120 --> 03:06:58,640 the most important insight for me was 4617 03:06:58,640 --> 03:07:03,200 the notion that when I'm um focused on 4618 03:07:03,200 --> 03:07:05,520 coverage, the exploration is constrained 4619 03:07:05,520 --> 03:07:07,439 within the coverage and observation and 4620 03:07:07,439 --> 03:07:09,840 reflection identifies new opportunities, 4621 03:07:09,840 --> 03:07:11,279 but these don't need to be followed 4622 03:07:11,279 --> 03:07:12,880 immediately. But it's still very 4623 03:07:12,880 --> 03:07:15,760 coverage focused. The more that I'm 4624 03:07:15,760 --> 03:07:18,160 emphasizing exploration, the more the 4625 03:07:18,160 --> 03:07:20,560 coverage is reverse engineered from my 4626 03:07:20,560 --> 03:07:22,720 notes because it's not apparent when I'm 4627 03:07:22,720 --> 03:07:24,960 working there necessarily what I'm 4628 03:07:24,960 --> 03:07:26,399 covering on because there's a flow of 4629 03:07:26,399 --> 03:07:29,600 consciousness. It's very hard to um talk 4630 03:07:29,600 --> 03:07:30,960 as you're doing exploratory testing 4631 03:07:30,960 --> 03:07:32,560 which is why I'm not doing that doing 4632 03:07:32,560 --> 03:07:35,840 that for this sessions because if I did 4633 03:07:35,840 --> 03:07:37,520 the sessions would be much longer. there 4634 03:07:37,520 --> 03:07:40,800 wouldn't be as much uh indicative 4635 03:07:40,800 --> 03:07:42,479 process for how I actually work as a 4636 03:07:42,479 --> 03:07:44,640 tester because I'd be talking and and 4637 03:07:44,640 --> 03:07:45,840 talking things through that would 4638 03:07:45,840 --> 03:07:47,359 distract from the way that I make my 4639 03:07:47,359 --> 03:07:50,319 notes. So, I've done the testing clean 4640 03:07:50,319 --> 03:07:51,840 and made my notes and debriefing 4641 03:07:51,840 --> 03:07:54,319 afterwards to talk about it that way as 4642 03:07:54,319 --> 03:07:56,000 though this is a real debrief sitting 4643 03:07:56,000 --> 03:07:57,760 with someone, but it's not a proper 4644 03:07:57,760 --> 03:07:59,760 debrief because I haven't collated out 4645 03:07:59,760 --> 03:08:01,920 the coverage yet. That was a a good 4646 03:08:01,920 --> 03:08:03,680 insight for me, the the difference 4647 03:08:03,680 --> 03:08:07,040 between the the coverage focus and the 4648 03:08:07,040 --> 03:08:09,120 exploratory focus and really hammers 4649 03:08:09,120 --> 03:08:11,120 home why we need to do debriefs, why we 4650 03:08:11,120 --> 03:08:13,120 need to come through and summarize our 4651 03:08:13,120 --> 03:08:14,880 work afterwards because we just lose 4652 03:08:14,880 --> 03:08:17,040 that sense of coverage when we're 4653 03:08:17,040 --> 03:08:18,479 actually working through it. Or at least 4654 03:08:18,479 --> 03:08:21,760 I do. Maybe your notes and approach may 4655 03:08:21,760 --> 03:08:24,920 be different. 4656 03:08:32,640 --> 03:08:35,200 Okay. So, I should try and go meta a 4657 03:08:35,200 --> 03:08:37,760 little bit on the uh technical 4658 03:08:37,760 --> 03:08:40,800 exploratory session. And so, here's the 4659 03:08:40,800 --> 03:08:42,880 kind of notes. Again, you'll see this uh 4660 03:08:42,880 --> 03:08:45,680 I've my normal note takingaking top to 4661 03:08:45,680 --> 03:08:48,080 bottom. It's linear. It's time based. 4662 03:08:48,080 --> 03:08:50,720 I'm putting timestamps in, but I'm also 4663 03:08:50,720 --> 03:08:52,399 adding quite a lot of information about 4664 03:08:52,399 --> 03:08:55,359 the HTTP request. I see no issue with 4665 03:08:55,359 --> 03:08:58,560 copy and pasting from my work into my 4666 03:08:58,560 --> 03:09:01,120 notes. That seems perfectly valid and 4667 03:09:01,120 --> 03:09:03,120 sensible thing to me to do. I don't 4668 03:09:03,120 --> 03:09:05,200 really care if my notes get too long. 4669 03:09:05,200 --> 03:09:07,439 The notes don't have to be uploaded and 4670 03:09:07,439 --> 03:09:10,399 stored in Jer. They're just text files, 4671 03:09:10,399 --> 03:09:14,399 so they're very very light. Um, there 4672 03:09:14,399 --> 03:09:16,880 will be uh screenshots. They can be 4673 03:09:16,880 --> 03:09:18,240 zipped up. There's a whole bunch of 4674 03:09:18,240 --> 03:09:19,760 different ways of doing this, but 4675 03:09:19,760 --> 03:09:21,600 anything that I create in my notes is 4676 03:09:21,600 --> 03:09:23,920 much lighter than if I was doing it in a 4677 03:09:23,920 --> 03:09:26,560 word document or if I was doing it um on 4678 03:09:26,560 --> 03:09:28,080 the system and adding it into a 4679 03:09:28,080 --> 03:09:31,040 database. If I've ever have to work with 4680 03:09:31,040 --> 03:09:33,520 Jira or any system like that, I never 4681 03:09:33,520 --> 03:09:36,880 ever um type into the system directly. I 4682 03:09:36,880 --> 03:09:38,720 always copy and paste from my notes 4683 03:09:38,720 --> 03:09:41,040 because there been too many times when 4684 03:09:41,040 --> 03:09:43,600 I've written something up, hit save, and 4685 03:09:43,600 --> 03:09:46,399 lost it. um any any online system, 4686 03:09:46,399 --> 03:09:49,760 Gmail, Patreon, LinkedIn, I never type 4687 03:09:49,760 --> 03:09:53,279 in the system itself, I will always copy 4688 03:09:53,279 --> 03:09:55,120 and paste from my notes. And that's just 4689 03:09:55,120 --> 03:09:57,840 Allan's handy paranoid 4690 03:09:57,840 --> 03:10:00,640 tip for dealing with the real world. Um 4691 03:10:00,640 --> 03:10:03,520 because as a tester, things crash under 4692 03:10:03,520 --> 03:10:05,200 our fingers that don't crash under 4693 03:10:05,200 --> 03:10:08,319 anyone else's. So, I tend to rely on 4694 03:10:08,319 --> 03:10:10,640 stable technology like text editor. 4695 03:10:10,640 --> 03:10:12,560 there's so little can go wrong with it 4696 03:10:12,560 --> 03:10:15,439 and copy and paste into something else. 4697 03:10:15,439 --> 03:10:17,200 And if the system says, "Hey, you're not 4698 03:10:17,200 --> 03:10:19,439 allowed to paste in here," then that's 4699 03:10:19,439 --> 03:10:21,600 fine. I will hijack the DOM and send it 4700 03:10:21,600 --> 03:10:24,240 in or write it into a clipboard buffer 4701 03:10:24,240 --> 03:10:26,000 and type it in automatically. I have 4702 03:10:26,000 --> 03:10:28,240 ways of automating anything. So, there's 4703 03:10:28,240 --> 03:10:30,319 my notes, right? I'm putting in quite a 4704 03:10:30,319 --> 03:10:32,720 lot of information in there. And the key 4705 03:10:32,720 --> 03:10:35,920 thing I I want to pull out is the the 4706 03:10:35,920 --> 03:10:38,240 URLs that I'm adding in my notes when I 4707 03:10:38,240 --> 03:10:40,399 convert them into PDF via Pandock, 4708 03:10:40,399 --> 03:10:41,920 they're clickable, right? I'm not 4709 03:10:41,920 --> 03:10:43,840 formatting. I'm not doing anything 4710 03:10:43,840 --> 03:10:46,160 special for formatting here. I'm relying 4711 03:10:46,160 --> 03:10:48,880 on the tools adding formatting later on. 4712 03:10:48,880 --> 03:10:51,439 These um slides that I'm doing are 4713 03:10:51,439 --> 03:10:55,200 written in uh just text and it's it's a 4714 03:10:55,200 --> 03:10:58,080 system a tool called MARP which converts 4715 03:10:58,080 --> 03:11:01,520 my markdown um text into slides. I don't 4716 03:11:01,520 --> 03:11:04,000 even format my slides, right? I don't 4717 03:11:04,000 --> 03:11:07,040 the the aesthetic part of life is not 4718 03:11:07,040 --> 03:11:08,479 something that I'm really focused on. 4719 03:11:08,479 --> 03:11:11,200 I'm much more focused on the content and 4720 03:11:11,200 --> 03:11:16,000 the value. So, what I found so I found a 4721 03:11:16,000 --> 03:11:18,319 potential bug in Zap that I wasn't 4722 03:11:18,319 --> 03:11:19,920 expecting, but I don't know whether 4723 03:11:19,920 --> 03:11:22,399 that's um because I've just upgraded the 4724 03:11:22,399 --> 03:11:24,960 Mac operating system to this new horror 4725 03:11:24,960 --> 03:11:27,200 that um doesn't that keeps asking for 4726 03:11:27,200 --> 03:11:29,279 permissions to save stuff and perhaps 4727 03:11:29,279 --> 03:11:32,640 Zap didn't. So I wasn't able to save to 4728 03:11:32,640 --> 03:11:36,080 subfolders. Don't know possible bugin 4729 03:11:36,080 --> 03:11:40,640 tracks because uh when we do things that 4730 03:11:40,640 --> 03:11:43,520 trigger errors um it's not an error 4731 03:11:43,520 --> 03:11:44,960 response that comes back. Everything has 4732 03:11:44,960 --> 03:11:48,640 a 200 status code and that itself is not 4733 03:11:48,640 --> 03:11:51,200 an issue but it's triggers for me the 4734 03:11:51,200 --> 03:11:53,200 thought process that perhaps tracks 4735 03:11:53,200 --> 03:11:55,760 trusts the guey more than it perhaps 4736 03:11:55,760 --> 03:11:58,479 should um which would make me nervous if 4737 03:11:58,479 --> 03:12:00,399 I was running this as a multi-user 4738 03:12:00,399 --> 03:12:02,960 system on a server because I would want 4739 03:12:02,960 --> 03:12:05,359 to make sure that people couldn't mess 4740 03:12:05,359 --> 03:12:09,120 with it. the XHR messages, the HTTP 4741 03:12:09,120 --> 03:12:11,359 messages sent by JavaScript, which are 4742 03:12:11,359 --> 03:12:13,920 error messages are still a 200 status 4743 03:12:13,920 --> 03:12:16,640 rather than a a 400 4744 03:12:16,640 --> 03:12:18,880 status. Um, and there's a lot of stuff 4745 03:12:18,880 --> 03:12:20,960 that I saw that I found really 4746 03:12:20,960 --> 03:12:23,040 interesting that I might want to explore 4747 03:12:23,040 --> 03:12:24,960 later, but didn't really explore in 4748 03:12:24,960 --> 03:12:30,479 detail now because there's h method 4749 03:12:30,479 --> 03:12:33,840 types in the forms. So when I post 4750 03:12:33,840 --> 03:12:36,240 something to tracks in the form, there's 4751 03:12:36,240 --> 03:12:38,479 an underscore method equals put in the 4752 03:12:38,479 --> 03:12:39,760 body of the message. And I'm wondering 4753 03:12:39,760 --> 03:12:43,279 how does that differ from the actual 4754 03:12:43,279 --> 03:12:46,080 HTTP verb. I just find it interesting. 4755 03:12:46,080 --> 03:12:47,279 It's a difference. It's the kind of 4756 03:12:47,279 --> 03:12:48,800 thing that I would want to explore on a 4757 03:12:48,800 --> 03:12:51,600 technical basis. When I'm using the 4758 03:12:51,600 --> 03:12:54,800 tracks guey, it's submitting forms like 4759 03:12:54,800 --> 03:12:58,160 post requests with you uh encoded form 4760 03:12:58,160 --> 03:13:00,640 posts. It's not using the API, but I 4761 03:13:00,640 --> 03:13:02,479 know that tracks has an API. So, I'm 4762 03:13:02,479 --> 03:13:05,439 wondering if the forms API is different 4763 03:13:05,439 --> 03:13:08,960 from the JSON API, the REST API. So, 4764 03:13:08,960 --> 03:13:10,319 could there be a mismatch there? I 4765 03:13:10,319 --> 03:13:12,240 haven't explored the API in any way, but 4766 03:13:12,240 --> 03:13:14,640 seeing this difference makes me think 4767 03:13:14,640 --> 03:13:16,720 that I need to explore the API around 4768 03:13:16,720 --> 03:13:19,680 this area. I was limited in what I could 4769 03:13:19,680 --> 03:13:21,760 observe because I didn't include any 4770 03:13:21,760 --> 03:13:25,120 database tools in order to check whether 4771 03:13:25,120 --> 03:13:27,920 the system was actually not changing 4772 03:13:27,920 --> 03:13:30,080 data cuz it was telling every time I 4773 03:13:30,080 --> 03:13:31,520 change something it was saying yes I've 4774 03:13:31,520 --> 03:13:33,279 made this change and it shouldn't have 4775 03:13:33,279 --> 03:13:36,720 been. So I wanted to double check that 4776 03:13:36,720 --> 03:13:38,800 it wasn't actually making the change. 4777 03:13:38,800 --> 03:13:40,479 Like when I was putting a context into 4778 03:13:40,479 --> 03:13:43,359 an invalid state, it would happily go 4779 03:13:43,359 --> 03:13:45,279 yes, I have made your change. But it 4780 03:13:45,279 --> 03:13:46,880 didn't actually persist that change. But 4781 03:13:46,880 --> 03:13:49,040 the way I checked that was by doing a an 4782 03:13:49,040 --> 03:13:52,720 XML export of the data, but I still 4783 03:13:52,720 --> 03:13:54,239 don't know whether that's in the 4784 03:13:54,239 --> 03:13:56,960 database or not. I assume the system is 4785 03:13:56,960 --> 03:13:59,439 accurately reporting what it's exporting 4786 03:13:59,439 --> 03:14:01,279 from the database and not from a cache, 4787 03:14:01,279 --> 03:14:03,760 but I can't check that myself. if I 4788 03:14:03,760 --> 03:14:06,399 can't convince myself completely of that 4789 03:14:06,399 --> 03:14:07,760 because I don't have any way of 4790 03:14:07,760 --> 03:14:09,279 accessing the database at this point in 4791 03:14:09,279 --> 03:14:12,080 time. The tools that I did use 4792 03:14:12,080 --> 03:14:14,239 automatically record an HTTP session 4793 03:14:14,239 --> 03:14:16,399 which is great. I've got all the logs, 4794 03:14:16,399 --> 03:14:18,399 all the messages that I sent. I can 4795 03:14:18,399 --> 03:14:21,520 easily replay HTTP messages and it's 4796 03:14:21,520 --> 03:14:23,120 easy for me to see the traffic 4797 03:14:23,120 --> 03:14:24,960 separately from the dev tools. So, I can 4798 03:14:24,960 --> 03:14:27,439 use the dev tools exclusively for DOM 4799 03:14:27,439 --> 03:14:29,200 inspection and I can use the proxy 4800 03:14:29,200 --> 03:14:32,080 exclusively for HTTP. in terms of 4801 03:14:32,080 --> 03:14:34,640 lessons like tools 4802 03:14:34,640 --> 03:14:37,120 tools can impose a risk right every tool 4803 03:14:37,120 --> 03:14:39,439 that we add imposes some sort of risk in 4804 03:14:39,439 --> 03:14:42,560 terms of time to learn maybe it crashes 4805 03:14:42,560 --> 03:14:45,120 maybe there's bugs in that tool I lost 4806 03:14:45,120 --> 03:14:47,359 time using Zap because I hadn't used it 4807 03:14:47,359 --> 03:14:48,640 for a while so I had to set up the 4808 03:14:48,640 --> 03:14:50,399 certificates had to make sure it was 4809 03:14:50,399 --> 03:14:53,040 working on Mac had to and try and get it 4810 03:14:53,040 --> 03:14:55,439 upgraded to the latest version so it 4811 03:14:55,439 --> 03:14:58,560 cost me some time um and that's the kind 4812 03:14:58,560 --> 03:15:00,560 of minimal impact the tool has just in 4813 03:15:00,560 --> 03:15:02,319 terms of starting when we're doing this 4814 03:15:02,319 --> 03:15:04,880 kind of technical sessions, we have more 4815 03:15:04,880 --> 03:15:06,479 information than we can handle and 4816 03:15:06,479 --> 03:15:08,479 investigate at that point in time. So, 4817 03:15:08,479 --> 03:15:10,560 there's much more risk of going off 4818 03:15:10,560 --> 03:15:13,600 charter um or or taking up too much 4819 03:15:13,600 --> 03:15:15,840 time. So, we have to be very careful 4820 03:15:15,840 --> 03:15:17,439 about that. One of the good things about 4821 03:15:17,439 --> 03:15:19,920 pairing on testing is that there's less 4822 03:15:19,920 --> 03:15:21,439 risk of going off charter and there's 4823 03:15:21,439 --> 03:15:24,080 less risk of going off time because you 4824 03:15:24,080 --> 03:15:27,120 got someone else watching that as well. 4825 03:15:27,120 --> 03:15:30,720 Some test ideas are not possible without 4826 03:15:30,720 --> 03:15:34,160 tooling. Right? I was able to submit a 4827 03:15:34,160 --> 03:15:37,520 form with multiple fields in it. That 4828 03:15:37,520 --> 03:15:40,479 would not be possible without tooling. 4829 03:15:40,479 --> 03:15:42,399 So I was really trying to stress the 4830 03:15:42,399 --> 03:15:45,120 back end. I can't possibly do that 4831 03:15:45,120 --> 03:15:48,399 without tooling. Um I do make sure that 4832 03:15:48,399 --> 03:15:50,560 I duplicate bugs at the GUI as well as 4833 03:15:50,560 --> 03:15:53,359 HTTP just to make it easier to justify 4834 03:15:53,359 --> 03:15:56,960 or advocate for them. And even though 4835 03:15:56,960 --> 03:16:00,640 the proxy is storing all the traffic, I 4836 03:16:00,640 --> 03:16:03,520 still copy HTTP request and URLs into my 4837 03:16:03,520 --> 03:16:07,200 notes because in my notes, they have 4838 03:16:07,200 --> 03:16:09,359 much more weight. I'm saying this 4839 03:16:09,359 --> 03:16:12,000 specific thing is important and I rely 4840 03:16:12,000 --> 03:16:16,000 on my notes as evidence. I rely on the 4841 03:16:16,000 --> 03:16:18,640 session recording in the HTB traffic as 4842 03:16:18,640 --> 03:16:21,120 a a useful side effect that may be 4843 03:16:21,120 --> 03:16:24,160 useful in the future. But my notes are 4844 03:16:24,160 --> 03:16:27,439 my essential evidence that I really want 4845 03:16:27,439 --> 03:16:31,160 to focus in on. 4846 03:16:38,800 --> 03:16:40,720 So what did I not do? Well, there was so 4847 03:16:40,720 --> 03:16:42,720 many things I didn't do. I mean, I 4848 03:16:42,720 --> 03:16:44,960 haven't used the API yet. There was I 4849 03:16:44,960 --> 03:16:46,640 haven't checked state transitions in 4850 03:16:46,640 --> 03:16:49,760 API. This is such a tiny tiny amount of 4851 03:16:49,760 --> 03:16:53,760 testing over like four hours. But things 4852 03:16:53,760 --> 03:16:56,319 that I really didn't do in here, I 4853 03:16:56,319 --> 03:16:58,560 didn't do any automating, right? If I 4854 03:16:58,560 --> 03:17:00,239 was doing automating, that would be said 4855 03:17:00,239 --> 03:17:02,880 planned separately, possibly probably 4856 03:17:02,880 --> 03:17:05,200 not even as an exploratory session 4857 03:17:05,200 --> 03:17:09,200 because automating is uh most usually a 4858 03:17:09,200 --> 03:17:12,399 strategic activity. Therefore, it's 4859 03:17:12,399 --> 03:17:15,520 likely to be a story level task that we 4860 03:17:15,520 --> 03:17:18,239 automate the acceptance criteria, 4861 03:17:18,239 --> 03:17:21,439 not likely to be um tracked as a 4862 03:17:21,439 --> 03:17:24,479 session. If it was tactical automating 4863 03:17:24,479 --> 03:17:26,880 to support the testing, then it would 4864 03:17:26,880 --> 03:17:29,120 probably be a session, right? Like a 4865 03:17:29,120 --> 03:17:30,800 tooling session where I knock up a 4866 03:17:30,800 --> 03:17:33,279 script to do X. That would be an 4867 03:17:33,279 --> 03:17:35,120 exploratory session that would get 4868 03:17:35,120 --> 03:17:37,600 tracked. But automating when it's 4869 03:17:37,600 --> 03:17:39,920 tactical is like when it's strategic is 4870 03:17:39,920 --> 03:17:42,399 likely to be factored into the project. 4871 03:17:42,399 --> 03:17:45,520 When I automate, I start tactically. So 4872 03:17:45,520 --> 03:17:47,840 I start with crude code. Something that 4873 03:17:47,840 --> 03:17:50,319 basically just works. It might need some 4874 03:17:50,319 --> 03:17:52,640 uh massaging to make possible. Like I 4875 03:17:52,640 --> 03:17:54,720 might have to debug it because there's 4876 03:17:54,720 --> 03:17:56,640 no synchronization in place to slow it 4877 03:17:56,640 --> 03:17:58,960 down. I might have to but I'm I'm 4878 03:17:58,960 --> 03:18:01,439 automating with support. 4879 03:18:01,439 --> 03:18:03,520 having something that works, I then 4880 03:18:03,520 --> 03:18:05,600 refactor it to make it reliable to 4881 03:18:05,600 --> 03:18:07,359 create abstraction layers that we can 4882 03:18:07,359 --> 03:18:09,840 use later on. 4883 03:18:09,840 --> 03:18:13,279 So I start very ad hoc and move into 4884 03:18:13,279 --> 03:18:17,200 more uh strategic approaches. 4885 03:18:17,200 --> 03:18:19,920 I think it's very important that 4886 03:18:19,920 --> 03:18:24,239 um we learn some tools well and just use 4887 03:18:24,239 --> 03:18:27,279 those as our default. Um, as we move 4888 03:18:27,279 --> 03:18:29,120 between projects, the default may 4889 03:18:29,120 --> 03:18:32,080 change, but what we want is tooling that 4890 03:18:32,080 --> 03:18:35,040 we can use as experts to get value out 4891 03:18:35,040 --> 03:18:36,960 of quickly. The tools should not be 4892 03:18:36,960 --> 03:18:39,120 slowing us down. They're there to help 4893 03:18:39,120 --> 03:18:44,720 us. So, I'm unlikely to automate in PHP 4894 03:18:44,720 --> 03:18:47,040 unless the entire project is PHP, in 4895 03:18:47,040 --> 03:18:49,439 which case it's strategic. 4896 03:18:49,439 --> 03:18:51,680 But if I'm automating on a PHP project 4897 03:18:51,680 --> 03:18:54,160 for myself for tactical reasons, I might 4898 03:18:54,160 --> 03:18:55,920 well do that in Java because I know that 4899 03:18:55,920 --> 03:18:57,439 better. 4900 03:18:57,439 --> 03:19:01,600 So I didn't show any of the admin stuff, 4901 03:19:01,600 --> 03:19:03,920 none of the admin sessions, none of the 4902 03:19:03,920 --> 03:19:07,040 uploading my notes into Jira, none of my 4903 03:19:07,040 --> 03:19:10,239 adding testing tasks, none of the here 4904 03:19:10,239 --> 03:19:12,720 are my test conditions I think I'm going 4905 03:19:12,720 --> 03:19:15,279 to use, adding them in as ideas into 4906 03:19:15,279 --> 03:19:18,160 this story. I didn't raise any defects. 4907 03:19:18,160 --> 03:19:20,560 I just had notes that I should raise 4908 03:19:20,560 --> 03:19:22,880 defects. I didn't have any processes 4909 03:19:22,880 --> 03:19:24,640 where I went and spoke to the developers 4910 03:19:24,640 --> 03:19:27,279 and asked clarifying questions. I didn't 4911 03:19:27,279 --> 03:19:29,200 communicate anything to anyone during 4912 03:19:29,200 --> 03:19:32,160 this. So, 4913 03:19:32,160 --> 03:19:34,800 and lessons that I've learned in the 4914 03:19:34,800 --> 03:19:37,040 past are to try and keep this as 4915 03:19:37,040 --> 03:19:39,760 lightweight as possible. Um, very often 4916 03:19:39,760 --> 03:19:42,080 I'll see teams who have they're on agile 4917 03:19:42,080 --> 03:19:43,680 projects, they're doing agile things, 4918 03:19:43,680 --> 03:19:46,720 but then suddenly they have test tools, 4919 03:19:46,720 --> 03:19:49,520 a test tracking system, a test log 4920 03:19:49,520 --> 03:19:52,319 system, an add-on for tool X that 4921 03:19:52,319 --> 03:19:54,560 supports the exploratory testing 4922 03:19:54,560 --> 03:19:56,960 logging. I try and avoid anything like 4923 03:19:56,960 --> 03:20:00,160 that, particularly on agile projects 4924 03:20:00,160 --> 03:20:01,520 because the only people that are ever 4925 03:20:01,520 --> 03:20:04,560 going to look at test in quotes tool are 4926 03:20:04,560 --> 03:20:07,439 people on the test side. So no one else 4927 03:20:07,439 --> 03:20:09,200 like the scrum masters, the product 4928 03:20:09,200 --> 03:20:11,120 owners, the programmers, none of them 4929 03:20:11,120 --> 03:20:13,200 are going to look at the testing stuff. 4930 03:20:13,200 --> 03:20:15,680 Um they will look at the testing stuff. 4931 03:20:15,680 --> 03:20:18,160 If it's in the normal tooling, if it's 4932 03:20:18,160 --> 03:20:21,920 just a task, if it's another story, then 4933 03:20:21,920 --> 03:20:24,000 people will look at it. So I just try 4934 03:20:24,000 --> 03:20:27,760 and avoid it because it adds that extra 4935 03:20:27,760 --> 03:20:32,760 resistance into the collaboration. 4936 03:20:41,520 --> 03:20:42,880 So, you've seen this all the way 4937 03:20:42,880 --> 03:20:45,600 through, but this is the basic testing 4938 03:20:45,600 --> 03:20:48,960 flow that I used, right? I'd start, I'd 4939 03:20:48,960 --> 03:20:50,800 plan. Even if it was a what am I going 4940 03:20:50,800 --> 03:20:52,960 to do next and then have an idea, oh, I 4941 03:20:52,960 --> 03:20:55,120 better install the software. That would 4942 03:20:55,120 --> 03:20:59,439 then lead to a session. I try to capture 4943 03:20:59,439 --> 03:21:02,080 things as sessions because I'm trying to 4944 03:21:02,080 --> 03:21:03,760 manage my time. So I want to make sure 4945 03:21:03,760 --> 03:21:05,920 that my aims are as clear as possible 4946 03:21:05,920 --> 03:21:08,319 and I can do them in 5 minutes, 10 4947 03:21:08,319 --> 03:21:09,760 minutes, 20 minutes, half an hour, an 4948 03:21:09,760 --> 03:21:12,479 hour, right? I want to have very tightly 4949 03:21:12,479 --> 03:21:15,040 constrained activities because very 4950 03:21:15,040 --> 03:21:16,399 often in a working environment you'll 4951 03:21:16,399 --> 03:21:18,479 get interrupted. I mean, when you look 4952 03:21:18,479 --> 03:21:19,680 through the notes, you'll see that even 4953 03:21:19,680 --> 03:21:22,000 in my testing, I was interrupted, but I 4954 03:21:22,000 --> 03:21:24,479 had a I just got interrupted time stamp 4955 03:21:24,479 --> 03:21:26,800 and then a I'm back at work time stamp. 4956 03:21:26,800 --> 03:21:29,279 So, we can still use our logging to 4957 03:21:29,279 --> 03:21:31,200 handle interruptions. Each of the 4958 03:21:31,200 --> 03:21:34,800 sessions either formally or deliberately 4959 03:21:34,800 --> 03:21:37,200 or informally will lead to a debrief 4960 03:21:37,200 --> 03:21:39,359 session like just a thinking about what 4961 03:21:39,359 --> 03:21:41,520 I did, taking stock, collecting it, 4962 03:21:41,520 --> 03:21:44,080 tidying it up, uploading it. And that 4963 03:21:44,080 --> 03:21:46,080 will then lead onto a more formal admin 4964 03:21:46,080 --> 03:21:49,120 session where I will track the time of I 4965 03:21:49,120 --> 03:21:51,279 now have to raise all these defects. I 4966 03:21:51,279 --> 03:21:54,239 now have to um we have a a mandatory 4967 03:21:54,239 --> 03:21:56,239 process where my logs get uploaded into 4968 03:21:56,239 --> 03:21:58,080 a jer and I will do that and I'll track 4969 03:21:58,080 --> 03:21:59,920 that time. 4970 03:21:59,920 --> 03:22:02,319 But the main sessions that I used were 4971 03:22:02,319 --> 03:22:04,880 planning sessions um an environment or 4972 03:22:04,880 --> 03:22:06,800 an installer setup session a health 4973 03:22:06,800 --> 03:22:08,640 check session where I'm making sure that 4974 03:22:08,640 --> 03:22:10,800 things are right before I move forward. 4975 03:22:10,800 --> 03:22:14,319 a recon session like a modeling session 4976 03:22:14,319 --> 03:22:17,439 to help me understand what I'm doing. A 4977 03:22:17,439 --> 03:22:21,760 coverage session where I'm constraining 4978 03:22:21,760 --> 03:22:23,840 my testing to a particular coverage 4979 03:22:23,840 --> 03:22:25,520 scope which is different from an 4980 03:22:25,520 --> 03:22:28,000 exploratory session which has much more 4981 03:22:28,000 --> 03:22:29,920 free reign. But then there's different 4982 03:22:29,920 --> 03:22:31,920 types of um exploratory sessions. And 4983 03:22:31,920 --> 03:22:33,600 remember these classifications are 4984 03:22:33,600 --> 03:22:36,479 arbitrary, right? They're me making this 4985 03:22:36,479 --> 03:22:39,279 up to get a better handle on what I did. 4986 03:22:39,279 --> 03:22:42,800 This is not what I expect you to um 4987 03:22:42,800 --> 03:22:44,399 communicate. This is not how I expect 4988 03:22:44,399 --> 03:22:47,840 you to model. But and you you do this 4989 03:22:47,840 --> 03:22:49,200 for yourself. I'm just trying to make 4990 03:22:49,200 --> 03:22:51,359 the distinctions that I thought were 4991 03:22:51,359 --> 03:22:52,800 important. I could call each one of 4992 03:22:52,800 --> 03:22:57,040 these just session and I would be fine. 4993 03:22:57,040 --> 03:22:58,960 But the important point is I know what 4994 03:22:58,960 --> 03:23:01,120 my objective is and I take stock 4995 03:23:01,120 --> 03:23:02,800 afterwards. And there's a difference 4996 03:23:02,800 --> 03:23:06,640 between the actual value work and the 4997 03:23:06,640 --> 03:23:08,720 admin work. Right? the admin work 4998 03:23:08,720 --> 03:23:10,560 changes based on the environment and the 4999 03:23:10,560 --> 03:23:13,200 process we're using. These other things 5000 03:23:13,200 --> 03:23:18,080 are almost context independent, right? I 5001 03:23:18,080 --> 03:23:19,920 will always have some form of coverage 5002 03:23:19,920 --> 03:23:22,160 session where I'm tightly constrained. 5003 03:23:22,160 --> 03:23:25,200 Um, but the admin will vary from project 5004 03:23:25,200 --> 03:23:26,960 to project, environment to environment, 5005 03:23:26,960 --> 03:23:29,040 site to site. 5006 03:23:29,040 --> 03:23:33,279 Um, so take this as a a rough flow. Mix 5007 03:23:33,279 --> 03:23:35,359 and match them. Do them as you want. Do 5008 03:23:35,359 --> 03:23:37,200 planning. do debrief to check if you're 5009 03:23:37,200 --> 03:23:39,840 planning, plan some more. Um, then come 5010 03:23:39,840 --> 03:23:42,239 in and do a coverage session, then jump 5011 03:23:42,239 --> 03:23:43,760 to an admin session and include your 5012 03:23:43,760 --> 03:23:45,920 debrief in the ad. I don't really mind, 5013 03:23:45,920 --> 03:23:49,200 but whatever you do, chunk your work 5014 03:23:49,200 --> 03:23:52,239 into small chunks and be very focused as 5015 03:23:52,239 --> 03:23:55,560 you do it. 5016 03:24:03,439 --> 03:24:06,960 Okay. So as an end summary section, I 5017 03:24:06,960 --> 03:24:08,720 just want to describe the testing in a 5018 03:24:08,720 --> 03:24:10,720 bit more detail, go over tooling, bugs, 5019 03:24:10,720 --> 03:24:12,160 explanation, coverage, just try and make 5020 03:24:12,160 --> 03:24:14,960 some um summary distinctions. Now, this 5021 03:24:14,960 --> 03:24:17,760 was interesting to me, right? Of the 5022 03:24:17,760 --> 03:24:19,680 four hours essentially that I spent 5023 03:24:19,680 --> 03:24:21,840 testing, only one and a half hours were 5024 03:24:21,840 --> 03:24:25,359 hands-on. Um, which and if I if this was 5025 03:24:25,359 --> 03:24:28,080 a real project, there'd be another two, 5026 03:24:28,080 --> 03:24:30,319 three, possibly four hours of admin 5027 03:24:30,319 --> 03:24:32,080 raising the defects, talking to people, 5028 03:24:32,080 --> 03:24:35,680 investigating things. So the the real 5029 03:24:35,680 --> 03:24:38,640 point here is that a lot of what we do 5030 03:24:38,640 --> 03:24:41,920 in testing goes unnoticed and for a lot 5031 03:24:41,920 --> 03:24:44,800 of people goes unttracked. I track it in 5032 03:24:44,800 --> 03:24:47,040 my daily notes all the time. A lot of 5033 03:24:47,040 --> 03:24:49,600 people do not track their planning 5034 03:24:49,600 --> 03:24:52,000 sessions. They do not mark down when 5035 03:24:52,000 --> 03:24:54,080 they start going to a meeting what was 5036 03:24:54,080 --> 03:24:56,080 covered. They don't track things. So 5037 03:24:56,080 --> 03:24:58,479 their time gets lost. I think it's 5038 03:24:58,479 --> 03:25:00,960 really really important that we we know 5039 03:25:00,960 --> 03:25:02,800 where our time goes that we track it in 5040 03:25:02,800 --> 03:25:04,399 order to be more effective with our use 5041 03:25:04,399 --> 03:25:06,960 of time but also to help other people 5042 03:25:06,960 --> 03:25:09,520 understand what we do and the more that 5043 03:25:09,520 --> 03:25:12,880 we can make our testing visible just the 5044 03:25:12,880 --> 03:25:16,080 less hassle you get about are you adding 5045 03:25:16,080 --> 03:25:18,080 value because you're demonstrating I'm 5046 03:25:18,080 --> 03:25:19,359 doing these activities and I'm doing 5047 03:25:19,359 --> 03:25:21,120 these activities because this is the 5048 03:25:21,120 --> 03:25:24,160 value that comes out of it. So I 5049 03:25:24,160 --> 03:25:26,640 encourage you that's what partly why I'm 5050 03:25:26,640 --> 03:25:28,560 chunking down the work into different 5051 03:25:28,560 --> 03:25:30,880 sessions because it justifies the 5052 03:25:30,880 --> 03:25:32,960 existence. We know the value of a 5053 03:25:32,960 --> 03:25:35,200 modeling session is to help us think 5054 03:25:35,200 --> 03:25:38,720 things through and plan it. So because a 5055 03:25:38,720 --> 03:25:40,160 lot of testing goes unnoticed and 5056 03:25:40,160 --> 03:25:42,640 unttracked. I encourage you to make it 5057 03:25:42,640 --> 03:25:46,080 noticeable and to make it tracked. 5058 03:25:46,080 --> 03:25:49,439 So bugs are interesting. I if I had 5059 03:25:49,439 --> 03:25:52,319 found no bugs in tracks, I would be 5060 03:25:52,319 --> 03:25:55,439 happy, right? Because this exercise for 5061 03:25:55,439 --> 03:25:59,279 me was about the process that I'm using. 5062 03:25:59,279 --> 03:26:02,319 But in the real world, um, bugs are a 5063 03:26:02,319 --> 03:26:04,160 visible output. And for a lot of people, 5064 03:26:04,160 --> 03:26:05,920 they're the most important visible 5065 03:26:05,920 --> 03:26:08,479 output. Where testing itself is a 5066 03:26:08,479 --> 03:26:10,239 process of deliberate exploration and 5067 03:26:10,239 --> 03:26:11,920 coverage, 5068 03:26:11,920 --> 03:26:14,000 finding bugs is is simply a side effect. 5069 03:26:14,000 --> 03:26:15,680 Right? We find a bug because we try and 5070 03:26:15,680 --> 03:26:17,279 cover an area that we thought existed 5071 03:26:17,279 --> 03:26:20,160 and it doesn't. Or we try and pursue a 5072 03:26:20,160 --> 03:26:22,800 particular coverage path, but we can't 5073 03:26:22,800 --> 03:26:25,439 finish it because there's a bug, right? 5074 03:26:25,439 --> 03:26:27,760 Bugs essentially are a side effect from 5075 03:26:27,760 --> 03:26:30,479 our testing, exploration, and coverage. 5076 03:26:30,479 --> 03:26:32,160 But bugs are where people put in the 5077 03:26:32,160 --> 03:26:33,760 time and attention, and they can soak up 5078 03:26:33,760 --> 03:26:36,399 a lot of time, right? In the uh 5079 03:26:36,399 --> 03:26:38,880 exploration, I I note down here's a 5080 03:26:38,880 --> 03:26:40,720 potential issue. If I have to go then go 5081 03:26:40,720 --> 03:26:43,200 and raise that as a bug that can take me 5082 03:26:43,200 --> 03:26:45,279 another half hour an hour and then it 5083 03:26:45,279 --> 03:26:47,359 goes through a formal process. So an 5084 03:26:47,359 --> 03:26:49,439 agile processes that's why we encourage 5085 03:26:49,439 --> 03:26:52,319 people after your session when you find 5086 03:26:52,319 --> 03:26:54,800 an issue go and speak to someone about 5087 03:26:54,800 --> 03:26:56,720 it and see whether you can pair on them 5088 03:26:56,720 --> 03:26:58,960 and get it fixed. Sometimes you can't do 5089 03:26:58,960 --> 03:27:01,520 that because you have to plan uh to make 5090 03:27:01,520 --> 03:27:04,960 space for that activity. Um, but uh if 5091 03:27:04,960 --> 03:27:07,520 you do perhaps it's possible to stick it 5092 03:27:07,520 --> 03:27:10,479 on the board as a bug and then a note of 5093 03:27:10,479 --> 03:27:14,239 your session. But the less formal we 5094 03:27:14,239 --> 03:27:17,680 make it the less time it takes. So but 5095 03:27:17,680 --> 03:27:19,920 some projects if you find a bug in order 5096 03:27:19,920 --> 03:27:21,760 to justify the time for doing it you 5097 03:27:21,760 --> 03:27:23,439 have to raise it into Jer and then we 5098 03:27:23,439 --> 03:27:25,040 have to plan it and discuss it. If 5099 03:27:25,040 --> 03:27:27,359 that's the process, that's fine. In 5100 03:27:27,359 --> 03:27:29,359 which case, it's very important that we 5101 03:27:29,359 --> 03:27:31,200 track that time so that people 5102 03:27:31,200 --> 03:27:34,080 understand how much of our time is spent 5103 03:27:34,080 --> 03:27:37,040 on admin as opposed to actually testing. 5104 03:27:37,040 --> 03:27:39,040 So tooling comes from the needs of 5105 03:27:39,040 --> 03:27:41,600 testing, right? Our need to observe, 5106 03:27:41,600 --> 03:27:44,720 interrogate, manipulate, um do the admin 5107 03:27:44,720 --> 03:27:46,319 modeling and evidence gathering 5108 03:27:46,319 --> 03:27:47,840 processes. 5109 03:27:47,840 --> 03:27:49,920 That also comes from the technology that 5110 03:27:49,920 --> 03:27:52,640 we're choosing. And the technology can 5111 03:27:52,640 --> 03:27:55,600 hinder the tooling. We might be using 5112 03:27:55,600 --> 03:27:57,359 such advanced technology that the 5113 03:27:57,359 --> 03:27:59,439 tooling isn't there. Uh we might be 5114 03:27:59,439 --> 03:28:01,840 using a brand spanking new JavaScript 5115 03:28:01,840 --> 03:28:04,160 framework that has no debug tools that 5116 03:28:04,160 --> 03:28:06,479 has no way of actually working with it 5117 03:28:06,479 --> 03:28:09,359 which can impact the testing. 5118 03:28:09,359 --> 03:28:10,960 Consequently, we then have to rely on 5119 03:28:10,960 --> 03:28:12,960 our technical knowledge for HTTP 5120 03:28:12,960 --> 03:28:16,080 JavaScript the DOM. it it becomes a 5121 03:28:16,080 --> 03:28:19,359 risk. If we don't have the tooling that 5122 03:28:19,359 --> 03:28:21,600 supports the technology, we should flag 5123 03:28:21,600 --> 03:28:24,880 that as a risk and and tag it as because 5124 03:28:24,880 --> 03:28:27,200 we're doing this and it makes it a lot 5125 03:28:27,200 --> 03:28:29,920 harder to test because I can't gather 5126 03:28:29,920 --> 03:28:31,760 the evidence. I can't see the memory 5127 03:28:31,760 --> 03:28:33,600 usage. I can't observe this. I can't 5128 03:28:33,600 --> 03:28:36,080 pause it. I can't interrogate all those 5129 03:28:36,080 --> 03:28:39,840 things. So, it's worth flagging these 5130 03:28:39,840 --> 03:28:42,960 things up if you're in that situation. 5131 03:28:42,960 --> 03:28:44,880 So, a couple points on coverage just 5132 03:28:44,880 --> 03:28:47,680 before we finish. Um, because I made the 5133 03:28:47,680 --> 03:28:49,439 point that there was a difference 5134 03:28:49,439 --> 03:28:51,120 between an exploration section and a 5135 03:28:51,120 --> 03:28:54,080 coverage section in my head. Right now, 5136 03:28:54,080 --> 03:28:55,680 at all points in our testing, at all 5137 03:28:55,680 --> 03:28:57,600 points in the activities that we use in 5138 03:28:57,600 --> 03:28:59,279 testing, we are exploring. We're 5139 03:28:59,279 --> 03:29:01,359 exploring when we're communicating, when 5140 03:29:01,359 --> 03:29:03,200 we're asking questions in a story, when 5141 03:29:03,200 --> 03:29:04,880 we're in meetings trying to clarify 5142 03:29:04,880 --> 03:29:07,520 things. Um, as we're doing our testing 5143 03:29:07,520 --> 03:29:10,080 or any activity, we're observing and 5144 03:29:10,080 --> 03:29:12,160 we're trying to process that and reflect 5145 03:29:12,160 --> 03:29:13,920 on it so we can identify new 5146 03:29:13,920 --> 03:29:16,720 opportunities to test or investigate or 5147 03:29:16,720 --> 03:29:19,279 to-dos or questions to ask. We do not 5148 03:29:19,279 --> 03:29:21,760 need to follow those immediately. We can 5149 03:29:21,760 --> 03:29:24,239 add them in our notes and do them later. 5150 03:29:24,239 --> 03:29:26,000 And we should add them in our notes 5151 03:29:26,000 --> 03:29:27,279 regardless if we're going to do them 5152 03:29:27,279 --> 03:29:30,000 immediately or later. But the main 5153 03:29:30,000 --> 03:29:32,399 difference is when we're focused on 5154 03:29:32,399 --> 03:29:35,680 coverage, we constrain our exploration 5155 03:29:35,680 --> 03:29:37,760 within that coverage. And it's a lot 5156 03:29:37,760 --> 03:29:40,399 easier to understand what we did. And 5157 03:29:40,399 --> 03:29:43,040 our debriefs are mainly there to go, 5158 03:29:43,040 --> 03:29:46,239 well, what else did we cover? What did 5159 03:29:46,239 --> 03:29:48,319 we miss in our initial coverage 5160 03:29:48,319 --> 03:29:49,840 assessment? 5161 03:29:49,840 --> 03:29:51,760 Um, and it might be, well, what simply 5162 03:29:51,760 --> 03:29:53,120 could we not do? What did we have to 5163 03:29:53,120 --> 03:29:54,560 descope? And we might have to do that 5164 03:29:54,560 --> 03:29:56,080 later. But when we're focused on 5165 03:29:56,080 --> 03:29:57,680 exploration, 5166 03:29:57,680 --> 03:30:00,800 the coverage is is much less evident. It 5167 03:30:00,800 --> 03:30:02,720 has to be reverse engineered from our 5168 03:30:02,720 --> 03:30:05,040 logs, from an from our evidence, from 5169 03:30:05,040 --> 03:30:07,600 our notes because we are so focused on 5170 03:30:07,600 --> 03:30:10,479 the thinking process, the doing, the 5171 03:30:10,479 --> 03:30:12,560 working out what we're going to do next, 5172 03:30:12,560 --> 03:30:15,680 the modeling in our head, the working 5173 03:30:15,680 --> 03:30:17,279 out, well, what does that mean? What 5174 03:30:17,279 --> 03:30:20,080 should I do? All the questions. Um, we 5175 03:30:20,080 --> 03:30:22,640 don't track a summary as we are doing 5176 03:30:22,640 --> 03:30:24,479 our our exploration and testing. or I 5177 03:30:24,479 --> 03:30:25,920 don't right some people when they're 5178 03:30:25,920 --> 03:30:28,479 using mindm map tools um try and 5179 03:30:28,479 --> 03:30:30,880 organize their testing as they go 5180 03:30:30,880 --> 03:30:33,840 through into chunks and coverage areas I 5181 03:30:33,840 --> 03:30:37,600 don't do that because I'm a very linear 5182 03:30:37,600 --> 03:30:39,600 uh timebound 5183 03:30:39,600 --> 03:30:41,600 test approach and I will reverse 5184 03:30:41,600 --> 03:30:43,760 engineer that later I mean it's like 5185 03:30:43,760 --> 03:30:46,640 when I'm writing I don't want to edit as 5186 03:30:46,640 --> 03:30:48,479 I'm writing because I want to 5187 03:30:48,479 --> 03:30:50,560 concentrate on the flow and a lot of the 5188 03:30:50,560 --> 03:30:52,800 material that I create is first draft as 5189 03:30:52,800 --> 03:30:54,960 a result of that I'm focused on the 5190 03:30:54,960 --> 03:30:58,720 flow. Then I do a possibly minor um 5191 03:30:58,720 --> 03:31:00,160 spelling error. But very often I'll just 5192 03:31:00,160 --> 03:31:01,680 release it and if they see a spelling 5193 03:31:01,680 --> 03:31:04,960 error in live, I'll fix it in live. But 5194 03:31:04,960 --> 03:31:07,920 I don't edit as I'm writing because I'm 5195 03:31:07,920 --> 03:31:09,279 interrupting my flow. I'm interrupting 5196 03:31:09,279 --> 03:31:11,040 my modeling. I haven't got a handle in 5197 03:31:11,040 --> 03:31:14,479 what I'm doing. I'll go back later to 5198 03:31:14,479 --> 03:31:16,479 edit it. See if it covers everything 5199 03:31:16,479 --> 03:31:19,600 that I need to to add summary points. Um 5200 03:31:19,600 --> 03:31:21,760 I think that's the key point. Um 5201 03:31:21,760 --> 03:31:23,920 coverage. It's well defined. We 5202 03:31:23,920 --> 03:31:26,880 constrain ourselves. Exploration. We 5203 03:31:26,880 --> 03:31:29,040 have to be careful that we don't go too 5204 03:31:29,040 --> 03:31:30,560 far off scope, that we don't spend too 5205 03:31:30,560 --> 03:31:34,239 much time, but we have to do a debrief 5206 03:31:34,239 --> 03:31:40,040 to work out what we actually did. 5207 03:31:47,840 --> 03:31:49,520 That's pretty much it. Because this is a 5208 03:31:49,520 --> 03:31:52,479 case study, I don't really anticipate 5209 03:31:52,479 --> 03:31:55,760 adding more content to this. Although in 5210 03:31:55,760 --> 03:31:58,880 theory, I could do a a live session. The 5211 03:31:58,880 --> 03:32:00,960 the hard the reason I did it this way is 5212 03:32:00,960 --> 03:32:05,760 that it's very hard to test and describe 5213 03:32:05,760 --> 03:32:08,080 what you're doing at the same time. What 5214 03:32:08,080 --> 03:32:11,520 you get is a a slightly less 5215 03:32:11,520 --> 03:32:15,520 uh representative test session. So every 5216 03:32:15,520 --> 03:32:18,399 test session that I've done as a demo is 5217 03:32:18,399 --> 03:32:20,239 not completely representative of the 5218 03:32:20,239 --> 03:32:22,239 work that I do because I don't take as 5219 03:32:22,239 --> 03:32:24,800 many notes um because I'm communicating 5220 03:32:24,800 --> 03:32:26,960 and and rather than communicating via 5221 03:32:26,960 --> 03:32:30,080 notes, I'm communicating verbally. Um I 5222 03:32:30,080 --> 03:32:32,479 I tried to avoid doing that in this 5223 03:32:32,479 --> 03:32:35,120 exercise so that people can see the 5224 03:32:35,120 --> 03:32:37,359 exact things that I do, the depth to 5225 03:32:37,359 --> 03:32:40,640 which I make notes, the the amount of 5226 03:32:40,640 --> 03:32:42,960 questions that I add in the the 5227 03:32:42,960 --> 03:32:44,640 documentation. It's really important to 5228 03:32:44,640 --> 03:32:48,960 see that. Um and what I'm hoping you'll 5229 03:32:48,960 --> 03:32:51,760 do is you'll look you'll watch some of 5230 03:32:51,760 --> 03:32:53,520 these videos. You may not watch them all 5231 03:32:53,520 --> 03:32:55,040 if you got to this point. Maybe you 5232 03:32:55,040 --> 03:32:57,200 skipped them all. Who knows? But my hope 5233 03:32:57,200 --> 03:33:00,160 is that you'll look at the notes that I 5234 03:33:00,160 --> 03:33:02,479 made and look at the kind of notes that 5235 03:33:02,479 --> 03:33:06,080 you make and go right should I be making 5236 03:33:06,080 --> 03:33:08,239 more notes? Can I make more notes? How 5237 03:33:08,239 --> 03:33:10,479 is it possible to add more note 5238 03:33:10,479 --> 03:33:11,840 takingaking in? You might look at my 5239 03:33:11,840 --> 03:33:13,920 notes and go these are rubbish. There is 5240 03:33:13,920 --> 03:33:18,160 no depth or um these these notes just 5241 03:33:18,160 --> 03:33:20,239 aren't covered enough. Which is great. 5242 03:33:20,239 --> 03:33:24,399 Um, what I would like is if you add 5243 03:33:24,399 --> 03:33:27,200 questions or you add uh feedback in 5244 03:33:27,200 --> 03:33:30,319 here. Uh, possibly sharing your own 5245 03:33:30,319 --> 03:33:32,640 examples of how you test, writing blog 5246 03:33:32,640 --> 03:33:34,800 posts about how you test, putting the 5247 03:33:34,800 --> 03:33:36,720 links in here. That would be great cuz 5248 03:33:36,720 --> 03:33:39,200 what the world needs are more examples 5249 03:33:39,200 --> 03:33:42,319 of how people test and why they test 5250 03:33:42,319 --> 03:33:45,279 that way, what drove them to test in 5251 03:33:45,279 --> 03:33:48,160 that way, what made them take notes in 5252 03:33:48,160 --> 03:33:50,720 that form. Right? The more that we 5253 03:33:50,720 --> 03:33:53,680 analyze our own approaches, the more we 5254 03:33:53,680 --> 03:33:56,080 can um explain the benefits of doing 5255 03:33:56,080 --> 03:33:57,760 that and the more we take ownership of 5256 03:33:57,760 --> 03:34:00,399 our own test approach because I am 5257 03:34:00,399 --> 03:34:03,120 absolutely convinced every single person 5258 03:34:03,120 --> 03:34:06,000 has a unique approach to testing. And if 5259 03:34:06,000 --> 03:34:10,080 we do not learn to harness that, we are 5260 03:34:10,080 --> 03:34:13,840 um not taking full advantage of our 5261 03:34:13,840 --> 03:34:17,439 skill sets and abilities. So, my aim for 5262 03:34:17,439 --> 03:34:20,000 for putting all this together is to help 5263 03:34:20,000 --> 03:34:22,239 me get better, to try and make 5264 03:34:22,239 --> 03:34:25,040 distinctions in my thought processes for 5265 03:34:25,040 --> 03:34:28,160 how I test, but to not get hung up on 5266 03:34:28,160 --> 03:34:31,359 them. I'm not going to get hung up on 5267 03:34:31,359 --> 03:34:33,520 the notion that I have to plan, then do 5268 03:34:33,520 --> 03:34:36,479 recon, then debrief. My language will 5269 03:34:36,479 --> 03:34:39,279 change over time, right? My approach to 5270 03:34:39,279 --> 03:34:41,520 testing will change over time. what I 5271 03:34:41,520 --> 03:34:43,920 think is unlikely to change over time is 5272 03:34:43,920 --> 03:34:46,160 my focus on 5273 03:34:46,160 --> 03:34:48,000 um making sure I know what I'm doing in 5274 03:34:48,000 --> 03:34:50,800 advance. Planning, doing stuff and 5275 03:34:50,800 --> 03:34:53,279 capturing evidence in small chunks, 5276 03:34:53,279 --> 03:34:55,920 whatever that session is, looking at 5277 03:34:55,920 --> 03:34:58,560 what I've just done to reflect on it to 5278 03:34:58,560 --> 03:35:00,800 figure out what I'm going to do next and 5279 03:35:00,800 --> 03:35:03,200 what I've learned and what my modeling 5280 03:35:03,200 --> 03:35:06,800 is, right? debrief, then communicating 5281 03:35:06,800 --> 03:35:08,880 to other people, fitting in with the 5282 03:35:08,880 --> 03:35:11,040 project, the admin stuff. Those things 5283 03:35:11,040 --> 03:35:14,720 are unlikely to change. Um, so I think 5284 03:35:14,720 --> 03:35:18,319 this is a relatively good generic model, 5285 03:35:18,319 --> 03:35:20,399 but don't get hung up on it. Don't think 5286 03:35:20,399 --> 03:35:22,319 you need to do these sessions. Don't 5287 03:35:22,319 --> 03:35:24,160 think they need to be the same length 5288 03:35:24,160 --> 03:35:27,439 that I did. You need to model your own 5289 03:35:27,439 --> 03:35:30,160 processes. And I'm suggesting doing it 5290 03:35:30,160 --> 03:35:32,720 this way, like not not the actual 5291 03:35:32,720 --> 03:35:34,800 sessions, but thinking it through in a 5292 03:35:34,800 --> 03:35:38,640 session time in order to help you better 5293 03:35:38,640 --> 03:35:40,720 understand what you do. The more you 5294 03:35:40,720 --> 03:35:42,160 approach your work in small chunks, the 5295 03:35:42,160 --> 03:35:43,760 more you can look at why have I chosen 5296 03:35:43,760 --> 03:35:45,920 to do this now? What is this that I'm 5297 03:35:45,920 --> 03:35:48,160 doing? If it's small enough, you can 5298 03:35:48,160 --> 03:35:50,000 probably give it a name. Otherwise, it 5299 03:35:50,000 --> 03:35:53,920 just becomes testing. And testing is a a 5300 03:35:53,920 --> 03:35:57,040 good word, but it's so generic that it 5301 03:35:57,040 --> 03:35:59,040 really doesn't explain what we do. And 5302 03:35:59,040 --> 03:36:02,800 it's really hard to um convince people 5303 03:36:02,800 --> 03:36:04,640 that we're adding value when we just 5304 03:36:04,640 --> 03:36:06,800 say, "I'm doing testing." But if you 5305 03:36:06,800 --> 03:36:08,560 say, "I'm doing a health check," then 5306 03:36:08,560 --> 03:36:10,239 I'm debriefing to see what I need to do 5307 03:36:10,239 --> 03:36:12,479 next. I'm just doing some recon so that 5308 03:36:12,479 --> 03:36:13,840 I understand what it is I'm going to 5309 03:36:13,840 --> 03:36:16,000 test. I'm just modeling the system so I 5310 03:36:16,000 --> 03:36:17,760 can understand what coverage I'm going 5311 03:36:17,760 --> 03:36:20,399 to achieve. I'm just doing a coverage. 5312 03:36:20,399 --> 03:36:22,319 Now, all of these things help us explain 5313 03:36:22,319 --> 03:36:24,720 a bit better and hopefully when you do 5314 03:36:24,720 --> 03:36:26,239 your modeling, you'll come out with a 5315 03:36:26,239 --> 03:36:28,080 completely different set of words that 5316 03:36:28,080 --> 03:36:30,560 are unique to you that may add more 5317 03:36:30,560 --> 03:36:32,960 value to the external world than 5318 03:36:32,960 --> 03:36:35,359 anything like this does. So, thanks very 5319 03:36:35,359 --> 03:36:37,040 much for um spending the time going 5320 03:36:37,040 --> 03:36:39,120 through it. I found this useful exercise 5321 03:36:39,120 --> 03:36:40,640 putting together. I hope there was 5322 03:36:40,640 --> 03:36:43,040 something useful in there for you. Do 5323 03:36:43,040 --> 03:36:45,279 leave comments and ask questions and uh 5324 03:36:45,279 --> 03:36:48,479 thanks very much.391543

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.