What is Testing? Table of Contents

Size: px
Start display at page:

Download "What is Testing? Table of Contents"

Transcription

1 Testing Table of Contents Testing - From Hating to... Fishing What is Testing? Validation. Verification. Testing The Testing Process Testing vs. Debugging Testing Techniques Black-box Testing Glass-box Testing Testing Data Abstractions Object Integration Testing XUnit - The Testing Framework Writing a "Hello World" Test Case Running the Tests Adding More Tests Suites and Fixtures Homework Testing - From Hating to... Fishing We will start this tutorial with an excellent apology for testing, by A.Hunt and D.Thomas from their book "The Pragmatic Programmer": Most developers hate testing. They tend to test gently, subconsciously knowing where the code will break and avoiding the weak spots. Pragmatic Programmers are different. We are driven to find our bugs now so we don't have to endure the shame of others finding our bugs later. Finding bugs is somewhat like fishing with a net. We use fine, small nets (unit testing) to catch the minnows, and big, coarse nets (integration tests) to catch the killer sharks. Sometimes the fish manage to escape, so we patch any holes that we find, in hope of catching more and more slippery defects that are swimming about in our project pool. Therefore... What is Testing? One of the key issues in developing software is ascertaining whether or not a program works as we hope it will and discovering why not when it does not. Most of us have an image of what testing us, but unfortunately this image is either distorted or incomplete. Therefore, the goal of this section is to put some order among the key concepts in testing, so that we make sure we use a consistent vocabulary when talking about testing. In this context we will briefly discuss the testing process and its phases. Validation. Verification. Testing Following definitions are proposed by B.Liskov in her book Program Development in Java: Validation is a process designed to increase our confidence that a program works as intended. Validation can be done through verification or testing. Verification is a formal or informal argument that a program works on all possible inputs. Testing is the process of running on a set of test cases and comparing the actual results with expected results. In the rest of this tutorial we will focus exclusively on testing, as a form of validation. The Testing Process The Five Stages of Testing The figure below shows a five-stage testing process where system components are tested, the integrated system is tested and, finally, the system is tested with the customer's data.

2 Ideally, component defects are discovered early in the process and interface problems when the system is integrated. However, as defects are detected the program must be debugged and this may require other stages in the testing process to be repeated. The process is therefore an iterative one with information being fed from later stages to earlier parts of the process. Unit Testing. Individual components are tested to assure that they operate correctly. Each compoenent is tested independently, without other system components. We say that the component is tested in isolation. Module Testing. A module is a collection of dependent components such as an abstract data type, a class, or some looser collection of procedures and functions. A module encapsulates related components, so it can be tested without other system modules. Sub-system Testing This phase involves testing collections of modules which have been integrated into sub-systems. The most common problems which arise in large software systems are interface mismatches. The sub-system test process should therefore concentrate on the detection of module interface errors by rigorously exercising the interfaces. System Testing. This process is concerned with finding errors that result from unanticipated interactions between sub-systems and sub-system interface problems. System Testing is also used for validating that the system meets its functional and non-functional requirements. Acceptance Testing. This is the final testing stage in which the system is tested with data supplied the system customer rather than simulated test data. It may reveal errors and omissions in the system requirements definition because the real data exercise the system in different ways from the test data. Acceptance testing is sometimes called alpha testing. The Four Phases of Testing The goal of defect testing is to expose latent defects in a software system before the system is delivered. This contrasts with validation testing which is intended to demonstrate that a system meets its specification. Validation testing requires the system to perform correctly using given acceptance tests. A succesful defect testing is a test which causes the system to perform incorectly and hence exposes a defect. Testing demonstrates the presence, not the absence, of program faults!! In the figure below you see the phases of a defect testing process. Test cases are specifications of the inputs to the test and the expected output from the system, plus a statement of what is being tested. Test Data are the inputs that are devised to test the system. Test data can be sometimes generated automatically. Exhaustive testing is impractical. Therefore, testing has to be based on a subset of possible test cases and in order choose these test cases each company has to develop testing policies. These policies might be base on general testing policies, such as: "all program statements should be executed at least once". Alternatively, they may be based

