Software Testing 101 or Why Should We Bother With Software Testing?

Size: px
Start display at page:

Download "Software Testing 101 or Why Should We Bother With Software Testing?"

Transcription

1 Software Testing 101 or Why Should We Bother With Software Testing? Crash Course Lecture Marat Akhin Saint-Petersburg State Polytechnical University December 8th, 2009 Marat Akhin (SPbSPU) Software Testing /12/ / 51

2 Contents 1 Prelude 2 Basics 3 Design for testability 4 Coverage 5 Regression testing 6 Resume Marat Akhin (SPbSPU) Software Testing /12/ / 51

3 What we WON'T cover today Heavy formal stu Heavy formal stu Input: T 1, T 2 AST äëÿ ïðîãðàììû äî è ïîñëå ìîäèôèêàöèè Output: M ìíîæåñòâî ñâÿçàííûõ óçëîâ äëÿ T 1 è T 2 1: M 2: Îòìåòèòü âñå óçëû T 1 è T 2 êàê ¾íåñâÿçàííûå 3: for x T 1 do Îáõîäèì T 1 ñíèçó ââåðõ 4: if y T 2 : ismatched(y) match(x, y) = 1 then 5: M M (x, y) 6: Îòìåòèòü x è y êàê ¾ñâÿçàííûå 7: end if 8: end for Marat Akhin (SPbSPU) Software Testing /12/ / 51

4 What we WON'T cover today Details of testing techniques Details of testing techniques Marat Akhin (SPbSPU) Software Testing /12/ / 51

5 What we WON'T cover today Specic testing software Specic testing software Marat Akhin (SPbSPU) Software Testing /12/ / 51

6 What we WILL cover today Software testing 101 Software testing 101 Some basic things about software testing that you should know... Marat Akhin (SPbSPU) Software Testing /12/ / 51

7 What we WILL cover today Software testing 101 Software testing 101 Some basic things about software testing that you should know......if you want to be a good software tester Marat Akhin (SPbSPU) Software Testing /12/ / 51

8 What we WILL cover today Software testing 101 Software testing 101 Some basic things about software testing that you should know......if you want to be a good software tester Should you learn ¾Software testing 101 if you want to be a good software developer? Marat Akhin (SPbSPU) Software Testing /12/ / 51

9 What we WILL cover today Software testing 101 Software testing 101 Some basic things about software testing that you should know......if you want to be a good software tester Should you learn ¾Software testing 101 if you want to be a good software developer? YES Marat Akhin (SPbSPU) Software Testing /12/ / 51

10 What we WILL cover today Software testing 101 Software testing 101 Some basic things about software testing that you should know......if you want to be a good software tester Should you learn ¾Software testing 101 if you want to be a good software developer? YES I hope you'll understand why in about one and a half hours =) Marat Akhin (SPbSPU) Software Testing /12/ / 51

11 What we WILL cover today Why should we bother with software testing? Why should we bother with software testing? Short answer: because I tell you that you should do so! Marat Akhin (SPbSPU) Software Testing /12/ / 51

12 What we WILL cover today Why should we bother with software testing? Why should we bother with software testing? Short answer: because I tell you that you should do so! Long answer: because experience of thousands and thousands of developers all over the world indicate that software testing really helps in the development of quality software. Otherwise why is it used in almost every software development methodology? Marat Akhin (SPbSPU) Software Testing /12/ / 51

13 Prelude What question does testing answer? What question does testing answer? Does this software work? NO, testing cannot answer that Marat Akhin (SPbSPU) Software Testing /12/ / 51

14 Prelude What question does testing answer? What question does testing answer? Does this software work? NO, testing cannot answer that Does this software fail? YES, testing can (and should) answer that Marat Akhin (SPbSPU) Software Testing /12/ / 51

15 Prelude What question does testing answer? What question does testing answer? Does this software work? NO, testing cannot answer that Does this software fail? YES, testing can (and should) answer that Testing = Destruction Marat Akhin (SPbSPU) Software Testing /12/ / 51

16 Prelude What ¾testing is and what isn't What ¾testing is and what isn't It is: Best friend of Verification and Validation What is the dierence between the two? Verification checks whether the software is correct and right Validation checks whether the software complies to a set of requirements In other words: We verify that ¾we did it right We validate that ¾we did the right thing Marat Akhin (SPbSPU) Software Testing /12/ / 51

17 Prelude What ¾testing is and what isn't What ¾testing is and what isn't It isn't: Way to ensure 100% guarantee of any kind The software will never fail with NPE The database will never deadlock Calculations are always correct Time requirements are always fullled Marat Akhin (SPbSPU) Software Testing /12/ / 51

18 Prelude What ¾testing is and what isn't What ¾testing is and what isn't It isn't: Way to ensure 100% guarantee of any kind The software will never fail with NPE The database will never deadlock Calculations are always correct Time requirements are always fullled We ¾can give 100% guarantee but only in the most trivial cases and testing itself is usually not needed when we talk about trivial stu Marat Akhin (SPbSPU) Software Testing /12/ / 51

19 Prelude What ¾testing is and what isn't What ¾testing is and what isn't It isn't: Way to ensure 100% guarantee of any kind The software will never fail with NPE The database will never deadlock Calculations are always correct Time requirements are always fullled We ¾can give 100% guarantee but only in the most trivial cases and testing itself is usually not needed when we talk about trivial stu We'll cover why 100% guarantee is impossible a little bit later Marat Akhin (SPbSPU) Software Testing /12/ / 51

20 Prelude Why testing is so dicult Why testing is so dicult Theorem Software testing is all about PAIN Proof. Software engineering is all about PAIN Software testing Software engineering Marat Akhin (SPbSPU) Software Testing /12/ / 51

21 Prelude Why testing is so dicult Why testing is so dicult Software Method Build-and-x Waterfall Model Extreme Programming Rapid Prototyping Unied Process Pain It just doesn't scale up We can't predict everything at the start Writing good test cases is very dicult Throwing away the prototype is hard Following its many rules is a pain Dan Berry: ¾The Inevitable Pain of Software Development Fred Brooks: ¾No Silver Bullet Marat Akhin (SPbSPU) Software Testing /12/ / 51

22 Prelude Why testing is so dicult Why testing is so dicult Brian Kernighan ¾Debugging is twice as hard as writing the code in the rst place. Therefore, if you write the code as cleverly as possible, you are, by denition, not smart enough to debug it. Marat Akhin (SPbSPU) Software Testing /12/ / 51

