Well-behaved objects 6.0. 2 Main concepts to be covered Testing Debugging Test automation Writing for maintainability © 2017 Pearson Education, Inc. Hoboken,

Slides:



Advertisements
Similar presentations
Comp1004: Building Better Classes I Testing and Debugging Partly based on BlueJ Book – Chapter 6.
Advertisements

Programming Creating programs that run on your PC
Well-behaved objects 4.0 Testing. 2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main concepts to.
Well-behaved objects Debugging. 2 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Prevention vs Detection.
Objects First with Java A Practical Introduction using BlueJ
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming.
Well-behaved objects Improving your coding skills 1.0.
Testing and Debugging. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling (Reminder) Zuul Assignment Two.
Make Sure You Know All This!. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 2 Objects and Classes.
Object interaction Creating cooperating objects 5.0.
CO320 Introduction to Object- Oriented Programming Michael Kölling 3.0.
ECE122 L17: Method Development and Testing April 5, 2007 ECE 122 Engineering Problem Solving with Java Lecture 17 Method Development and Testing.
1. 2 Chapter 1 Introduction to Computers, Programs, and Java.
5.0 Objects First with Java A Practical Introduction using BlueJ David J. Barnes Michael Kölling.
CS1101: Programming Methodology Aaron Tan.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
1 Shawlands Academy Higher Computing Software Development Unit.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming.
Chapter 1: Introduction to Computers and Programming.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
5.0 Objects First with Java A Practical Introduction using BlueJ Introduction to Computer Science I Instructor: Allyson Anderson.
Programming Lifecycle
Testing and Debugging Version 1.0. All kinds of things can go wrong when you are developing a program. The compiler discovers syntax errors in your code.
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
COMP 121 Week 1: Testing and Debugging. Testing Program testing can be used to show the presence of bugs, but never to show their absence! ~ Edsger Dijkstra.
Unit Testing 101 Black Box v. White Box. Definition of V&V Verification - is the product correct Validation - is it the correct product.
Testing and Debugging Session 9 LBSC 790 / INFM 718B Building the Human-Computer Interface.
First BlueJ Day Houston, 2006 Unit Testing with BlueJ Bruce Quig Deakin University.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
The Software Development Process
5.0 Objects First with Java A Practical Introduction using BlueJ David J. Barnes Michael Kölling.
Week 14 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Final Review. From ArrayLists to Arrays The ArrayList : used to organize a list of objects –It is a class in the Java API –the ArrayList class uses an.
OOPDA Intro 5.0. Topics Website and Syllabus Rowan VPN and H:drive BlueJ application and projects Programming Style (Appendix J) Javadoc (Appendix I)
Testing. Have you contacted your project members lately?
David Streader Computer Science Victoria University of Wellington Copyright: David Streader, Victoria University of Wellington Debugging COMP T1.
Objects First With Java A Practical Introduction Using BlueJ Well-behaved objects 2.1.
Software Quality Assurance and Testing Fazal Rehman Shamil.
1 COS 260 DAY 15 Tony Gauvin. 2 Agenda Questions? 6 th Mini quiz Today –Chapter 6 Assignment 4 posted –Due Nov 9 Capstone progress reports are due –Brief.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Testing and Debugging. Testing Fundamentals  Test as you develop Easier to find bugs early rather than later Prototyping helps identify problems early.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
Chapter – 8 Software Tools.
6.0 Objects First with Java A Practical Introduction using BlueJ David J. Barnes Michael Kölling.
Designing classes How to write classes in a way that they are easily understandable, maintainable and reusable 6.0.
Review. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Objects and Classes Objects and Classes –State.
Wrapper Classes Debugging Interlude 1
Objektorienterad programmering d2, förel. 6
Objects First with Java
for-each PROS CONS easy to use access to ALL items one-by-one
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Objects First with Java A Practical Introduction using BlueJ
Objects First with Java Creating cooperating objects
Objektorienterad programmering d2, förel. 6
Chapter 8 – Software Testing
Testing and Debugging.
COS 260 DAY 17 Tony Gauvin.
Objects First with Java
Objects First with Java
COS 260 DAY 16 Tony Gauvin.
COS 260 DAY 2 Tony Gauvin.
Chapter 1 Introduction(1.1)
COS 260 DAY 15 Tony Gauvin.
Exercise 1 Declare a constant of type int called SIZE and initialize it to value 10 Declare two int arrays of size “SIZE” Assume that those int arrays.
COS 260 DAY 16 Tony Gauvin.
CSE 1020:Software Development
Presentation transcript:

Well-behaved objects 6.0

2 Main concepts to be covered Testing Debugging Test automation Writing for maintainability © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

3 Code snippet of the day public void test() { int sum = 1; for (int i = 0; i <= 4; i++); { sum = sum + 1; } System.out.println("The result is: " + sum); System.out.println("Double result: " + sum+sum); } © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. What is the output?

4 Possible results © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. The result is: 6 The result is: 11 The result is: 5 The result is: 2 Double result: 12 Double result: 4 Double result: 22 Double result: 66 The result is: 2 Double result: 22 Which is printed?

5 Code snippet of the day public void test() { int sum = 1; for (int i = 0; i <= 4; i++); { sum = sum + 1; } System.out.println("The result is: " + sum); System.out.println("Double result: " + sum+sum); } © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

6 We have to deal with errors © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. Early errors are usually syntax errors –The compiler will spot these Later errors are usually logic errors –The compiler cannot help with these –Also known as bugs Some logical errors have no immediately obvious manifestation –Commercial software is rarely error free

