Software Testing 101 or Why Should We Bother With Software Testing?
|
|
- Robert Kelley
- 6 years ago
- Views:
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 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 informationTopics 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 informationCPSC 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 informationManuel 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 informationCSE 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 informationCPSC 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 informationChapter 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 informationThe 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 informationNotes 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 informationTesting. 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 informationComputer 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 informationAssertions. 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 informationFormal 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 informationHi 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 informationChapter 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 information1 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 informationSoftware 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 informationRegression 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 informationCMSC 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 informationChapter 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 informationTesting. 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 informationWhy 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 informationQGIS 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 informationMITOCW 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 informationCSE 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 information1 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 informationSegmentation. 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 informationJava 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 informationTesting. 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 informationSoftware 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 informationSoftware 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 informationOutline. 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 informationVerification 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 informationWho 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 informationBoot 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 informationIn 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 informationProgramming 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 informationSoftware 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 informationTesting 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 informationOverview. 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 informationTestComplete 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 informationIntroduction 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 informationQuality 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 informationLecture 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 informationReferences: 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 informationPeople 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 informationSoftwaretechnik. 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 informationTesting! 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 informationLecture 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 informationVerification 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 informationCOMP2100/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 informationSoftwaretechnik. 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 informationSoftware 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
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 informationMITOCW 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 informationJava 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 informationLecture 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 informationNo 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 informationAn 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 informationIn 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 informationTesting: 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 informationPart 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 informationChapter 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 informationmk-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 informationA 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 informationObject 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 informationTesting. 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 information5) 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 informationDESIGN 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 informationhttps://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 informationObject-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 informationProgramming 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 informationMost 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 informationSoftware 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 informationBlack 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 informationConcurrent 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 informationProgram 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 informationCONTENTS: 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 informationCPSC 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 informationShared 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 informationCIS4/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 informationUnit 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 informationSoftware 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 informationUse 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 informationMITOCW 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 informationFacts 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 informationMITOCW 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 informationECE 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 informationOutline. 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 informationArduino 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 informationCS 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 informationDebugging. 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 informationSoftware 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 informationBridge 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 informationSkill 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 informationSoftware 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 informationTesting 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 informationSteps 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 informationHi 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 informationProblem 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