23 Prelude Why testing is so dicult Why testing is so dicult Brian Kernighan ¾Debugging is twice as hard as writing the code in the rst place. Therefore, if you write the code as cleverly as possible, you are, by denition, not smart enough to debug it. Massimo Arnoldi (feat. Kent Beck) ¾Unfortunately at least for me (and not only) testing goes against human nature. If you realize the pig in you, you will see that you program without tests. Marat Akhin (SPbSPU) Software Testing /12/ / 51

24 Prelude Why testing is so dicult Why testing is so dicult Brian Kernighan ¾Debugging is twice as hard as writing the code in the rst place. Therefore, if you write the code as cleverly as possible, you are, by denition, not smart enough to debug it. Massimo Arnoldi (feat. Kent Beck) ¾Unfortunately at least for me (and not only) testing goes against human nature. If you realize the pig in you, you will see that you program without tests. We have a very serious problem Now we understand that software testing is really hard. But we have to do it to make quality software. A very simple question what do we do? Marat Akhin (SPbSPU) Software Testing /12/ / 51

25 Prelude What do we do? What do we do? Stick our teeth Learn how to minimize the pain of testing Understand how the testing works Understand how software testing can help software development Understand how software development can help software testing Believe in software testing Marat Akhin (SPbSPU) Software Testing /12/ / 51

26 Basics A very basic scheme of software testing A very basic scheme of software testing Run the software Check the run results hoping to nd errors aka bugs aka faults aka defects aka aws aka failures Let's clear up the denition of ¾software error, shall we? Marat Akhin (SPbSPU) Software Testing /12/ / 51

27 Basics Model of software error Model of software error FAILURE FAULT ERROR Failure observable from the outside incorrect program behaviour Fault corrupted program state caused by an error Error developer's mistake in a program Let's check this model on an example Marat Akhin (SPbSPU) Software Testing /12/ / 51

28 Basics Model of software error (example) Model of software error (example) Find the error in the following Java program 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Marat Akhin (SPbSPU) Software Testing /12/ / 51

29 Basics Model of software error (example) Model of software error (example) Find the error in the following Java program 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Possible overow at line 4 Marat Akhin (SPbSPU) Software Testing /12/ / 51

30 Basics Model of software error (example) Model of software error (example) c = {} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Marat Akhin (SPbSPU) Software Testing /12/ / 51

31 Basics Model of software error (example) Model of software error (example) c = {} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } No fault and no failure program works correctly Marat Akhin (SPbSPU) Software Testing /12/ / 51

32 Basics Model of software error (example) Model of software error (example) c = {1, 2, 3, 5} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Marat Akhin (SPbSPU) Software Testing /12/ / 51

33 Basics Model of software error (example) Model of software error (example) c = {1, 2, 3, 5} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } No fault and no failure program works correctly Marat Akhin (SPbSPU) Software Testing /12/ / 51

34 Basics Model of software error (example) Model of software error (example) c = {1, 2, 3, 5, +MAX_INT, -MAX_INT} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Marat Akhin (SPbSPU) Software Testing /12/ / 51

35 Basics Model of software error (example) Model of software error (example) c = {1, 2, 3, 5, +MAX_INT, -MAX_INT} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Program goes through corrupted state (fault is present) But no failure visible from the outside Marat Akhin (SPbSPU) Software Testing /12/ / 51

36 Basics Model of software error (example) Model of software error (example) c = {1, 2, 3, 5, +MAX_INT} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Marat Akhin (SPbSPU) Software Testing /12/ / 51

37 Basics Model of software error (example) Model of software error (example) c = {1, 2, 3, 5, +MAX_INT} What happens? 1 i n t s u m C o l l e c t i o n ( f i n a l Collection < Integer > c ) { 2 i n t sum = 0; 3 f o r ( i n t i : c ) { 4 sum += i ; 5 } 6 return sum ; 7 } Program goes through corrupted state (fault is present) And it fails with incorrect results Marat Akhin (SPbSPU) Software Testing /12/ / 51

38 Basics How to nd a software error How to nd a software error Model can be represented as: a mental representation of ¾how this software should work requirements from software technical specication dierent test cases set of correct software outputs another (a priori correct) implementation of the same specication Marat Akhin (SPbSPU) Software Testing /12/ / 51

39 Basics How to nd a software error How to nd a software error Testing run must ensure the following 3 properties to actually nd an error: Reachibility test must execute (¾reach ) the software error Corruption error must corrupt the program state to produce software fault Propagation fault must persist through the program run and cause a failure in program behaviour Making these properties hold is a major pain in software testing Marat Akhin (SPbSPU) Software Testing /12/ / 51

40 Basics How to nd a software error How to nd a software error To soothe this pain, we have to develop a program that is: Controllable we can easily make the program go where and how we want it to go Observable we can easily understand what the program is doing at any given time If we don't think about that before we start developing chances are we'll never be able to make the program controllable and observable. We need ¾Design for testability Marat Akhin (SPbSPU) Software Testing /12/ / 51

41 Design for testability Test-driven development Test-driven development Most well known technique of ensuring ¾Design for testability Created by Kent Beck back in 1999 Two simple principles: We write test cases rst Then we make them work by writing code Forces the developer to create and maintain a good software specication Makes the software controllable and observable: Each test case corresponds to a specic control ow trace thus giving us controllability Each test case checks a set of software outputs thus giving us observability Marat Akhin (SPbSPU) Software Testing /12/ / 51

42 Design for testability Controllability Controllability Simulation and stubbing We can easily control our own code but we can't do that with third-party code like OS routines, incomplete code, etc. We have to simulate or stub (S&S) third-party code to control what it is doing S&S may be faster than third-party code S&S can easily produce hard-to-induce error Marat Akhin (SPbSPU) Software Testing /12/ / 51

43 Design for testability Controllability Controllability Simulation and stubbing We can easily control our own code but we can't do that with third-party code like OS routines, incomplete code, etc. We have to simulate or stub (S&S) third-party code to control what it is doing S&S may be faster than third-party code S&S can easily produce hard-to-induce error Downwards scalability Many bugs live in ¾the dark corners of software limits To make them appear we have to reach these limits and it is easier to do so when the limits are nice and small We scale the limits down to reach them during testing Marat Akhin (SPbSPU) Software Testing /12/ / 51

44 Design for testability Observability Observability Assertions Improve observability by propagating some errors into failures And we can observe the error directly not just the results of it Marat Akhin (SPbSPU) Software Testing /12/ / 51