7 Prevention vs Detection (Developer vs Maintainer) We can lessen the likelihood of errors: –Use software engineering techniques, like encapsulation –Pay attention to cohesion and coupling We can improve the chances of detection: –Use software engineering practices, like modularization and good documentation We can develop detection skills © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

8 Testing and debugging These are crucial skills Testing searches for the presence of errors Debugging searches for the source of errors –The manifestation of an error may well occur some distance from its source © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

9 Testing and debugging techniques Unit testing (within BlueJ) Test automation Manual walkthroughs Print statements Debuggers © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

10 Unit testing © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. Application testing can only be done after entire application is completed Unit testing of any single unit can be done once written and compiled Each unit of an application may be tested –Method, class, module (package in Java) Can (should) be done during development –Finding and fixing early lowers development costs (e.g. programmer time) –A test suite is built up

11 Testing fundamentals Understand what the unit should do – its contract (requirements) –You will be looking for violations –Use positive tests and negative tests (include null and empty conditions) Test boundaries –Zero, One, Full Search an empty collection Add to a full collection Search for/remove the only element © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

Well-behaved objects Test automation

13 Main concepts to be covered Unit testing JUnit Regression testing Test cases Test classes Assertions Fixtures © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

14 Unit testing within BlueJ © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. Objects of individual classes can be created Individual methods can be invoked Inspectors provide an up-to-date view of an object’s state Explore through the online-shop project

15 Test automation © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. Good testing is a creative process, but thorough testing is time consuming and repetitive Regression testing involves re-running tests that have previously passed Use of a test rig or test harness can relieve some of the burden –Program to automate testing conditions

16 Test harness Additional test classes are written to automate the testing Objects of the harness classes replace human interactivity Creativity and imagination required to create these test classes Test classes must be kept up to date as functionality is added © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

17 Test automation Test frameworks exist to support automation Explore fuller automation through the online-shop-junit project –Intervention only required if a failure is reported © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

18 JUnit JUnit is a Java test framework Test cases are methods that contain tests Test classes contain test methods Assertions are used to assert expected method results Fixtures are used to support multiple tests © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

19 online-shop-junit project Show unit testing tools in BlueJ –Tools -> Preferences -> Interface Create test class and methods –Create Test Class for a class –Create Test Method for the test class o Naming begins with test ( e.g. testTwoComments) o Record test of SalesItem object & 2 comments o Ensure assertions are the expected results o End button to stop recording of test Run Tests, Test All or each method indiv. Create initial objects with setup method –Use Object Bench to Test Fixture

20 Demo of online-shop-junit © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

Well-behaved objects Debugging

22 Prevention vs Detection (Developer vs Maintainer) We can lessen the likelihood of errors –Use software engineering techniques, like encapsulation –Pay attention to cohesion and coupling We can improve the chances of detection –Use software engineering practices, like modularization and good documentation We can develop detection skills Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

23 Debugging techniques Manual walkthroughs Print statements Debuggers © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

24 Modularization and interfaces © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. Applications often consist of different modules –e.g. so different teams can work on them The interface between modules must be clearly specified –Supports independent concurrent development –Increases the likelihood of successful integration

25 Modularization in a calculator Each module does not need to know implementation details of the other –User controls could be a GUI or a hardware device –Logic could be hardware or software © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

26 Method headers as a (class) interface // Return the value to be displayed. public int getDisplayValue(); // Call when a digit button is pressed. public void numberPressed(int number); // Plus operator is pressed. public void plus(); // Minus operator is pressed. public void minus(); // Call to complete a calculation. public void equals(); // Call to reset the calculator. public void clear(); * Interface is shown in the javadoc documentation!!

27 Debugging © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. It is important to develop code- reading skills –Debugging will often be performed on others code Techniques and tools exist to support the debugging process Explore through the calculator- engine project

28 Manual walkthroughs Review of printed (hard) copies Relatively under-used –A low-tech approach –More powerful than appreciated Get away from the computer! Run a program by hand High-level (Step) or low-level (Step into) views Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

29 Tabulating object state © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved. An object’s behavior is largely determined by its state … … so incorrect behavior is often the result of incorrect state Tabulate the values of key fields Document state changes after each method call Tracing of object state changes

30 Verbal walkthroughs Explain to someone else what the code is doing: –They might spot the error –You might spot the error, through the process of explaining Group-based processes exist for conducting formal walkthroughs or inspections Rubber Duck Debugging © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

31 Print statements The most popular technique No special tools required All programming languages support them Only effective if the right methods are documented Output may be voluminous! Turning off and on requires forethought © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

32 Choosing a test strategy Be aware of the available strategies Choose strategies appropriate to the point of development Automate whenever possible –Reduces tedium –Reduces human error –Makes (re)testing more likely © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

33 Debuggers Debuggers are both language- and environment-specific –BlueJ has an integrated debugger Support breakpoints Step and Step-into controlled execution Call sequence (stack) Object state © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

34 Debugging streams (advanced) A pipeline of multiple operations might be hard to debug The peek operation can provide insights Consumer that passes on its input unchanged: peek(s -> System.out.println(s)) © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.

35 Review Errors are a fact of life in programs Good software development techniques can reduce their occurrence Testing and debugging skills are essential Make testing a habit Automate testing where possible Continually repeat tests Practice a range of debugging skills © 2017 Pearson Education, Inc. Hoboken, NJ. All rights reserved.