about summary refs log tree commit diff
path: root/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt
diff options
context:
space:
mode:
Diffstat (limited to 'usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt')
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt275
1 files changed, 275 insertions, 0 deletions
diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt
new file mode 100644
index 0000000..27bf0fe
--- /dev/null
+++ b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt
@@ -0,0 +1,275 @@
+1

+00:00:00,120 --> 00:00:02,900

+As I mentioned at the beginning of the class, there are many, many,

+

+2

+00:00:02,900 --> 00:00:06,150

+many, white box criteria. And we're not going to have time to cover them

+

+3

+00:00:06,150 --> 00:00:08,000

+all. So what I like to do now is just to give you

+

+4

+00:00:08,000 --> 00:00:11,290

+the flavor, of some other criteria by just mentioning them, and saying a

+

+5

+00:00:11,290 --> 00:00:13,740

+couple of things, about the way they work. And the first one I

+

+6

+00:00:13,740 --> 00:00:15,370

+want to mention is path coverage. And

+

+7

+00:00:15,370 --> 00:00:17,800

+in path coverage, the test requirements are

+

+8

+00:00:17,800 --> 00:00:21,220

+all the paths in the program. So what that means is that to

+

+9

+00:00:21,220 --> 00:00:25,250

+satisfy this criteria, we need to generate enough test cases such that all

+

+10

+00:00:25,250 --> 00:00:27,230

+the paths in my program are covered. As you can

+

+11

+00:00:27,230 --> 00:00:31,970

+imagine this is incredibly expensive because any nontrivial program has got

+

+12

+00:00:31,970 --> 00:00:34,280

+a virtual infinite number of paths and therefore we will

+

+13

+00:00:34,280 --> 00:00:36,910

+need a virtual infinite number of test cases to satisfy the

+

+14

+00:00:36,910 --> 00:00:39,950

+path coverage criteria. Another family of criteria I want to mention

+

+15

+00:00:39,950 --> 00:00:43,970

+are data-flow coverage criteria and in data-flow coverage criteria, the focus

+

+16

+00:00:43,970 --> 00:00:47,480

+shifts from the coverage of individual elements in the code to

+

+17

+00:00:47,480 --> 00:00:50,320

+the coverage of pairs of elements. And in particular the coverage

+

+18

+00:00:50,320 --> 00:00:53,770

+of Statements, in which the content of some memory locations

+

+19

+00:00:53,770 --> 00:00:56,920

+modified, and statements in which the content of the same

+

+20

+00:00:56,920 --> 00:00:59,860

+memory location is used. So in this way, our test

+

+21

+00:00:59,860 --> 00:01:03,030

+will exercise the assignments of values to memory, and the

+

+22

+00:01:03,030 --> 00:01:06,020

+usage of those assignments,. Finally, I want to mention mutation

+

+23

+00:01:06,020 --> 00:01:09,150

+coverage. And this is a fairly different and new idea,

+

+24

+00:01:09,150 --> 00:01:11,910

+so the key concept in mutation coverage is that we

+

+25

+00:01:11,910 --> 00:01:16,156

+want to evaluate the goodness of our test by modifying the code.

+

+26

+00:01:16,156 --> 00:01:18,704

+For example here in this small I'm, I'm showing that I might

+

+27

+00:01:18,704 --> 00:01:21,820

+change it. An if statement from K greater than 9, to K

+

+28

+00:01:21,820 --> 00:01:24,310

+greater than or equal to 9. And the reason why I want to

+

+29

+00:01:24,310 --> 00:01:27,750

+do that, is that if I generate enough mutants, enough variation of

+

+30

+00:01:27,750 --> 00:01:30,340

+my program, then I can use them to assess how good are

+

+31

+00:01:30,340 --> 00:01:34,330

+my tests at distinguishing the original program and the mutants. And because

+

+32

+00:01:34,330 --> 00:01:37,430

+I'm changing the code based on the way I expect to introduce

+

+33

+00:01:37,430 --> 00:01:41,370

+errors in the code, the more my test can identify mutants, the better