45 Design for testability Observability Observability Assertions Improve observability by propagating some errors into failures And we can observe the error directly not just the results of it Invariant checkers Extension of assertions to do a full-scale program state checking Inspect program state at some points during execution to ensure state correctness Of course we run invariant checkers only during testing they are too expensive to run during actual program run Marat Akhin (SPbSPU) Software Testing /12/ / 51

46 Design for testability Observability Observability Assertions Improve observability by propagating some errors into failures And we can observe the error directly not just the results of it Invariant checkers Logging Extension of assertions to do a full-scale program state checking Inspect program state at some points during execution to ensure state correctness Of course we run invariant checkers only during testing they are too expensive to run during actual program run Very important in any serious project to trace what and how the program is doing at any given time Projects program traces into developer-friendly form Marat Akhin (SPbSPU) Software Testing /12/ / 51

47 Coverage How to measure testing? How to measure testing? OK we have ¾design for testability And we have some kind of testing in our project Question is: How do we measure software testing? We need a way to estimate testing ¾eciency yes, this is another major pain in software testing Marat Akhin (SPbSPU) Software Testing /12/ / 51

48 Coverage Four types of coverage Four types of coverage We use dierent coverage criteria to measure testing eciency There are 4 basic types of coverage: Graph based coverage Logic based coverage Input partition based coverage Syntax based coverage Paul Ammann, Je Outt, ¾Introduction to Software Testing Marat Akhin (SPbSPU) Software Testing /12/ / 51