3 on experience of system usage and may focus on testing the features of the operational system. For example: All system functions that are accessed through menus should be tested. Combinations of functions that are accessed through same menu must be tested. Where user input is provided, all functions must be tested both for correct and incorrect input. Testing vs. Debugging Testing tells us that something is wrong with a program, but knowing the symptom is still far from knowing its cause. Debugging is the process of understanding and correcting errors. When debugging, we try to narrow the scope of the problem by looking for simple test cases that manifest the bug and by looking at intermediate values to locate the responsible region in the code. As we collect evidence about the bug, we formulate hypotheses and attempt to refute them by running further tests. When we think we understand the cause of the bug, we study the appropriate region of code to find and correct the error. Testing Techniques Black-box Testing Black-box testing is an approach to testing where the test are derived from the program or component specification. The tester presents inputs to the component or the system and examines the corresponding outputs. Equivelance partitioning The key problem for the tester is to select the inputs that have a high probability of exposing erroneous values in the output set. The input data to a program usually fall into a number of different classes, that have common characteristics. We call them partitions or domains. Once you have identified a set of partitions, you then choose test cases from each of these partitions. Use the following guidelines: Consider also invalid inputs as partitions. Choose test-cases on the boundaries of the partitions plus cases close to the mid-point of the partition. If you test programs that work on collections (sequences) of elements, consider the following guidelines: Test software with sequences that have no values and sequences with only a single value. Use different sequences of different sizes in different tests. Derive tests so that the first, middle and last element of the sequence are accessed. Glass-box Testing The objective of glass-box testing is to assure that each independent program path is executed at least once. An independent path is one that traverses at least one new edge in the flow graph. Both true and false branches of all conditions must be tested! Here are a summary of the major guidelines for glass-box testing: Glass-box tests should supplement the black-box tests so that the tests are path-complete: every path in the code is exercised by at least one test. For loops with a fixed amount of iteration, tests should include one and two iterations of the loop. For loops with a variable amount of iteration, tests should include zero, one and two iterations of the loop. For recursion, the tests should include no recursion and one recursive call. Testing Data Abstractions When testing classes, complete test coverage should include: the testing in isolation of all operations associated with the object. the setting and interogation of all attributes associated with the object. the exercise of the object in all possible states. This means that all events that cause a state change in the object should be simulated. If inheritance is used, this makes it more difficult to design tests for classes. Where a superclass provides operations that are inherited by a number of subclasses, all of these subclasses should be tested with all inherited operations. The reason for this is that the inherited operation may make assumptions about other operations that have been changed when inherited. Equally, when a superclass operation is overriden, the overwriting operation must be tested. Object Integration Testing When object-oriented systems are developed, the levels of integration are less distinct. Because of that, there is no direct equivalency to module testing in object-oriented systems. However, some authors suggest that groups of classes which act in combination to provide a set of services should be tested together. They call it cluster testing. The most effective approach to integration (or cluster) testing is the use-case or scenario-based testing, because use-cases describe one mode of using the system. Testing can be based on these scenario descriptions and object clusters created to support the use-cases that relate to that mode of use. XUnit - The Testing Framework When we talk about testing we cannot pass by the XUnit testing framework. Well now, please don't panic! Things will get clearer as you'll read forward. JUnit is the XUnit version for Java and was the first testing framework created by Kent Beck and Erich Gamma. For those of you who are "addicted" to C++, there is also some good news: JUnit was ported also for C++ and it can be even integrated with the MS Development Studio. You can also download CppUnit from our site. Writing a "Hello World" Test Case "Bfffaagh, what can you possibly test at a "Hello World" program!?". Hmmm, let's see. First this section is not intended to be a comprehensive Cookbook. If you find yourself too valuable to follow the steps presented here you can find the original Cookbook in the junit3.8.1.zip. For the rest of you who continued to stay with us, we would like to introduce the HelloClass: package hello; public class HelloClass { public String sayhello() { return "Hello World"; package test.hello; import hello.*;