+

+34

+00:01:41,370 --> 00:01:44,140

+they are at identifying real faults. This is a very high

+

+35

+00:01:44,140 --> 00:01:46,470

+level [UNKNOWN], but just to give you the intuition and the idea

+

+36

+00:01:46,470 --> 00:01:50,210

+behind these criteria, and I'm going to provide as usual, additional pointers

+

+37

+00:01:50,210 --> 00:01:52,930

+to go in more depth on these topics in the notes of

+

+38

+00:01:52,930 --> 00:01:55,170

+the class. So now, let's go back to our test criteria

+

+39

+00:01:55,170 --> 00:01:59,310

+subsumption hierarchy, and see how all of these criteria fit together in

+

+40

+00:01:59,310 --> 00:02:02,663

+this context. Let me start with multiple condition coverage. As we saw,

+

+41

+00:02:02,663 --> 00:02:06,740

+MC/DC is sort of as [UNKNOWN] way of doing multiple condition coverage

+

+42

+00:02:06,740 --> 00:02:09,229

+in the sense that it doesn't consider all the combinations,

+

+43

+00:02:09,229 --> 00:02:11,460

+but only the ones that are more likely to matter.

+

+44

+00:02:11,460 --> 00:02:14,930

+And as such, MC/DC exercises a subset of the elements

+

+45

+00:02:14,930 --> 00:02:16,220

+of the multiple condition coverage

+

+46

+00:02:16,220 --> 00:02:18,760

+exercises. And therefore, multiple condition coverage

+

+47

+00:02:18,760 --> 00:02:22,060

+is more thorough than MC/DC and subsumption, and it's also

+

+48

+00:02:22,060 --> 00:02:26,300

+as we saw incredibly more expensive. Path coverage subsumes branch coverage,

+

+49

+00:02:26,300 --> 00:02:28,090

+because if I cover all of the paths in the

+

+50

+00:02:28,090 --> 00:02:32,140

+code, I necessarily cover all the branches. However, it doesn't subsume

+

+51

+00:02:32,140 --> 00:02:34,130

+multiple condition coverage, MC/CD, or

+

+52

+00:02:34,130 --> 00:02:35,910

+branch and condition coverage. Because this

+

+53

+00:02:35,910 --> 00:02:38,590

+criteria, have additional requirements involving

+

+54

+00:02:38,590 --> 00:02:39,940

+the conditions of the predicate that

+

+55

+00:02:39,940 --> 00:02:42,730

+path coverage does not have. As for data-flow coverage criteria and

+

+56

+00:02:42,730 --> 00:02:45,010

+mutation coverage criteria, there really no

+

+57

+00:02:45,010 --> 00:02:46,860

+relation with the other criteria, because

+

+58

+00:02:46,860 --> 00:02:49,710

+they look at different aspects, of the code. So they're not

+

+59

+00:02:49,710 --> 00:02:52,220

+really comparable, and therefore we're just going to put them on the

+

+60

+00:02:52,220 --> 00:02:55,000

+side, without any relationship with the other ones. The reason why

+

+61

+00:02:55,000 --> 00:02:57,300

+I want to represent them all anyways is because I want to make

+

+62

+00:02:57,300 --> 00:02:59,950

+an important distinction between these different criteria. And

+

+63

+00:02:59,950 --> 00:03:02,690

+that's the distinction between practical criteria, which are

+

+64

+00:03:02,690 --> 00:03:05,490

+criteria that are actually not too expansive to

+

+65

+00:03:05,490 --> 00:03:08,790

+be used in real scenarios. And theoretical criteria, which

+

+66

+00:03:08,790 --> 00:03:11,590

+are criteria that are useful in theory from

+

+67

+00:03:11,590 --> 00:03:14,140

+the conceptual standpoint, but they're not really applicable

+

+68

+00:03:14,140 --> 00:03:16,540

+in practice because they're too expansive, because they

+

+69

+00:03:16,540 --> 00:03:19,460

+require basically too many test cases to be satisfied.