49 Coverage Graph based coverage Graph based coverage Cover some elements of some graph corresponding to the program In other words, ¾Find a graph and cover it! Most common type of coverage due to simplicity (we're not talking about computational simplicity here) Examples include: Statement coverage Branch coverage Path coverage Data ow coverage Marat Akhin (SPbSPU) Software Testing /12/ / 51

50 Coverage Graph based coverage Statement coverage Cover every node in program's CFG (control ow graph) CFG node = basic block part of code with one entry point, one exit point and no jump instructions within it The simpliest of all statement coverage criteria In our example Single test run is enough to achieve 100% statement coverage Marat Akhin (SPbSPU) Software Testing /12/ / 51

51 Coverage Graph based coverage Branch coverage Cover every branch in program's CFG (control ow graph) Stronger than statement coverage we test all possible control ow jumps (but we do it ¾context-free ) In our example We need at least two test runs to achieve 100% branch coverage Marat Akhin (SPbSPU) Software Testing /12/ / 51

52 Coverage Graph based coverage Path coverage Cover every possible path in program's CFG (control ow graph) Much stronger than branch coverage we test all possible control ow jumps in all possible combinations (i.e., ¾context-sensitive ) Unfortunately, covering all execution paths is NP-complete task In our example We need at least four test runs to achieve 100% path coverage If we had even one back-edge in our CFG... Marat Akhin (SPbSPU) Software Testing /12/ / 51

53 Coverage Logic based coverage Logic based coverage Every conditional statement gives us two possible branches to cover But consider this one: i f ( p!= q && ( p == n u l l! p. equals ( q ))) { }... There are four logical branches to cover we cannot cover them simply by covering all branches Marat Akhin (SPbSPU) Software Testing /12/ / 51

54 Coverage Logic based coverage Logic based coverage Let's take a look at these logical branches p!= q && (p == null!p.equals(q)) Result T F T T T T - T T F F F F - - F Much stronger than path coverage Even more ¾context-sensitive than path coverage Even more ¾NP-complete than path coverage Marat Akhin (SPbSPU) Software Testing /12/ / 51

55 Coverage Input partition based coverage Input partition based coverage In a way evolution of logic based coverage criteria We have input data domain D It can be partitioned into several equivalence classes E i The equivalence classes must satisfy two main properties: E i E j =, i, j : i j (equivalence classes must be disjoint) i E i = D (equivalence classes must completely cover input data domain) Seems pretty simple, doesn't it? Marat Akhin (SPbSPU) Software Testing /12/ / 51

56 Coverage Input partition based coverage Input partition based coverage Main problem with input partitioning is ambiguity Consider the following example: Program that determines whether the le is sorted in ascending or descending order That's easy! E 1 le is sorted in ascending order E 2 le is sorted in descending order E 3 le is not sorted Marat Akhin (SPbSPU) Software Testing /12/ / 51

57 Coverage Input partition based coverage Input partition based coverage Main problem with input partitioning is ambiguity Consider the following example: Program that determines whether the le is sorted in ascending or descending order That's easy! E 1 le is sorted in ascending order E 2 le is sorted in descending order E 3 le is not sorted What about a le with only one record? That's correct partitioning fails Marat Akhin (SPbSPU) Software Testing /12/ / 51

58 Coverage Input partition based coverage Input partition based coverage Main problem with input partitioning is ambiguity Consider the following example: Program that determines whether the le is sorted in ascending or descending order That's easy! E 1 le is sorted in ascending order E 2 le is sorted in descending order E 3 le is not sorted What about a le with only one record? That's correct partitioning fails Easier to use than logic based coverage Less complex than other coverage criterias Partitioning can only be done manually in most cases outweights rst two advantages Marat Akhin (SPbSPU) Software Testing /12/ / 51

59 Coverage Syntax based coverage Syntax based coverage A ¾very other kind of coverage criteria As you all know software is usually writen in a programming language Any programming language has some syntax rules or grammar We can use that fact to test our software let's see how we can do that Marat Akhin (SPbSPU) Software Testing /12/ / 51

60 Coverage Syntax based coverage Syntax based coverage A program is a valid string in a given grammar What if we mutate this string into another one? We can get an invalid string we are not interested in them If we get another valid string it is a mutant of the original program A mutant exhibits dierent behaviour from the original program A ¾perfect test should pass only on the original program and should fail on any possible mutant (kill a mutant) Marat Akhin (SPbSPU) Software Testing /12/ / 51

61 Coverage Syntax based coverage Syntax based coverage That is our coverage criteria I.e., how many mutants a test kills This is the main idea of mutation testing A very powerful technique of estimating testing eciency Very dicult to apply by hand Very computation-intensive NP-complete at the very least Marat Akhin (SPbSPU) Software Testing /12/ / 51

62 Regression testing What kind of testing is most widely used? What kind of testing is most widely used? We have ¾design for testability We know how to estimate testing eciency And we have some kind of testing in our project What kind of testing it is? Let's answer some questions to nd the truth Marat Akhin (SPbSPU) Software Testing /12/ / 51

63 Regression testing What kind of testing is most widely used? What kind of testing is most widely used? Does a software change big and fast during its development? Usually NO We maintain, correct, adapt and modify our software most of the time Unfortunately, these small changes can break our software big time Marat Akhin (SPbSPU) Software Testing /12/ / 51

64 Regression testing What kind of testing is most widely used? What kind of testing is most widely used? Does a software change big and fast during its development? Usually NO We maintain, correct, adapt and modify our software most of the time Unfortunately, these small changes can break our software big time What do we test during development? We test modied software in order to ensure it isn't broken by our modications Wait... That is regression testing! Marat Akhin (SPbSPU) Software Testing /12/ / 51

65 Regression testing What kind of testing is most widely used? What kind of testing is most widely used? Does a software change big and fast during its development? Usually NO We maintain, correct, adapt and modify our software most of the time Unfortunately, these small changes can break our software big time What do we test during development? We test modied software in order to ensure it isn't broken by our modications Wait... That is regression testing! Regression testing is the main testing activity in any software development project or, at the very least, it should be Marat Akhin (SPbSPU) Software Testing /12/ / 51

66 Regression testing Regression testing Regression testing How does it work? 1 We modify our program P into P 2 We select tests T that need to be run on P 3 We add new tests T that test new functionality 4 We run all these tests 5 We analyze testing results Steps (2)(5) each contain some nasty pain that we have to bear Marat Akhin (SPbSPU) Software Testing /12/ / 51

67 Regression testing Regression test selection Regression test selection How can we select tests that need to be run after a small change? Conservative approach run all tests (full regression testing) Cheap approach run tests whose test requirements are related to the changes Smart approach nd parts of program that are aected by the changes and run corresponding tests Many regression test selection techniques have been developed But almost none of them found it's way to wide-spread use Marat Akhin (SPbSPU) Software Testing /12/ / 51

68 Regression testing Regression test selection Regression test selection Why is that so? We need to ensure 4 basic properties of RTS: Inclusiveness ability to include tests that are ¾modication revealing. Unsafe RTS techniques have inclusiveness less than 100% Precision ability to omit tests that are not ¾modication revealing Eciency RTS is ecient if it takes less time to determine what tests to omit than running these tests Generality ability to work in most practical situations It is very dicult to ensure all these properties at the same time Remember ¾Good. Fast. Cheap. Pick any two? Marat Akhin (SPbSPU) Software Testing /12/ / 51

69 Regression testing Maintaining regression test suite Maintaining regression test suite Regression test suite tends to grow in time and space We need a way of maintaining test suite How to decide what tests to add and what to remove? Add a new test for every part of new functionality Add a new test for every xed bug Remove tests that are duplicates of the other tests Remove tests that have never failed What do we do when a test fails? Marat Akhin (SPbSPU) Software Testing /12/ / 51

70 Regression testing Maintaining regression test suite Maintaining regression test suite There are several possible reasons of a regression test failure The software has a regression bug Must x and retest The input test values are no longer valid Must delete or update the test The expected output is no longer valid Must update the test Usually very hard to decide which situation we have We always have to consider adding additional resources vs removing excessive tests Marat Akhin (SPbSPU) Software Testing /12/ / 51

71 Regression testing Running regression tests Running regression tests That's simple take all the selected tests and run them, right? Not quite what order do we run them in? Does it matter? Yes, it does: We want to get testing results ASAP That is why we have to prioritize tests: Dierent heuristics Coverage-based prioritization History-based selection Marat Akhin (SPbSPU) Software Testing /12/ / 51

72 Resume Summary Summary Now you have a very basic glimpse of: What software testing is How it interacts with software development What are the sources of software testing pain and how to overcome them There is one piece of advice left to share with you ¾Those who cannot remember the past are condemned to repeat it George Santayana Marat Akhin (SPbSPU) Software Testing /12/ / 51

73 Resume Main rule of software testing Main rule of software testing It is very simple: Either do software testing right by the book or don't do it at all Yes, it is a ¾win or lose situation If you do software testing less than 100% you're wearing rose-coloured glasses You have a fake feeling of safety You think that you ensure good software quality You imagine you're a very good developer Sometimes it's better not to test software at all Marat Akhin (SPbSPU) Software Testing /12/ / 51

74 Resume Thank you for your time and patience Thank you for your time and patience Marat Akhin (SPbSPU) Software Testing /12/ / 51

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing?

Testing. ECE/CS 5780/6780: Embedded System Design. Why is testing so hard? Why do testing? Testing ECE/CS 5780/6780: Embedded System Design Scott R. Little Lecture 24: Introduction to Software Testing and Verification What is software testing? Running a program in order to find bugs (faults,

More information

Topics in Software Testing

Topics in Software Testing Dependable Software Systems Topics in Software Testing Material drawn from [Beizer, Sommerville] Software Testing Software testing is a critical element of software quality assurance and represents the

More information

CPSC 320 Sample Solution, Playing with Graphs!

CPSC 320 Sample Solution, Playing with Graphs! CPSC 320 Sample Solution, Playing with Graphs! September 23, 2017 Today we practice reasoning about graphs by playing with two new terms. These terms/concepts are useful in themselves but not tremendously

More information

Manuel Oriol, CHCRC-C, Software Testing ABB

Manuel Oriol, CHCRC-C, Software Testing ABB Manuel Oriol, CHCRC-C, 08.11.2017 Software Testing Slide 1 About me 1998 2004 2005 2008 2011 Slide 2 Introduction Why do we test? Did you have to deal with testing in the past? Slide 3 Ariane 5 http://www.youtube.com/watch?v=kyurqduyepi

More information

CSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 15 Testing

CSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 15 Testing CSE 374 Programming Concepts & Tools Hal Perkins Fall 2015 Lecture 15 Testing Where we are Some very basic software engineering topics in the midst of tools Today: testing (how, why, some terms) Later:

More information

CPSC W2 Midterm #2 Sample Solutions

CPSC W2 Midterm #2 Sample Solutions CPSC 320 2014W2 Midterm #2 Sample Solutions March 13, 2015 1 Canopticon [8 marks] Classify each of the following recurrences (assumed to have base cases of T (1) = T (0) = 1) into one of the three cases

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

The SUMO Speaker Series for Undergraduates. The Art Gallery Problem

The SUMO Speaker Series for Undergraduates. The Art Gallery Problem The SUMO Speaker Series for Undergraduates (food from Pizza Chicago) Wednesday, April 21 4:40-5:30, room 380C The Art Gallery Problem Amy Pang Abstract: Imagine you are the curator of an art gallery with

More information

Notes to Accompany Debugging Lecture. Jamie Blustein

Notes to Accompany Debugging Lecture. Jamie Blustein Notes to Accompany Debugging Lecture Jamie Blustein 28 April 2002 Introduction This lecture was originally written for Turbo Pascal, then updated for the rst ANSI C standard, then object-free C++. It does

More information

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus Testing Prof. Clarkson Fall 2017 Today s music: Wrecking Ball by Miley Cyrus Review Previously in 3110: Modules Specification (functions, modules) Today: Validation Testing Black box Glass box Randomized

More information

Computer Science and Software Engineering University of Wisconsin - Platteville 9-Software Testing, Verification and Validation

Computer Science and Software Engineering University of Wisconsin - Platteville 9-Software Testing, Verification and Validation Computer Science and Software Engineering University of Wisconsin - Platteville 9-Software Testing, Verification and Validation Yan Shi SE 2730 Lecture Notes Verification and Validation Verification: Are

More information

Assertions. Assertions - Example

Assertions. Assertions - Example References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 11/13/2003 1 Assertions Statements about input to a routine or state of a class Have two primary roles As documentation,

More information

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 [talking head] Formal Methods of Software Engineering means the use of mathematics as an aid to writing programs. Before we can

More information

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides for both problems first, and let you guys code them

More information

Chapter 11, Testing. Using UML, Patterns, and Java. Object-Oriented Software Engineering

Chapter 11, Testing. Using UML, Patterns, and Java. Object-Oriented Software Engineering Chapter 11, Testing Using UML, Patterns, and Java Object-Oriented Software Engineering Outline Terminology Types of errors Dealing with errors Quality assurance vs Testing Component Testing! Unit testing!

More information

1 Getting used to Python

1 Getting used to Python 1 Getting used to Python We assume you know how to program in some language, but are new to Python. We'll use Java as an informal running comparative example. Here are what we think are the most important

More information

Software Engineering

Software Engineering Software Engineering Lecture 13: Testing and Debugging Testing Peter Thiemann University of Freiburg, Germany SS 2014 Recap Recap Testing detect the presence of bugs by observing failures Recap Testing

More information

Regression testing. Whenever you find a bug. Why is this a good idea?

Regression testing. Whenever you find a bug. Why is this a good idea? Regression testing Whenever you find a bug Reproduce it (before you fix it!) Store input that elicited that bug Store correct output Put into test suite Then, fix it and verify the fix Why is this a good

More information

CMSC 132: OBJECT-ORIENTED PROGRAMMING II

CMSC 132: OBJECT-ORIENTED PROGRAMMING II CMSC 132: OBJECT-ORIENTED PROGRAMMING II Program Testing Department of Computer Science University of Maryland, College Park Debugging Is Harder Than Coding! Debugging is twice as hard as writing the code

More information

Chapter 8 Software Testing. Chapter 8 Software testing

Chapter 8 Software Testing. Chapter 8 Software testing Chapter 8 Software Testing 1 Topics covered Introduction to testing Stages for testing software system are: Development testing Release testing User testing Test-driven development as interleave approach.

More information

Testing. Topics. Types of Testing. Types of Testing

Testing. Topics. Types of Testing. Types of Testing Topics 1) What are common types of testing? a) Testing like a user: through the UI. b) Testing like a dev: through the code. 2) What makes a good bug report? 3) How can we write code to test code (via

More information

Why testing and analysis. Software Testing. A framework for software testing. Outline. Software Qualities. Dependability Properties

Why testing and analysis. Software Testing. A framework for software testing. Outline. Software Qualities. Dependability Properties Why testing and analysis Software Testing Adapted from FSE 98 Tutorial by Michal Young and Mauro Pezze Software is never correct no matter what developing testing technique is used All software must be

More information

QGIS Application - Bug report #8942 R6034 runtime error

QGIS Application - Bug report #8942 R6034 runtime error QGIS Application - Bug report #8942 R6034 runtime error 2013-10-23 04:42 PM - Leszek Pawlowicz Status: Reopened Priority: rmal Assignee: Category: Build/Install Affected QGIS version:2.18.11 Regression?:

More information

MITOCW watch?v=9h6muyzjms0

MITOCW watch?v=9h6muyzjms0 MITOCW watch?v=9h6muyzjms0 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

CSE 331 Software Design & Implementation. Hal Perkins Fall 2016 Debugging

CSE 331 Software Design & Implementation. Hal Perkins Fall 2016 Debugging CSE 331 Software Design & Implementation Hal Perkins Fall 2016 Debugging Ways to get your code right Verification/quality assurance Purpose is to uncover problems and increase confidence Combination of

More information

1 of 5 3/28/2010 8:01 AM Unit Testing Notes Home Class Info Links Lectures Newsgroup Assignmen [Jump to Writing Clear Tests, What about Private Functions?] Testing The typical approach to testing code

More information

Segmentation. Multiple Segments. Lecture Notes Week 6

Segmentation. Multiple Segments. Lecture Notes Week 6 At this point, we have the concept of virtual memory. The CPU emits virtual memory addresses instead of physical memory addresses. The MMU translates between virtual and physical addresses. Don't forget,

More information

Java Programming. Computer Science 112

Java Programming. Computer Science 112 Java Programming Computer Science 112 Review: Problem solving Class 4 is the Whole Point of Programming. You can keep the papers; we gonna go through them on the board. If you are desperately confused

More information

Testing. UW CSE 160 Winter 2016

Testing. UW CSE 160 Winter 2016 Testing UW CSE 160 Winter 2016 1 Testing Programming to analyze data is powerful It s useless (or worse!) if the results are not correct Correctness is far more important than speed 2 Famous examples Ariane

More information

Software Engineering Testing and Debugging Testing

Software Engineering Testing and Debugging Testing Software Engineering Testing and Debugging Testing Prof. Dr. Peter Thiemann Universitt Freiburg 08.06.2011 Recap Testing detect the presence of bugs by observing failures Debugging find the bug causing

More information

Software Testing CS 408

Software Testing CS 408 Software Testing CS 408 1/09/18 Course Webpage: http://www.cs.purdue.edu/homes/suresh/408-spring2018 1 The Course Understand testing in the context of an Agile software development methodology - Detail

More information

Outline. Computer Science 331. Information Hiding. What This Lecture is About. Data Structures, Abstract Data Types, and Their Implementations

Outline. Computer Science 331. Information Hiding. What This Lecture is About. Data Structures, Abstract Data Types, and Their Implementations Outline Computer Science 331 Data Structures, Abstract Data Types, and Their Implementations Mike Jacobson 1 Overview 2 ADTs as Interfaces Department of Computer Science University of Calgary Lecture #8

More information

Verification and Validation

Verification and Validation Chapter 5 Verification and Validation Chapter Revision History Revision 0 Revision 1 Revision 2 Revision 3 Revision 4 original 94/03/23 by Fred Popowich modified 94/11/09 by Fred Popowich reorganization

More information

Who is our rival? Upcoming. Testing. Ariane 5 rocket (1996) Ariane 5 rocket 3/8/18. Real programmers need no testing!

Who is our rival? Upcoming. Testing. Ariane 5 rocket (1996) Ariane 5 rocket 3/8/18. Real programmers need no testing! Upcoming Homework 3 posted; due March 22 Literature review due March 20 Testing Paper presentation instructions posted: http://people.cs.umass.edu/~brun/class/2018spring/cs621/paperpresentation/paperpresentation.pdf

More information

Boot Camp. Dave Eckhardt Bruce Maggs

Boot Camp. Dave Eckhardt Bruce Maggs Boot Camp Dave Eckhardt de0u@andrew.cmu.edu Bruce Maggs bmm@cs.cmu.edu 1 This Is a Hard Class Traditional hazards 410 letter grade one lower than other classes All other classes this semester: one grade

More information

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs.

In this Lecture you will Learn: Testing in Software Development Process. What is Software Testing. Static Testing vs. In this Lecture you will Learn: Testing in Software Development Process Examine the verification and validation activities in software development process stage by stage Introduce some basic concepts of

More information

Programming Embedded Systems

Programming Embedded Systems Programming Embedded Systems Lecture 8 Overview of software testing Wednesday Feb 8, 2012 Philipp Rümmer Uppsala University Philipp.Ruemmer@it.uu.se 1/53 Lecture outline Testing in general Unit testing

More information

Software Testing. Testing: Our Experiences

Software Testing. Testing: Our Experiences Software Testing Testing: Our Experiences Test Case Software to be tested Output 1 Test Case Generation When to Stop? Test Case Software to be tested Verification Output No Enough? Test Coverage Yes A

More information

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. Testing Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered. System stability is the system going to crash or not?

More information

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing.

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing. Overview CS 619 Introduction to OO Design and Development ing! Preliminaries! All sorts of test techniques! Comparison of test techniques! Software reliability Fall 2012! Main issues: There are a great

More information

TestComplete 3.0 Overview for Non-developers

TestComplete 3.0 Overview for Non-developers TestComplete 3.0 Overview for Non-developers Copyright 2003 by Robert K. Leahey and AutomatedQA, Corp. All rights reserved. Part : Table of Contents Introduction 1 About TestComplete 1 Basics 2 Types of

More information

Introduction to Algorithms / Algorithms I Lecturer: Michael Dinitz Topic: Approximation algorithms Date: 11/18/14

Introduction to Algorithms / Algorithms I Lecturer: Michael Dinitz Topic: Approximation algorithms Date: 11/18/14 600.363 Introduction to Algorithms / 600.463 Algorithms I Lecturer: Michael Dinitz Topic: Approximation algorithms Date: 11/18/14 23.1 Introduction We spent last week proving that for certain problems,

More information

Quality Assurance in Software Development

Quality Assurance in Software Development Quality Assurance in Software Development Qualitätssicherung in der Softwareentwicklung A.o.Univ.-Prof. Dipl.-Ing. Dr. Bernhard Aichernig Graz University of Technology Austria Summer Term 2017 1 / 47 Agenda

More information

Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1

Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1 CME 305: Discrete Mathematics and Algorithms Instructor: Professor Aaron Sidford (sidford@stanford.edu) January 11, 2018 Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1 In this lecture

More information

References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 10/14/2004 1

References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 10/14/2004 1 References: internet notes; Bertrand Meyer, Object-Oriented Software Construction; 10/14/2004 1 Assertions Statements about input to a routine or state of a class Have two primary roles As documentation,

More information

People tell me that testing is

People tell me that testing is Software Testing Mark Micallef mark.micallef@um.edu.mt People tell me that testing is Boring Not for developers A second class activity Not necessary because they are very good coders 1 What is quality?

More information

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany Softwaretechnik Lecture 08: Testing and Debugging Overview Peter Thiemann University of Freiburg, Germany SS 2012 Literature Essential Reading Why Programs Fail: A Guide to Systematic Debugging, A Zeller

More information

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013!

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013! Testing Prof. Leon Osterweil CS 520/620 Spring 2013 Relations and Analysis A software product consists of A collection of (types of) artifacts Related to each other by myriad Relations The relations are

More information

Lecture 15 Software Testing

Lecture 15 Software Testing Lecture 15 Software Testing Includes slides from the companion website for Sommerville, Software Engineering, 10/e. Pearson Higher Education, 2016. All rights reserved. Used with permission. Topics covered

More information

Verification and Validation

Verification and Validation Lecturer: Sebastian Coope Ashton Building, Room G.18 E-mail: coopes@liverpool.ac.uk COMP 201 web-page: http://www.csc.liv.ac.uk/~coopes/comp201 Verification and Validation 1 Verification and Validation

More information

COMP2100/2500 Lecture 17: Shell Programming II

COMP2100/2500 Lecture 17: Shell Programming II [ANU] [DCS] [COMP2100/2500] [Description] [Schedule] [Lectures] [Labs] [Homework] [Assignments] [COMP2500] [Assessment] [PSP] [Java] [Reading] [Help] COMP2100/2500 Lecture 17: Shell Programming II Summary

More information

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany

Softwaretechnik. Lecture 08: Testing and Debugging Overview. Peter Thiemann SS University of Freiburg, Germany Softwaretechnik Lecture 08: Testing and Debugging Overview Peter Thiemann University of Freiburg, Germany SS 2012 Literature Essential Reading Why Programs Fail: A Guide to Systematic Debugging, A Zeller

More information

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example

More information

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Approximation algorithms Date: 11/27/18

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Approximation algorithms Date: 11/27/18 601.433/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Approximation algorithms Date: 11/27/18 22.1 Introduction We spent the last two lectures proving that for certain problems, we can

More information

MITOCW watch?v=4dj1oguwtem

MITOCW watch?v=4dj1oguwtem MITOCW watch?v=4dj1oguwtem PROFESSOR: So it's time to examine uncountable sets. And that's what we're going to do in this segment. So Cantor's question was, are all sets the same size? And he gives a definitive

More information

Java Programming. Computer Science 112

Java Programming. Computer Science 112 Java Programming Computer Science 112 Review: Problem solving Class 4 is the Whole Point of Programming. Is there any particular one you'd like to go through? If you are desperately confused still, now

More information

Lecture 10: Introduction to Correctness

Lecture 10: Introduction to Correctness Lecture 10: Introduction to Correctness Aims: To look at the different types of errors that programs can contain; To look at how we might detect each of these errors; To look at the difficulty of detecting

More information

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages No Source Code : Software Testing Black-Box Testing Test-Driven Development No access to source code So test cases don t worry about structure Emphasis is only on ensuring that the contract is met Specification-Based

More information

An Introduction to Subtyping

An Introduction to Subtyping An Introduction to Subtyping Type systems are to me the most interesting aspect of modern programming languages. Subtyping is an important notion that is helpful for describing and reasoning about type

More information

In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology.

In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology. Guide to and Hi everybody! In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology. This guide focuses on two of those symbols: and. These symbols represent concepts

More information

Testing: Test design and testing process

Testing: Test design and testing process Testing: Test design and testing process Zoltán Micskei Based on István Majzik s slides Dept. of Measurement and Information Systems Budapest University of Technology and Economics Department of Measurement

More information

Part I: Preliminaries 24

Part I: Preliminaries 24 Contents Preface......................................... 15 Acknowledgements................................... 22 Part I: Preliminaries 24 1. Basics of Software Testing 25 1.1. Humans, errors, and testing.............................

More information

Chapter 21a Other Library Issues

Chapter 21a Other Library Issues Chapter 21a Other Library Issues Nick Maclaren http://www.ucs.cam.ac.uk/docs/course-notes/un ix-courses/cplusplus This was written by me, not Bjarne Stroustrup Function Objects These are not the only way

More information

mk-convert Contents 1 Converting to minikanren, quasimatically. 08 July 2014

mk-convert Contents 1 Converting to minikanren, quasimatically. 08 July 2014 mk-convert 08 July 2014 Contents 1 Converting to minikanren, quasimatically. 1 1.1 Variations on a Scheme..................... 2 1.2 Racket to minikanren, nally.................. 8 1.3 Back to the beginning......................

More information

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to

A PROGRAM IS A SEQUENCE of instructions that a computer can execute to A PROGRAM IS A SEQUENCE of instructions that a computer can execute to perform some task. A simple enough idea, but for the computer to make any use of the instructions, they must be written in a form

More information

Object Oriented Software Design - I

Object Oriented Software Design - I Object Oriented Software Design - I Unit Testing Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa November 28, 2011 G. Lipari (Scuola Superiore Sant Anna) Unit Testing November

More information

Testing. So let s start at the beginning, shall we

Testing. So let s start at the beginning, shall we Testing Today we are going to talk about testing. Before you all lapse into comas in anticipation of how exciting this lecture will be, let me say that testing actually is kind of interesting. I can t

More information

5) I want to get this done fast, testing is going to slow me down.

