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, 0 insertions, 275 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
deleted file mode 100644
index 27bf0fe..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt
+++ /dev/null
@@ -1,275 +0,0 @@
-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.