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.