5) I want to get this done fast, testing is going to slow me down. Testing Real Programmers need no Testing! The Top Five List 5) I want to get this done fast, testing is going to slow me down. 4) I started programming when I was 2. Don t insult me by testing my perfect

More information

DESIGN AS RISK MINIMIZATION

DESIGN AS RISK MINIMIZATION THOMAS LATOZA SWE 621 FALL 2018 DESIGN AS RISK MINIMIZATION IN CLASS EXERCISE As you come in and take a seat What were the most important risks you faced in a recent software project? WHAT IS A RISK? WHAT

More information

https://www.lri.fr/ linaye/gl.html

https://www.lri.fr/ linaye/gl.html Software Engineering https://www.lri.fr/ linaye/gl.html lina.ye@centralesupelec.fr Sequence 3, 2017-2018 1/61 Software Engineering Plan 1 2 3 4 5 2/61 Software Engineering Software Testing 3/61 Software

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java

Object-Oriented Software Engineering Practical Software Development using UML and Java Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 10: Testing and Inspecting to Ensure High Quality Lecture 3 Errors and failure Inputs Error revealing inputs

More information

Programming Languages. Streams Wrapup, Memoization, Type Systems, and Some Monty Python

Programming Languages. Streams Wrapup, Memoization, Type Systems, and Some Monty Python Programming Languages Streams Wrapup, Memoization, Type Systems, and Some Monty Python Quick Review of Constructing Streams Usually two ways to construct a stream. Method 1: Use a function that takes a(n)

