1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
1
00:00:00,120 --> 00:00:02,969
So let's look at how this will work with an example.
2
00:00:02,969 --> 00:00:06,210
I'm going to use this simple program that takes two inputs. The
3
00:00:06,210 --> 00:00:08,790
first input is a string, str, and the second one is
4
00:00:08,790 --> 00:00:11,575
an integer, size. And the problem is called split. And as
5
00:00:11,575 --> 00:00:14,363
the name says what it does is to take this string,
6
00:00:14,363 --> 00:00:17,491
str, and split it into sub string, into chunks of size
7
00:00:17,491 --> 00:00:21,550
characters each. So how do we identify some possible partitions for
8
00:00:21,550 --> 00:00:25,620
this program? If we consider the input size, we can identify
9
00:00:25,620 --> 00:00:29,630
three neutral partitions which are size less than 0. For example,
10
00:00:29,630 --> 00:00:32,259
we want to test how the program behaves. But if we pass an
11
00:00:32,259 --> 00:00:36,100
incorrect size, size equal to 0, which is also a partition. In
12
00:00:36,100 --> 00:00:39,390
this case, a partition with a single element. And the third case
13
00:00:39,390 --> 00:00:42,540
is size greater than 0, which I will consider to be
14
00:00:42,540 --> 00:00:44,960
kind of the standard case. And actually let me do a, you
15
00:00:44,960 --> 00:00:48,220
know, slight aggression so when I was talking about designer bias. So
16
00:00:48,220 --> 00:00:50,630
this is a case in which designer bias might not make you
17
00:00:50,630 --> 00:00:53,050
think of using size less than 0 because you read the
18
00:00:53,050 --> 00:00:56,210
spec. And you sort of assume that the size will be positive.
19
00:00:56,210 --> 00:00:58,556
Whereas the right thing to do when we test is to consider
20
00:00:58,556 --> 00:01:01,700
the complete domain rather than just parts of it. So now let's
21
00:01:01,700 --> 00:01:04,760
look at string, str, and let's see what kind of sub
22
00:01:04,760 --> 00:01:06,538
domains we could identify for this
23
00:01:06,538 --> 00:01:08,670
parameter. And notice another important aspect
24
00:01:08,670 --> 00:01:12,290
here is that we treat each different part of the input independently,
25
00:01:12,290 --> 00:01:15,760
which also helps breaking down the problem. One interesting sub domain is
26
00:01:15,760 --> 00:01:18,980
the domain that includes all the strings whose length is less than
27
00:01:18,980 --> 00:01:22,310
size. So all the strings that will not be displayed. Another subdomain
28
00:01:22,310 --> 00:01:25,000
is all the strings with length which is between the value of
29
00:01:25,000 --> 00:01:28,350
size and twice the value of size. A third subdomain is the one
30
00:01:28,350 --> 00:01:31,820
including all the strings whose length is greater than twice the value
31
00:01:31,820 --> 00:01:35,140
of size. And we can continue and identify more and more subdomain.
32
00:01:35,140 --> 00:01:38,350
The key thing here is that we have to do that based
33
00:01:38,350 --> 00:01:41,180
on the domain. So we need to adapt what we just did here
34
00:01:41,180 --> 00:01:44,620
based on, on the specific domain involved and on the type
35
00:01:44,620 --> 00:01:47,190
of data in this domain. So at this point we said that
36
00:01:47,190 --> 00:01:49,630
there were two steps. One was to identify the subdomains and
37
00:01:49,630 --> 00:01:52,990
the second one was to pick values in this subdomain. The values
38
00:01:52,990 --> 00:01:55,320
that we'll actually use for the testing. In this case, we
39
00:01:55,320 --> 00:01:58,218
do not want to just pick any value. Rather we want to
40
00:01:58,218 --> 00:01:59,871
pick values that are particularly
41
00:01:59,871 --> 00:02:02,710
interesting, particularly representative. So what does
42
00:02:02,710 --> 00:02:05,800
that mean? Well, we're going to do that based on an intuitive idea.
|