They both stop working when you open Windows!

Slides:



Advertisements
Similar presentations
11-Jun-14 The assert statement. 2 About the assert statement The purpose of the assert statement is to give you a way to catch program errors early The.
Advertisements

If (justMetYou) { crazy = true; cout
Slides adapted from Alex Mariakakis, with material from Krysta Yousoufian, Mike Ernst, and Kellen Donohue Section 4: Graphs and Testing.
MAHDI OMAR JUNIT TUTORIAL. CONTENTS Installation of Junit Eclipse support for Junit Using Junit exercise JUnit options Questions Links and Literature.
Chapter 8Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 8 l Basic Exception Handling »the mechanics of exceptions l.
try { Assert(Life. Real); Assert(Life
Slides adapted from Alex Mariakakis, with material from Krysta Yousoufian, Mike Ernst, Kellen Donohue Section 5: HW6 and Interfaces.
Objectives: Test Options JUnit Testing Framework TestRunners Test Cases and Test Suites Test Fixtures JUnit.
11-Jun-15 Exceptions. 2 Errors and Exceptions An error is a bug in your program dividing by zero going outside the bounds of an array trying to use a.
Writing a Unit test Using JUnit At the top of the file include: import junit.framework.TestCase; The main class of the file must be: public Must extend.
14-Jul-15 JUnit 4. Comparing JUnit 3 to JUnit 4 All the old assertXXX methods are the same Most things are about equally easy JUnit 4 makes it easier.
Unit Testing & Defensive Programming. F-22 Raptor Fighter.
© Dr. A. Williams, Fall Present Software Quality Assurance – JUnit Lab 1 JUnit A unit test framework for Java –Authors: Erich Gamma, Kent Beck Objective:
07 Coding Conventions. 2 Demonstrate Developing Local Variables Describe Separating Public and Private Members during Declaration Explore Using System.exit.
1.  Writing snippets of code that try to use methods (functions) from your program.  Each snippet should test one (and only one) function......by calling.
(1) Unit Testing and Test Planning CS2110: SW Development Methods These slides design for use in lab. They supplement more complete slides used in lecture.
Introduction to JUnit 3.8 SEG 3203 Winter ‘07 Prepared By Samia Niamatullah.
Unit Testing with JUnit and Clover Based on material from: Daniel Amyot JUnit Web site.
A tool for test-driven development
A programmer’s wife tells him, “Would you mind going to the store and picking up a loaf of bread. Also, if they have eggs, get a dozen.” The programmer.
Computer Programming with JAVA Chapter 8. Exception Handling Basic Exception Handling the mechanics of exceptions Defining and Using Exceptions some "simple"
JUnit A framework which provides hooks for easy testing of your Java code, as it's built Note: The examples from these slides can be found in ~kschmidt/public_html/CS265/Labs/Java/Junit.
1 CSE 331 Unit Testing with JUnit slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia
JUnit. Introduction JUnit is an open source Java testing framework used to write and run repeatable tests JUnit is integrated with several IDEs, including.
1 Unit Testing with JUnit CS 3331 JUnit website at Kent Beck and Eric Gamma. Test Infected: Programmers Love Writing Tests, Java Report,
SLIDES ADAPTED FROM ALEX MARIAKAKIS, WITH MATERIAL FROM KRYSTA YOUSOUFIAN, MIKE ERNST, KELLEN DONOHUE Section 5: HW6 and Interfaces Justin Bare and Deric.
Unit Testing. F-22 Raptor Fighter Manufactured by Lockheed Martin & Boeing How many parts does the F-22 have?
SE 433/333 Software Testing & Quality Assurance Dennis Mumaugh, Instructor Office: CDM, Room 428 Office Hours: Tuesday, 4:00 –
Justin Bare and Deric Pang with material from Erin Peach, Nick Carney, Vinod Rathnam, Alex Mariakakis, Krysta Yousoufian, Mike Ernst, Kellen Donohue Section.
Defensive Programming. Good programming practices that protect you from your own programming mistakes, as well as those of others – Assertions – Parameter.
Unit Testing in Eclipse Presented by David Eisler 08/09/2014.
A programmer’s roommate tells him, “Would you mind going to the store and picking up a loaf of bread. Also, if they have eggs, get a dozen.” The programmer.
CSE 143 Lecture 14: testing.
SWE 434 SOFTWARE TESTING AND VALIDATION LAB2 – INTRODUCTION TO JUNIT 1 SWE 434 Lab.
Eighth Lecture Exception Handling in Java
Section 7: Dijkstra’s Justin Bare and deric Pang
Section 4: Graphs and Testing
CompSci 280 S Introduction to Software Development
Unit Testing.
Software Construction Lab 10 Unit Testing with JUnit
Unit Testing with JUnit
Dept of Computer Science University of Maryland College Park
Introduction to JUnit CS 4501 / 6501 Software Testing
Testing and Debugging.
Computer Science 209 Testing With JUnit.
Section 5: HW6 and Interfaces
Section 5: HW6 and Interfaces
Conditions and Ifs BIS1523 – Lecture 8.
Introduction to JUnit CS 4501 / 6501 Software Testing
Introduction to JUnit IT323 – Software Engineering II
The programmer returns with 12 loaves of bread.
Section 3 Graphs & Testing
Exceptions 19-Feb-19.
CSE 403 JUnit Reading: These lecture slides are copyright (C) Marty Stepp, They may not be rehosted, sold, or modified without expressed permission.
Section 5: HW6 and Interfaces
CS 240 – Advanced Programming Concepts
Section 4: Graphs and Testing
Exceptions 7-Apr-19.
Warmup ["hip","hip"] = Hip Hip Array! ???.
CSE 143 Lecture 5 More ArrayIntList:
Section 5: HW6 and Interfaces
Exceptions 25-Apr-19.
JUnit Reading: various web pages
Exceptions 22-Apr-19.
CSC 143 Java Errors and Exceptions.
TCSS 360, Spring 2005 Lecture Notes
Barb Ericson Georgia Institute of Technology Oct 2005
Exceptions 5-Jul-19.
Junit Tests.
Defensive Programming
Presentation transcript:

They both stop working when you open Windows! Warmup: What do PCs and air-conditioning units have in common? They both stop working when you open Windows!

Section 4: Graphs and Testing Cody Kesting and Lucy Zhu with material from Justin Bare, Deric Pang, Erin Peach, Nick Carney, Vinod Rathnam, Alex Mariakakis, Krysta Yousoufian, Mike Ernst, Kellen Donohue

AGENDA Graphs JUnit Testing Test Script Language JavaDoc

Graph Lingo / Common Terms Nodes (vertices) Edges Types of Graphs Children Parents Paths

GRAPHS collection of nodes (vertices) and edges B Nodes: states or objects within the graph Edges: connection between two nodes C D E

What are some examples where each type of edge would be useful? GRAPHS Edges can be: Directed Undirected What are some examples where each type of edge would be useful? A B C D

* Common term: Directed Acyclic Graph (DAG) GRAPHS Directed: Undirected: Flight itinerary Facebook friends Class dependencies Computer networks Seattle Zürich John Sally * Common term: Directed Acyclic Graph (DAG)

GRAPHS Children of A: nodes reached by an edge starting at node A A B

GRAPHS Parents of D: nodes that have an edge ending at node D A B C D

GRAPHS Paths from A to C: B Paths from A to C: a sequence or ordered list of edges starting at A and ending at C C D E

GRAPHS Paths from A to C: Shortest path from A to C? A ⇒ C B Paths from A to C: A ⇒ C A ⇒ D ⇒ E ⇒ C C D Shortest path from A to C? E

REMINDER: You’ve seen Graphs before! Linked Lists Binary Trees Luke A B C Leia Droids C3PO R2-D2

Testing

INTERNAL VS. EXTERNAL TESTING Internal : JUnit How you decide to implement the object Checked with implementation tests Ex: JUnit tests you’ll write for HW 5 External: test script Your API and specifications Testing against the specification Checked with specification tests Ex: HW5TestDriver.java

A JUNIT TEST CLASS import org.junit.*; A method with @Test is flagged as a JUnit test All @Test methods run when JUnit runs import org.junit.*; import static org.junit.Assert.*; public class TestSuite { ... @Test public void TestName1() { }

USING JUNIT ASSERTIONS Verifies that a value matches expectations assertEquals(42, meaningOfLife()); assertTrue(list.isEmpty()); If the assert fails: Test immediately terminates Other tests in the test class are still run as normal Results show “details” of failed tests (We’ll get to this later)

USING JUNIT ASSERTIONS Case for failure assertTrue(test) the boolean test is false assertFalse(test) the boolean test is true assertEquals(expected, actual) the values are not equal assertSame(expected, actual) the values are the same (by ==) assertNotSame(expected, actual) the values are not the same (by ==) assertNull(value) the given value is not null assertNotNull(value) the given value is null And others: http://www.junit.org/apidocs/org/junit/Assert.html Each method can also be passed a string to display if it fails: assertEquals("message", expected, actual)

USING JUNIT ASSERTIONS When writing JUnit assertions, make sure to use the appropriate test Ex: Testing Java’s List.size() Use assertEquals(list.size(), 1) Don’t use assertTrue(list.size() == 1)

CHECKING FOR EXCEPTIONS Verify that a method throws an exception when it should: Passes if specified exception is thrown, fails otherwise Only time it’s OK to write a test without a form of asserts @Test(expected=IndexOutOfBoundsException.class) public void testGetEmptyList() { List<String> list = new ArrayList<String>(); list.get(0); }

“But don’t I need to create a list before checking if I’ve successfully added to it?”

SETUP AND TEARDOWN @Before public void name() { ... } @After Methods to run before/after each test case method is called: @Before public void name() { ... } @After Methods to run once before/after the entire test class runs: @BeforeClass public static void name() { ... } @AfterClass

SETUP AND TEARDOWN public class Example { List empty; @Before public void initialize() { empty = new ArrayList(); } @Test public void size() { ... public void remove() {

Test Writing Etiquette

The Rules 1. Don’t Repeat Yourself 2. Be Descriptive Use constants and helper methods 2. Be Descriptive Take advantage of message, expected, and actual values Naming conventions Ex: testAddElementToEmptyList instead of testAdd

The Rules 3. Keep Tests Small 4. Be Thorough Isolate bugs one at a time – Test halts after failed assertion Helps to catch bugs at the source 4. Be Thorough Test big, small, boundaries (edge cases), exceptions, errors 5. Order of Testing Matters If methodB() relies on methodA() to work correctly, test methodA() first Ex: test constructor first, then add(), then size(), etc.

LET’S PUT IT ALL TOGETHER! public class DateTest { ... // Test addDays when it causes a rollover between months @Test public void testAddDaysWrapToNextMonth() { Date actual = new Date(2050, 2, 15); actual.addDays(14); Date expected = new Date(2050, 3, 1); assertEquals("date after +14 days", expected, actual); }

How To Create JUnit Test Classes Right-click hw5.test -> New -> JUnit Test Case Important: Follow naming guidelines we provide Demo

JUNIT ASSERTS VS. JAVA ASSERTS We’ve just been discussing JUnit assertions so far Tests for incorrect behavior Java itself has assertions Tests for invalid states public class LitterBox { ArrayList<Kitten> kittens; public Kitten getKitten(int n) { assert(n >= 0); return kittens(n); }

ASSERTIONS VS. EXCEPTIONS public class LitterBox { ArrayList<Kitten> kittens; public Kitten getKitten(int n) { assert(n >= 0); return kittens(n); } public class LitterBox { ArrayList<Kitten> kittens; public Kitten getKitten(int n) { try { return kittens(n); } catch(Exception e) { } Assertions should check for things that should never happen Exceptions should check for things that might happen “Exceptions address the robustness of your code, while assertions address its correctness”

REMINDER: ENABLING ASSERTS IN ECLIPSE To enable asserts: Go to Preferences -> Java -> Installed JREs - > click on JRE you’re using -> Edit -> input -ea in Default VM arguments section

Expensive CheckReps Ant Validate and Staff Grading will have assertions enabled But sometimes a checkRep can be expensive For example, looking at each node in a Graph with a large number of nodes This could cause the grading scripts to timeout

Expensive CheckReps Before your final commit, remove the checking of expensive parts of your checkRep or the checking of your checkRep entirely Example: boolean flag and structure your checkRep as so: private void checkRep() { cheap-stuff if(DEBUG_FLAG) { // or can have this for entire checkRep expensive-stuff } ...

EXTERNAL TESTS: TEST SCRIPT LANGUAGE

TEST SCRIPT LANGUAGE Text file with one command listed per line First word is always the command name Remaining words are arguments Commands will correspond to methods in your code

TEST SCRIPT LANGUAGE (ex .test file) # Create a graph CreateGraph graph1 # Add a pair of nodes AddNode graph1 n1 AddNode graph1 n2 # Add an edge AddEdge graph1 n1 n2 e1 # Print the nodes in the graph and the outgoing edges from n1 ListNodes graph1 ListChildren graph1 n1 n1 n2

How To Create Specification Tests Create .test and .expected file pairs under hw5.test Implement parts of HW5TestDriver driver connects commands from .test file to your Graph implementation to the output which is matched with .expected file Run all tests by running SpecificationTests.java Note: staff will have our own .test and .expected pairs to run with your code Do not hardcode .test/.expected pairs to pass, but instead make sure the format in hw5 instructions is correctly followed

DEMO: TEST SCRIPT LANGUAGE

JAVADOC API Now you can generate the JavaDoc API for your code Instructions in the Editing/Compiling Handout Demo: Generate JavaDocs