4 public class TestHelloClass extends TestCase { public TestHelloClass(String s) { super(s); //this is mandatory public void testsayhello() { assertequals(helloobject.sayhello(), "Hello World"); Running the Tests Now, you have the HelloClass and the associated TestClass. All you have to do is to run it. There are three possiblities to do that. 1. The first possibility is to make use of the JUnit text oriented interface and run from command line. The output is as follows: 2. C:\new\tmp>java junit.textui.testrunner test.hello.testhelloclass Time: OK (1 tests) Another possibility is to write a main method. In this case, the code you have to add would look like: 9. package test; import test.hello.*; public class AllTests { 15. public static void main(string[] args) { 16. junit.textui.testrunner.run(testhelloclass.class); Of course, we will not cover the starting of a Java program in this section. 21. Of course, there also is a nice Swing user interface. You can take advantage of the beautiful landscape by typing: java junit.swingui.testrunner (of course don't forget to press <ENTER> :-)). The beauty of the friendly interface will rapidly come and gently touch your eyes. We do not want to spoil the surprise with a static picture, so please try it yourself. Caution Did you, by chance, get the following output? Exception in thread "main" java.lang.noclassdeffounderror: junit/textui/testrunner If you did then you probably forgot to place the junit.jar into the CLASSPATH. Adding More Tests The next step of our little Cookbook starts with the wish of Gigi who just told you to make the HelloClass to support multiple languages. How do you do that? The first solution that strikes you is to have a HashMap with languages as keys. So, the HelloClass would look like: package hello; import java.util.*; public class HelloClass { private Map hellomap = null; public HelloClass() { hellomap = new HashMap(); hellomap.put("english", "Hello World"); hellomap.put("romana", "Buna ziua lume"); hellomap.put("deutsch", "Aloha"); //You just made a mistake :). Try reading a German Conversational Guide public String sayhello() { return "Hello World"; public String sayhello(string language) { if (hellomap.containskey(language) == true) return (String)helloMap.get(language); else return ""; //you know its a String so you downcast Of course, you want to test this class. If you haven't already done that (even before you wrote the HelloClass!) you should write some tests. So, The TestHelloClass would look like: package test.hello; import hello.*; public class TestHelloClass extends TestCase { public TestHelloClass(String s) { super(s);

5 public void testsayhello() { assertequals(helloobject.sayhello(), "Hello World"); public void testsayhelloinromanian() { assertequals(helloobject.sayhello("romana"), "Buna ziua lume"); public void testsayhelloingerman() { assertequals(helloobject.sayhello("deutsch"), "Hallo Welt"); Good. Now we have the code and the associated tests. So we run again the tests: C:\new\tmp>java test.alltests...f Time: 0.02 There was 1 failure: 1) testsayhelloingerman(test.hello.testhelloclass)junit.framework.assertionfailederror: expected:<aloha> but was:<hallo Welt> at test.hello.testhelloclass.testsayhelloingerman(testhelloclass.java:23) at sun.reflect.nativemethodaccessorimpl.invoke0(native Method) at sun.reflect.nativemethodaccessorimpl.invoke(unknown Source) at sun.reflect.inflatablemethodaccessorimpl.invoke(unknown Source) at test.alltests.main(alltests.java:8) FAILURES!!! Tests run: 3, Failures: 1, Errors: 0 Oops! One test just failed on your code. What test exactly? Obvoiusly the "testsayhelloingerman". We will let the debugging pleasure to you. You should stop debugging only when all the tests are running. Suites and Fixtures One thing you should notice is that in every test method you have a common code line: As we don't like you to repeat yourself we would like to put it in one place (a method for example) and use it many times. That is what the fixtures are for. From this perspective the new TestHelloClass would look like: package test.hello; import hello.*; public class TestHelloClass extends TestCase { private HelloClass helloobject; //the fixture public TestHelloClass(String s) { super(s); //this is the method that initializes the fixtures public void setup() { helloobject = new HelloClass(); public void testsayhello() { assertequals(helloobject.sayhello(), "Hello World"); public void testsayhelloinromanian() { assertequals(helloobject.sayhello("romana"), "Buna ziua lume"); public void testsayhelloingerman() { assertequals(helloobject.sayhello("deutsch"), "Hallo Welt"); Now, supose you haven't found out why the "testsayhelloingerman" failed and the boss is on your back. In that case you would like to appear cool and would like not to run the "testsayhelloingerman" test. You have the Suite in your aid. So you modify the AllTests class: package test;

6 import test.hello.*; public class AllTests { public static void main(string[] args) { junit.textui.testrunner.run(suite()); //the method that creates the wanted suite public static Test suite() { TestSuite theworkingsuite = new TestSuite("Non German Languages Tests"); theworkingsuite.addtest(new TestHelloClass("testSayHello")); theworkingsuite.addtest(new TestHelloClass("testSayHelloInRomanian")); return theworkingsuite; Your boss leaves happy as the screen shows: C:\new\tmp>java test.alltests.. Time: 0.01 OK (2 tests) Caution Even if you passed your boss' vigilence, keep in mind another golden rule from the "Pragmatic Programmer":

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1 Verification vs validation Verification: "Are we building the product right?. The software should

More information

Part 5. Verification and Validation

Part 5. Verification and Validation Software Engineering Part 5. Verification and Validation - Verification and Validation - Software Testing Ver. 1.7 This lecture note is based on materials from Ian Sommerville 2006. Anyone can use this

More information

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process Verification and Validation Assuring that a software system meets a user s needs Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapters 19,20 Slide 1

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

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

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

Unit Testing with JUnit and CppUnit

Unit Testing with JUnit and CppUnit Unit Testing with JUnit and CppUnit Software Testing Fundamentals (1) What is software testing? The process of operating a system or component under specified conditions, observing or recording the results,

More information

Testing. CMSC 433 Programming Language Technologies and Paradigms Spring A Real Testing Example. Example (Black Box)?

Testing. CMSC 433 Programming Language Technologies and Paradigms Spring A Real Testing Example. Example (Black Box)? Testing CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Testing Feb. 15, 2007 Some slides adapted from FSE 98 Tutorial by Michal Young and Mauro Pezze Execute program on sample input

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

Software Testing. Lecturer: Sebastian Coope Ashton Building, Room G.18

Software Testing. Lecturer: Sebastian Coope Ashton Building, Room G.18 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 Software Testing 1 Defect Testing Defect testing involves

More information

Aerospace Software Engineering

Aerospace Software Engineering 16.35 Aerospace Software Engineering Verification & Validation Prof. Kristina Lundqvist Dept. of Aero/Astro, MIT Would You...... trust a completely-automated nuclear power plant?... trust a completely-automated

More information

Software testing. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 23 Slide 1

Software testing. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 23 Slide 1 Software testing Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 23 Slide 1 Objectives To discuss the distinctions between validation testing and defect testing To describe the principles

More information

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation 1 Objectives To introduce software verification and validation and to discuss the distinction between them To describe the program inspection process and its role in V & V To

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

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

Ingegneria del Software Corso di Laurea in Informatica per il Management

Ingegneria del Software Corso di Laurea in Informatica per il Management Ingegneria del Software Corso di Laurea in Informatica per il Management Software testing Davide Rossi Dipartimento di Informatica Università di Bologna Validation and verification Software testing is

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

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

JUnit Test Patterns in Rational XDE

JUnit Test Patterns in Rational XDE Copyright Rational Software 2002 http://www.therationaledge.com/content/oct_02/t_junittestpatternsxde_fh.jsp JUnit Test Patterns in Rational XDE by Frank Hagenson Independent Consultant Northern Ireland

More information

Sample Question Paper. Software Testing (ETIT 414)

Sample Question Paper. Software Testing (ETIT 414) Sample Question Paper Software Testing (ETIT 414) Q 1 i) What is functional testing? This type of testing ignores the internal parts and focus on the output is as per requirement or not. Black-box type

More information

Verification and Validation

Verification and Validation Verification and Validation Assuring that a software system meets a user's needs Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 19 Slide 1 Objectives To introduce software verification

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. Software Testing. in the textbook. Chapter 8. Verification and Validation. Verification and Validation: Goals

Software Testing. Software Testing. in the textbook. Chapter 8. Verification and Validation. Verification and Validation: Goals Software Testing in the textbook Software Testing Chapter 8 Introduction (Verification and Validation) 8.1 Development testing 8.2 Test-driven development 8.3 Release testing 8.4 User testing 1 2 Verification

More information

The testing process. Component testing. System testing

The testing process. Component testing. System testing Software testing Objectives To discuss the distinctions between validation testing and defect testing To describe the principles of system and component testing To describe strategies for generating system

More information

Chapter 15. Software Testing The assert Statement

Chapter 15. Software Testing The assert Statement 177 Chapter 15 Software Testing We know that a clean compile does not imply that a program will work correctly. We can detect errors in our code as we interact with the executing program. The process of

More information

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 22 Slide 1

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 22 Slide 1 Verification and Validation Slide 1 Objectives To introduce software verification and validation and to discuss the distinction between them To describe the program inspection process and its role in V

More information

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD Cairo University Faculty of Computers and Information CS251 Software Engineering Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD http://www.acadox.com/join/75udwt Outline Definition of Software

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

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

Chapter 14 Software Testing Techniques

Chapter 14 Software Testing Techniques Software Engineering: A Practitioner s s Approach, 6/e Chapter 14 Software Testing Techniques copyright 1996, 2001, 2005 R.S. Pressman & Associates, Inc. For University Use Only May be reproduced ONLY

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

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

Testing Stragegies. Black Box Testing. Test case

Testing Stragegies. Black Box Testing. Test case References: Teach Yourself Object-Oriented Programming in 21 Days by A.Sintes, 1 Testing Stragegies Test case a set of inputs and expected outputs looks at specific piece of functionality to determine

More information

Software Testing. Software Testing

Software Testing. Software Testing Software Testing Software Testing Error: mistake made by the programmer/ developer Fault: a incorrect piece of code/document (i.e., bug) Failure: result of a fault Goal of software testing: Cause failures

More information

(See related materials in textbook.) CSE 435: Software Engineering (slides adapted from Ghezzi et al & Stirewalt

(See related materials in textbook.) CSE 435: Software Engineering (slides adapted from Ghezzi et al & Stirewalt Verification (See related materials in textbook.) Outline What are the goals of verification? What are the main approaches to verification? What kind of assurance do we get through testing? How can testing

More information

Practical Objects: Test Driven Software Development using JUnit

Practical Objects: Test Driven Software Development using JUnit 1999 McBreen.Consulting Practical Objects Test Driven Software Development using JUnit Pete McBreen, McBreen.Consulting petemcbreen@acm.org Test Driven Software Development??? The Unified Process is Use

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

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/10/2015

Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm. Rao Casturi 11/10/2015 Software Engineering Fall 2015 (CSC 4350/6350) TR. 5:30 pm 7:15 pm Rao Casturi 11/10/2015 http://cs.gsu.edu/~ncasturi1 Class announcements Final Exam date - Dec 1 st. Final Presentations Dec 3 rd. And

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

Patterns and Testing

Patterns and Testing and Lecture # 7 Department of Computer Science and Technology University of Bedfordshire Written by David Goodwin, based on the lectures of Marc Conrad and Dayou Li and on the book Applying UML and (3

More information

Software Engineering Fall 2014

Software Engineering Fall 2014 Software Engineering Fall 2014 (CSC 4350/6350) Mon.- Wed. 5:30 pm 7:15 pm ALC : 107 Rao Casturi 11/10/2014 Final Exam date - Dec 10 th? Class announcements Final Presentations Dec 3 rd. And Dec 8 th. Ability

More information

Tuesday, November 15. Testing

Tuesday, November 15. Testing Tuesday, November 15 1 Testing Testing Waterfall model show testing as an activity or box In practice, testing is performed constantly There has never been a project where there was too much testing. Products

More information

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process

Objectives. Chapter 19. Verification vs. validation. Topics covered. Static and dynamic verification. The V&V process Objectives Chapter 19 Verification and Validation Assuring that a software system meets a user s need are to introduce software verification and validation (V&V) and to discuss the distinction between

More information

Software Engineering

Software Engineering Software Engineering Engr. Abdul-Rahman Mahmood MS, PMP, MCP, QMR(ISO9001:2000) armahmood786@yahoo.com alphasecure@gmail.com alphapeeler.sf.net/pubkeys/pkey.htm http://alphapeeler.sourceforge.net pk.linkedin.com/in/armahmood

More information

UNIT-4 Black Box & White Box Testing

UNIT-4 Black Box & White Box Testing Black Box & White Box Testing Black Box Testing (Functional testing) o Equivalence Partitioning o Boundary Value Analysis o Cause Effect Graphing White Box Testing (Structural testing) o Coverage Testing

More information

White box testing. White-box testing. Types of WBT 24/03/15. Advanced Programming

White box testing. White-box testing. Types of WBT 24/03/15. Advanced Programming White box testing Advanced Programming 24/03/15 Barbara Russo 1 White-box testing White-box testing is a verification technique software engineers can use to examine if their code works as expected 24/03/15

More information

CS159. Nathan Sprague. September 30, 2015

CS159. Nathan Sprague. September 30, 2015 CS159 Nathan Sprague September 30, 2015 Testing Happens at Multiple Levels Unit Testing - Test individual classes in isolation. Focus is on making sure that each method works according to specification.

More information

INTRODUCTION TO SOFTWARE ENGINEERING

INTRODUCTION TO SOFTWARE ENGINEERING INTRODUCTION TO SOFTWARE ENGINEERING Introduction to Software Testing d_sinnig@cs.concordia.ca Department for Computer Science and Software Engineering What is software testing? Software testing consists

More information

UNIT-4 Black Box & White Box Testing

UNIT-4 Black Box & White Box Testing Black Box & White Box Testing Black Box Testing (Functional testing) o Equivalence Partitioning o Boundary Value Analysis o Cause Effect Graphing White Box Testing (Structural testing) o Coverage Testing

More information

An Introduction to Systematic Software Testing. Robert France CSU

An Introduction to Systematic Software Testing. Robert France CSU An Introduction to Systematic Software Testing Robert France CSU Why do we need to systematically test software? Poor quality products can Inconvenience direct and indirect users Result in severe financial

More information

Analysis of the Test Driven Development by Example

Analysis of the Test Driven Development by Example Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 /

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

Computational Systems COMP1209

Computational Systems COMP1209 Computational Systems COMP1209 Testing Yvonne Howard ymh@ecs.soton.ac.uk A Problem A café wants to build an automated system to provide breakfasts. The robot waiter greets people before taking their order

More information

So, You Want to Test Your Compiler?

So, You Want to Test Your Compiler? So, You Want to Test Your Compiler? Theodore S. Norvell Electrical and Computer Engineering Memorial University October 19, 2005 Abstract We illustrate a simple method of system testing by applying it

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

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

Introduc)on to tes)ng with JUnit. Workshop 3

Introduc)on to tes)ng with JUnit. Workshop 3 Introduc)on to tes)ng with JUnit Workshop 3 We have to deal with errors Early errors are usually syntax errors. The compiler will spot these. Later errors are usually logic errors. The compiler cannot

More information

Software Testing. Minsoo Ryu. Hanyang University. Real-Time Computing and Communications Lab., Hanyang University

Software Testing. Minsoo Ryu. Hanyang University. Real-Time Computing and Communications Lab., Hanyang University Software Testing Minsoo Ryu Hanyang University Topics covered 1. Testing Goals and Principles 2. Testing Process 3. Testing Strategies Component testing Integration testing Validation/system testing 4.

More information

Coding and Unit Testing! The Coding Phase! Coding vs. Code! Coding! Overall Coding Language Trends!

Coding and Unit Testing! The Coding Phase! Coding vs. Code! Coding! Overall Coding Language Trends! Requirements Spec. Design Coding and Unit Testing Characteristics of System to be built must match required characteristics (high level) Architecture consistent views Software Engineering Computer Science

More information

JUnit A Cook's Tour. Kent Beck and Erich Gamma. Renaat Verbruggen 1#

JUnit A Cook's Tour. Kent Beck and Erich Gamma. Renaat Verbruggen 1# JUnit A Cook's Tour Kent Beck and Erich Gamma Renaat Verbruggen 1# JUnit advice "Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead."

More information

All the subjective part of 2011 papers solved complete reference numbers

All the subjective part of 2011 papers solved complete reference numbers 1 All current papers 2011 Solved papers (eagle_eye) CS504 Current data final term paper 15 FEB All the subjective part of 2011 papers solved complete reference numbers 1) Describe the the concept of cyclomatic