More information

Most of the class will focus on if/else statements and the logical statements ("conditionals") that are used to build them. Then I'll go over a few

Most of the class will focus on if/else statements and the logical statements (conditionals) that are used to build them. Then I'll go over a few With notes! 1 Most of the class will focus on if/else statements and the logical statements ("conditionals") that are used to build them. Then I'll go over a few useful functions (some built into standard

More information

Software Testing Lecture 1. Justin Pearson

Software Testing Lecture 1. Justin Pearson Software Testing Lecture 1 Justin Pearson 2017 1 / 50 Four Questions Does my software work? 2 / 50 Four Questions Does my software work? Does my software meet its specification? 3 / 50 Four Questions Does

More information

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing Black Box Testing EEC 521: Software Engineering Software Testing Black-Box Testing Test-Driven Development Also known as specification-based testing Tester has access only to running code and the specification

More information

Concurrent Programming Lecture 3

Concurrent Programming Lecture 3 Concurrent Programming Lecture 3 3rd September 2003 Atomic Actions Fine grain atomic action We assume that all machine instructions are executed atomically: observers (including instructions in other threads)

More information

Program Correctness and Efficiency. Chapter 2

Program Correctness and Efficiency. Chapter 2 Program Correctness and Efficiency Chapter 2 Chapter Objectives To understand the differences between the three categories of program errors To understand the effect of an uncaught exception and why you

More information

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics COMP-202 Unit 1: Introduction Announcements Did you miss the first lecture? Come talk to me after class. If you want

More information

CPSC 320 Sample Solution: Physics, Tug-o-War, and Divide-and-Conquer

CPSC 320 Sample Solution: Physics, Tug-o-War, and Divide-and-Conquer CPSC 30 Sample Solution: Physics, Tug-o-War, and Divide-and-Conquer February 4, 017 In tug-o-war, two teams face each other and carefully pull on a well-selected rope (to avoid injury). The team that pulls

More information

Shared Variables and Interference

Shared Variables and Interference Solved Shared Variables and Interference CS 536: Science of Programming, Fall 2018 A. Why Parallel programs can coordinate their work using shared variables, but it s important for threads to not interfere

More information

CIS4/681 { Articial Intelligence 2 > (insert-sort '( )) ( ) 2 More Complicated Recursion So far everything we have dened requires

CIS4/681 { Articial Intelligence 2 > (insert-sort '( )) ( ) 2 More Complicated Recursion So far everything we have dened requires 1 A couple of Functions 1 Let's take another example of a simple lisp function { one that does insertion sort. Let us assume that this sort function takes as input a list of numbers and sorts them in ascending

More information

Unit Testing as Hypothesis Testing

Unit Testing as Hypothesis Testing Unit Testing as Hypothesis Testing Jonathan Clark September 19, 2012 5 minutes You should test your code. Why? To find bugs. Even for seasoned programmers, bugs are an inevitable reality. Today, we ll

More information

Software Engineering and Scientific Computing

Software Engineering and Scientific Computing Software Engineering and Scientific Computing Barbara Paech, Hanna Remmel Institute of Computer Science Im Neuenheimer Feld 326 69120 Heidelberg, Germany http://se.ifi.uni-heidelberg.de paech@informatik.uni-heidelberg.de

More information

Use mail merge to create and print letters and other documents

Use mail merge to create and print letters and other documents Use mail merge to create and print letters and other documents Contents Use mail merge to create and print letters and other documents... 1 Set up the main document... 1 Connect the document to a data

More information

MITOCW watch?v=zm5mw5nkzjg

MITOCW watch?v=zm5mw5nkzjg MITOCW watch?v=zm5mw5nkzjg The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Facts About Testing. Cost/benefit. Reveal faults. Bottom-up. Testing takes more than 50% of the total cost of software development

Facts About Testing. Cost/benefit. Reveal faults. Bottom-up. Testing takes more than 50% of the total cost of software development Reveal faults Goals of testing Correctness Reliability Usability Robustness Performance Top-down/Bottom-up Bottom-up Lowest level modules tested first Don t depend on any other modules Driver Auxiliary

More information

MITOCW watch?v=yarwp7tntl4

MITOCW watch?v=yarwp7tntl4 MITOCW watch?v=yarwp7tntl4 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality, educational resources for free.

More information

ECE 587 Hardware/Software Co-Design Lecture 11 Verification I

ECE 587 Hardware/Software Co-Design Lecture 11 Verification I ECE 587 Hardware/Software Co-Design Spring 2018 1/23 ECE 587 Hardware/Software Co-Design Lecture 11 Verification I Professor Jia Wang Department of Electrical and Computer Engineering Illinois Institute

More information

Outline. software testing: search bugs black-box and white-box testing static and dynamic testing

Outline. software testing: search bugs black-box and white-box testing static and dynamic testing Outline 1 Verification Techniques software testing: search bugs black-box and white-box testing static and dynamic testing 2 Programming by Contract assert statements in Python using preconditions and

More information

Arduino IDE Friday, 26 October 2018

Arduino IDE Friday, 26 October 2018 Arduino IDE Friday, 26 October 2018 12:38 PM Looking Under The Hood Of The Arduino IDE FIND THE ARDUINO IDE DOWNLOAD First, jump on the internet with your favorite browser, and navigate to www.arduino.cc.

More information

CS 520 Theory and Practice of Software Engineering Fall 2018

CS 520 Theory and Practice of Software Engineering Fall 2018 CS 520 Theory and Practice of Software Engineering Fall 2018 Nediyana Daskalova Monday, 4PM CS 151 Debugging October 30, 2018 Personalized Behavior-Powered Systems for Guiding Self-Experiments Help me

More information

Debugging. CSE 2231 Supplement A Annatala Wolf

Debugging. CSE 2231 Supplement A Annatala Wolf Debugging CSE 2231 Supplement A Annatala Wolf Testing is not debugging! The purpose of testing is to detect the existence of errors, not to identify precisely where the errors came from. Error messages

More information

Software Testing Interview Question and Answer

Software Testing Interview Question and Answer Software Testing Interview Question and Answer What is Software Testing? A process of analyzing a software item to detect the differences between existing and required conditions (i.e., defects) and to

More information

Bridge Course On Software Testing

Bridge Course On Software Testing G. PULLAIAH COLLEGE OF ENGINEERING AND TECHNOLOGY Accredited by NAAC with A Grade of UGC, Approved by AICTE, New Delhi Permanently Affiliated to JNTUA, Ananthapuramu (Recognized by UGC under 2(f) and 12(B)

More information

Skill 1: Multiplying Polynomials

Skill 1: Multiplying Polynomials CS103 Spring 2018 Mathematical Prerequisites Although CS103 is primarily a math class, this course does not require any higher math as a prerequisite. The most advanced level of mathematics you'll need

More information

Software Testing Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur. Lecture 13 Path Testing

Software Testing Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur. Lecture 13 Path Testing Software Testing Prof. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 13 Path Testing Welcome to this session and we will discuss about path

More information

Testing and Debugging

Testing and Debugging Testing and Debugging Comp-303 : Programming Techniques Lecture 14 Alexandre Denault Computer Science McGill University Winter 2004 March 1, 2004 Lecture 14 Comp 303 : Testing and Debugging Page 1 Announcements...

More information

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26.

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26. git status Steps for project success Homework 1 submitted Homework 2 will be posted October 26 due November 16, 9AM Projects underway project status check-in meetings November 9 System-building project

More information

Hi everyone. I hope everyone had a good Fourth of July. Today we're going to be covering graph search. Now, whenever we bring up graph algorithms, we

Hi everyone. I hope everyone had a good Fourth of July. Today we're going to be covering graph search. Now, whenever we bring up graph algorithms, we Hi everyone. I hope everyone had a good Fourth of July. Today we're going to be covering graph search. Now, whenever we bring up graph algorithms, we have to talk about the way in which we represent the

More information

Problem 1. Remove consecutive duplicates (6 points, 11 mintues)

Problem 1. Remove consecutive duplicates (6 points, 11 mintues) Problem 1. Remove consecutive duplicates (6 points, 11 mintues) CS3 Fall 04 Midterm 2 Consider a function remove-conseq-dups that takes a sentence and returns a sentence in which any occurrences of a word

More information