bugs & debugging - testing

19
1 G54PRG Programming Lecture 1 Amadeo Ascó Adam Moore 10 Bugs & Debugging - Testing

Upload: marja

Post on 05-Jan-2016

17 views

Category:

Documents


0 download

DESCRIPTION

10. Bugs & Debugging - Testing. Previously. Design a program Break the problem into smaller ones It may help to do it several times to reduce the problem enough Outlines Javadoc Industry standard for documenting Java code Create documentation in HML format Other format can be obtained. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Bugs & Debugging - Testing

1

G54PRG ProgrammingLecture

1

Amadeo Ascó Adam Moore

10

Bugs & Debugging - Testing

Page 2: Bugs & Debugging - Testing

2Amadeo Ascó , Adam Moore

Previously

• Design a program– Break the problem into smaller ones– It may help to do it several times to reduce the

problem enough– Outlines

• Javadoc– Industry standard for documenting Java code– Create documentation in HML format– Other format can be obtained

Page 3: Bugs & Debugging - Testing

3Amadeo Ascó , Adam Moore

Overview

• Types of Errors• When errors appear• Compiler Errors• Run-time errors• Fixing errors• Testing - Find Errors

Page 4: Bugs & Debugging - Testing

4Amadeo Ascó , Adam Moore

12345

12345

Types of Errors

• Syntax errors– Code that does not conform to the syntax of the programming language

– Detected a compiling time

// Declaring variablesint iCounter = 0int iValue;

iValue = ++iCounter;

Page 5: Bugs & Debugging - Testing

5Amadeo Ascó , Adam Moore

Types of Errors

• Semantic errors

– Mistakes in the logic of the code

– Legal language code but not what intended

– Appear when running the code

• Exceptions

Page 6: Bugs & Debugging - Testing

6Amadeo Ascó , Adam Moore

When errors appear

• Compile-time errors– Appear when the code is compiled

• Run-time errors– Appear when the code is running

• Makes the code to behave different than expected• Could take long time before effects are seen

– Logical errors are run-time errors– Some languages try to reduce the risk of this

errors, Java is one of them

Page 7: Bugs & Debugging - Testing

7Amadeo Ascó , Adam Moore

Compiler Errors

• Eclipse will show them with a read circle and a cross

• Some information is provided– The point of the error may not be where the error

was introduced– Unbalanced braces cannot be detected until the

braces are closed – indexation helps to detect the point of the problem

– Previous error may create other errors, “spurious” errors

Page 8: Bugs & Debugging - Testing

8Amadeo Ascó , Adam Moore

Compiler Errors

Let see some using Eclipse!

Page 9: Bugs & Debugging - Testing

9Amadeo Ascó , Adam Moore

Run-time errors• Java does not allow some code to avoid

potential run-time errorsfloat fCostProduct1 = 12.50;float fCostProduct2 = 30.10;

int iTotal = fCostProduct1 + fCostProduct2;

• Potential run-time errors may be detected by Eclipse and are displayed with a yellow triangle with an exclamation mark– You should investigate them– Take the appropriate action to remove them

Page 10: Bugs & Debugging - Testing

10Amadeo Ascó , Adam Moore

Run-time errors• Cause: Lack of validation

– An example would be when expected a number and provided a string

– Remember the exercise to convert from Celsius to Fahrenheit the data is inputted as an string from the console and converted to a number

– What happen if the user input a character not a digit? An exception is thrown

Page 11: Bugs & Debugging - Testing

11Amadeo Ascó , Adam Moore

RuntimeExceptionArithmeticException e.g. 10 / 0

NullPointerExceptionIndexOutOfBoundsException...

Run-time errors

Page 12: Bugs & Debugging - Testing

12Amadeo Ascó , Adam Moore

Run-time errorsOther causes:

– External factors• Out of memory• Insufficient i/o privileges...

– Internal factors• Arithmetic errors• Invalid operation, e.g. try to read beyond the end of a file• Try to access an object that doesn’t exist, e.g. null object• Attempt to read beyond the end of an array...

Page 13: Bugs & Debugging - Testing

13Amadeo Ascó , Adam Moore

Run-time errors

• Logical errors– Causes a program to operate incorrectly– The program does not terminate abnormally or

crash– The behaviour of the program is different that

what was intended– Can be difficult to spot

Page 14: Bugs & Debugging - Testing

14Amadeo Ascó , Adam Moore

123456789101112

123456789101112

Run-time errors// Example of a logical errorString strAnswer;

System.out.println("Press 'y' to continue or any other key” + ” to terminate: ");strAnswer = Scanner.nextLine();// Exit the program if the key 'y' is pressedif (strAnswer.charAt(0) == 'n') { // Terminate the application

System.exit(0);}...

Page 15: Bugs & Debugging - Testing

15Amadeo Ascó , Adam Moore

Run-time errors

Let see some using Eclipse!

Page 16: Bugs & Debugging - Testing

16Amadeo Ascó , Adam Moore

Fixing errors

1. Need to know an error exists – find errors2. Gather as much information as possible

– Logging messages helps

3. Establish where the error happens in the code– Debugging is the process of locating the errors

(bugs) in the code

4. Design the fix5. Implement the fix6. Test that the fix really fixes the problem

Page 17: Bugs & Debugging - Testing

17Amadeo Ascó , Adam Moore

Run-time errors

Let do some debugging using Eclipse!

Page 18: Bugs & Debugging - Testing

18Amadeo Ascó , Adam Moore

Testing - Find Errors

• Test to find errors (bugs) that may exist in the code

• Different type of tests are conducted at different stages of a project

• Tests intend to establish the compliance to the requirements

• Errors should be reproducible!– Requirement to be able to locate them and fix– Information gathered required to reproduce it

Page 19: Bugs & Debugging - Testing

19Amadeo Ascó , Adam Moore

Testing - Find Errors• Create unit testing

– Test units of your code• Check if the unit does what it is expected• The units are methods

– Use JUnit in Java

• Run some simple examples• System test

– Test the complete, integrated system to evaluate the compliance of the system – behave as expected

• Customers – NOT GOOD