More information

Test-Driven Development (a.k.a. Design to Test) CSE260, Computer Science B: Honors Stony Brook University

Test-Driven Development (a.k.a. Design to Test) CSE260, Computer Science B: Honors Stony Brook University Test-Driven Development (a.k.a. Design to Test) CSE260, Computer Science B: Honors Stony Brook University http://www.cs.stonybrook.edu/~cse260 Person-hours Labor is sometimes measured in person-hours,

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

Software Testing Fundamentals. Software Testing Techniques. Information Flow in Testing. Testing Objectives

Software Testing Fundamentals. Software Testing Techniques. Information Flow in Testing. Testing Objectives Software Testing Fundamentals Software Testing Techniques Peter Lo Software Testing is a critical element of software quality assurance and represents the ultimate review of specification, design and coding.

More information

Software Engineering (CSC 4350/6350) Rao Casturi

Software Engineering (CSC 4350/6350) Rao Casturi Software Engineering (CSC 4350/6350) Rao Casturi Testing Software Engineering -CSC4350/6350 - Rao Casturi 2 Testing What is testing? Process of finding the divergence between the expected behavior of the

More information

Three General Principles of QA. COMP 4004 Fall Notes Adapted from Dr. A. Williams

Three General Principles of QA. COMP 4004 Fall Notes Adapted from Dr. A. Williams Three General Principles of QA COMP 4004 Fall 2008 Notes Adapted from Dr. A. Williams Software Quality Assurance Lec2 1 Three General Principles of QA Know what you are doing. Know what you should be doing.

More information

Darshan Institute of Engineering & Technology for Diploma Studies

Darshan Institute of Engineering & Technology for Diploma Studies CODING Good software development organizations normally require their programmers to follow some welldefined and standard style of coding called coding standards. Most software development organizations

More information

INTRODUCTION TO JAVA PROGRAMMING JAVA FUNDAMENTALS PART 2

INTRODUCTION TO JAVA PROGRAMMING JAVA FUNDAMENTALS PART 2 INTRODUCTION TO JAVA PROGRAMMING JAVA FUNDAMENTALS PART 2 Table of Contents Introduction to JUnit 4 What is a Test Driven approach? 5 The benefits of a Test Driven Approach 6 What is Continuous Integration?

More information

TITAN 5300 Software. Unit Test Guidelines. S. Darling, S. Harpster, R. Hite, K. Konecki, W. Martersteck, R. Stewart. Revision 2.0

TITAN 5300 Software. Unit Test Guidelines. S. Darling, S. Harpster, R. Hite, K. Konecki, W. Martersteck, R. Stewart. Revision 2.0 TITAN 5300 Software Unit Test Guidelines S. Darling, S. Harpster, R. Hite, K. Konecki, W. Martersteck, R. Stewart Revision 2.0 1994, Tellabs Operations, Inc., 4951 Indiana Ave., Lisle, IL 60532 (312) 969-8800

More information

ΗΜΥ 317 Τεχνολογία Υπολογισμού

ΗΜΥ 317 Τεχνολογία Υπολογισμού ΗΜΥ 317 Τεχνολογία Υπολογισμού Εαρινό Εξάμηνο 2008 ΙΑΛΕΞΕΙΣ 18-19: Έλεγχος και Πιστοποίηση Λειτουργίας ΧΑΡΗΣ ΘΕΟΧΑΡΙ ΗΣ Λέκτορας ΗΜΜΥ (ttheocharides@ucy.ac.cy) [Προσαρμογή από Ian Sommerville, Software

More information

Chapter 9 Quality and Change Management

Chapter 9 Quality and Change Management MACIASZEK, L.A. (2007): Requirements Analysis and System Design, 3 rd ed. Addison Wesley, Harlow England ISBN 978-0-321-44036-5 Chapter 9 Quality and Change Management Pearson Education Limited 2007 Topics

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

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

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

Pearson Education 2007 Chapter 9 (RASD 3/e)

Pearson Education 2007 Chapter 9 (RASD 3/e) MACIASZEK, L.A. (2007): Requirements Analysis and System Design, 3 rd ed. Addison Wesley, Harlow England ISBN 978-0-321-44036-5 Chapter 9 Quality and Change Management Pearson Education Limited 2007 Topics

More information

Verification and Validation. Verification and validation

Verification and Validation. Verification and validation Verification and Validation Verification and validation Verification and Validation (V&V) is a whole life-cycle process. V&V has two objectives: Discovery of defects, Assessment of whether or not the system

More information

Verification and Validation

Verification and Validation Steven Zeil February 13, 2013 Contents 1 The Process 3 1 2 Non-Testing V&V 7 2.1 Code Review....... 8 2.2 Mathematically-based verification......................... 19 2.3 Static analysis tools... 23 2.4

More information

Verification and Validation

Verification and Validation Steven Zeil February 13, 2013 Contents 1 The Process 2 2 Non-Testing V&V 3 2.1 Code Review........... 4 2.2 Mathematically-based verification.................................. 8 2.3 Static analysis tools.......

More information

Course Content. Objectives of Lecture 18 Black box testing and planned debugging. Outline of Lecture 18

Course Content. Objectives of Lecture 18 Black box testing and planned debugging. Outline of Lecture 18 Structural Programming and Data Structures Winter 2000 CMPUT 102: Testing and Debugging Dr. Osmar R. Zaïane Course Content Introduction Objects Methods Tracing Programs Object State Sharing resources Selection

More information

Software Engineering 2 A practical course in software engineering. Ekkart Kindler

Software Engineering 2 A practical course in software engineering. Ekkart Kindler Software Engineering 2 A practical course in software engineering Quality Management Main Message Planning phase Definition phase Design phase Implem. phase Acceptance phase Mainten. phase 3 1. Overview

More information

Verification Overview Testing Theory and Principles Testing in Practice. Verification. Miaoqing Huang University of Arkansas 1 / 80

Verification Overview Testing Theory and Principles Testing in Practice. Verification. Miaoqing Huang University of Arkansas 1 / 80 1 / 80 Verification Miaoqing Huang University of Arkansas Outline 1 Verification Overview 2 Testing Theory and Principles Theoretical Foundations of Testing Empirical Testing Principles 3 Testing in Practice

More information

Chapter 7 Control Statements Continued

Chapter 7 Control Statements Continued Chapter 7 Control Statements Continued Logical Operators used in Boolean expressions to control behavior of if, while or for statements. && - and, - or,! - not if (the sun shines && you have the time)

More information

TOOLS AND TECHNIQUES FOR TEST-DRIVEN LEARNING IN CS1

TOOLS AND TECHNIQUES FOR TEST-DRIVEN LEARNING IN CS1 TOOLS AND TECHNIQUES FOR TEST-DRIVEN LEARNING IN CS1 ABSTRACT Test-Driven Development is a design strategy where a set of tests over a class is defined prior to the implementation of that class. The goal

More information

Software Quality Assurance. David Janzen

Software Quality Assurance. David Janzen Software Quality Assurance David Janzen What is quality? Crosby: Conformance to requirements Issues: who establishes requirements? implicit requirements Juran: Fitness for intended use Issues: Who defines

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

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

SFWR ENG 3S03: Software Testing

SFWR ENG 3S03: Software Testing (Slide 1 of 52) Dr. Ridha Khedri Department of Computing and Software, McMaster University Canada L8S 4L7, Hamilton, Ontario Acknowledgments: Material based on [?] Techniques (Slide 2 of 52) 1 2 3 4 Empirical

More information

Darshan Institute of Engineering & Technology Unit : 9

Darshan Institute of Engineering & Technology Unit : 9 1) Explain software testing strategy for conventional software architecture. Draw the spiral diagram showing testing strategies with phases of software development. Software Testing: Once source code has

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Chapter 8. Achmad Benny Mutiara

Chapter 8. Achmad Benny Mutiara Chapter 8 SOFTWARE-TESTING STRATEGIES Achmad Benny Mutiara amutiara@staff.gunadarma.ac.id 8.1 STATIC-TESTING STRATEGIES Static testing is the systematic examination of a program structure for the purpose

More information

Learning outcomes. Systems Engineering. Debugging Process. Debugging Process. Review

Learning outcomes. Systems Engineering. Debugging Process. Debugging Process. Review Systems Engineering Lecture 9 System Verification II Dr. Joanna Bryson Dr. Leon Watts University of Bath Department of Computer Science 1 Learning outcomes After both lectures and doing the reading, you

More information

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

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

CS211 Computers and Programming Matthew Harris and Alexa Sharp July 9, Boggle

CS211 Computers and Programming Matthew Harris and Alexa Sharp July 9, Boggle Boggle If you are not familiar with the game Boggle, the game is played with 16 dice that have letters on all faces. The dice are randomly deposited into a four-by-four grid so that the players see the

More information

The first program: Little Crab

The first program: Little Crab Chapter 2 The first program: Little Crab topics: concepts: writing code: movement, turning, reacting to the screen edges source code, method call, parameter, sequence, if-statement In the previous chapter,

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

Testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.

Testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements. TESTING Testing is the process of evaluating a system or its component(s) with the concentrating to find whether it satisfies the specified requirements or not. Testing is executing a system in order to

More information

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Testing and Debugging

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Testing and Debugging WIT COMP1000 Testing and Debugging Testing Programs When testing your code, always test a variety of input values Never test only one or two values because those samples may not catch some errors Always

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

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