Unit test guide. Tuesday, October 23, 2012 Compiled by Nikita Astrakhantsev.
|
|
- Kristina Dalton
- 7 years ago
- Views:
Transcription
1 Unit test guide Tuesday, October 23, 2012 Compiled by Nikita Astrakhantsev
2 Contents Introduction... 3 Preliminaries... 3 Unit testing tasks... 4 What should be tested... 4 Unit-test one object at a time... 4 Testing conditions... 4 Too simple methods... 4 Test coverage... 5 Where to create test... 5 Test writing pipeline... 5 Setup environment... 5 Choose meaningful test method names... 6 Explain the failure reason in assert calls... 6 One unit test equals method... 6 Testing exceptions... 7 Custom matchers... 7 Let the test improve the code... 8 Automatic running
3 Introduction This document briefly describes unit testing for Java. It is organized as follows: Firstly the basic notions are introduced. Then unit-testing tasks are discussed in order of their occurrence: what to test, when to stop testing, where to place tests, how to prepare environment, how to write tests themselves, and how to run them automatically. Preliminaries Unit test A unit test examines the behavior of a distinct unit of work. Within a Java application, the distinct unit of work is often (but not always) a single method. By contrast, integration tests and acceptance tests examine how various components interact. A unit of work is a task that is not directly dependent on the completion of any other task. Unit tests often focus on testing whether a method is following the terms of its API contract. API contract A view of an Application Programming Interface (API) as a formal agreement between the caller and the callee. Often the unit tests help define the API contract by demonstrating the expected behavior. All unit testing frameworks should follow: 1. Each unit test must run independently of all other unit tests. 2. The framework must detect and report errors test by test. 3. It must be easy to define which unit tests will run. We will use JUnit 4 1 as a testing framework. Most part of this guide is taken from the book: P. Tahchiev, F. Leme, V. Massol, G. Gregory. JUnit in Action, Second Edition. Manning Publications Co. Greenwich, CT, USA
4 Unit testing tasks This section describes main tasks of unit testing in order of their occurring. What should be tested You have to decide what are you going to test. Briefly, you should test all non-trivial methods of just one object at a time. As a sign of the end you can look at test coverage. Unit-test one object at a time A vital aspect of unit tests is that they are finely grained. A unit test independently examines each object you create, so that you can isolate problems as soon as they occur. If more than one object is put under test, you cannot predict how the objects will interact when changes occur to one or the other. When an object interacts with other complex objects, you can surround the object under test with predictable test objects. Another form of software test, integration testing, examines how working objects interact with each other. Testing conditions 2 Programs should always be tested under two conditions: with expected inputs and with unexpected inputs. This is because while it may work correctly when used correctly, the application will also need to account for errors in case they may occur. Expected inputs are when the client of your application uses it in the exact way it was supposed to. For example, the field requires the user to input a date that is either today s date or a date that occurs in the future. You may test that once you have followed what it is asking you, the program may well work how you intend it to. However, what if you decide to enter a date that is in the past or incorrect date, or just leave the date field empty? Another example is a program for solution of quadratic equations: it may works well for ordinary equations that have roots, but what if the equation is irresolvable - e.g. discriminator is negative number? Or the user may want to solve linear equation and just input zero as a first coefficient - if your program doesn't expect it, it crashes with division by zero. Therefore, it is very important that the application knows how to deal with these kinds of problems and gives the appropriate error message; otherwise you could have some very confused users of your program. Too simple methods If there is a minor utility method, then you might not test it directly. In that case, if the method fail, then tests of the methods that used it would fail. The method would be tested indirectly, but tested nonetheless. If a method is changed so it is not so simple anymore, then you should add a test when that change takes place, but not before. As the JUnit FAQ puts it, The general philosophy is this: if it can t break on its own, it s too simple to break. 2 Taken mostly from 4
5 Test coverage There are a lot of different metrics for code coverage by tests, see e.g. The most basic ones the following: 1. Class coverage 2. Method coverage 3. Line coverage 4. Branch coverage In most cases 100% coverage is not absolutely necessary, but low coverage (usually less than 75%, but it depends) does indicate that tests miss some important logic. There are also a lot of tools for Java code coverage measurement, see One of the easy, but rather powerful tool is Cobertura 3. It has a plugin for Eclipse and can be easily integrated with Ant, see Appendix. But sure you can use other tools for coverage measurement. Where to create test Put test classes in the same package as the class they test but in a parallel directory structure. You need tests in the same package to allow access to protected methods. You want tests in a separate directory to simplify file management and to clearly delineate test and domain classes. If you need to test a private method, because it is rather complex, then maybe you need to refactor your code and turn this private method into a public method of new class. If the private method is not very complex, you can test it indirectly. Test writing pipeline The general scheme is the following: 1. Instantiate the class to test. 2. Set up the test by placing the environment in a known state (create objects, acquire resources). The pre-test state is referred to as the test fixture. 3. Invoke the method under test. 4. Confirm the result, usually by calling one or more assert methods. Further we discuss some issues that may occur during this pipeline following. Setup environment annotated methods are executed right before/after the execution of each one of methods, and regardless of the fact whether the test failed or not. This helps you to 3 5
6 extract all of your common logic, like instantiating your domain objects and setting them up in some known state. You can have as many of these methods, as you want, but beware because in case you have more than one of the methods no one knows what is the order of their execution. JUnit also provides annotations to annotate your methods in that class. The methods that you annotate will get executed, only once before/after all of methods. Again, as with annotations you can have as many of these methods as you want, and again nothing is specified about the order of the execution. You need to remember that both the and annotated methods must be public by signature. The annotated methods must be public and also be static by signature. Each test method must be as clear and focused as possible. This is why JUnit provides you with so you can share fixtures between tests without combining test methods. However, in preliminaries we postulated that each test should run independently, i.e. in a clean environment. Sometimes there are other considerations to take into account. Performance is a typical one. Test suites may take a long time to execute are a handicap; you will be tempted not to execute them often, which negates the regression feature of unit testing. You must be aware of this tradeoff. Depending on the situation, you may choose to have longer-running tests that execute in a clean environment, or instead tune the tests for performance by reusing some parts of the environment. Choose meaningful test method names You can see that a method is a test-method by annotation. But you also must be able to understand what a method is testing by reading the name. Although JUnit does not imply any special rules for naming your test methods, a good rule is to start with the testxxxnaming scheme, where XXXis the name of the method to test. As you add other tests against the same method, move to the testxxxyyyscheme, where YYY describes how the tests differ. Don t be afraid that the names of your tests are getting long. It is sometimes not so obvious what a method is testing simply by looking at the assert methods in it so the only chance we have is naming your test-methods in a descriptive fashion and putting comments where necessary. Explain the failure reason in assert calls Whenever you use any of the JUnit assert* methods, make sure you use the signature that takes a String as the first parameter. This parameter lets you provide a meaningful textual description that is displayed in the JUnit test runner if the assert fails. Not using this parameter makes it difficult to understand the reason for a failure when it happens. One unit test equals method Do not try to cram several tests into one method. The result will be more complex test methods, which will become increasingly difficult to read and understand. Worse, the more logic you write in your test methods, the more risk there is that it will not work and will need debugging. Unit tests give you confidence in a program by alerting you when something that had worked now fails. If you put more than one unit test in a method, it makes it more difficult to zoom in on exactly 6
7 what went wrong. When tests share the same method, a failing test may leave the fixture in an unpredictable state. Other tests embedded in the method may not run, or may not run properly. Your picture of the test results will often be incomplete or even misleading. Because all the test methods in a TestClass share the same fixture, and JUnit can now generate an automatic test suite, it s really just as easy to place each unit test in its own method. If you need to use the same block of code in more than one test, extract it into a utility method that each test method can call. Better yet, if all methods can share the code, put it into the fixture. Testing exceptions In most cases you should do this by specifying the expected parameter of annotation, = IllegalArgumentException.class) public void getnamewithnullvalue() { MyObj obj = new MyObj(); myobj.setname(null); } Normally the expected parameter in annotation tells the developers very clearly that an exception of that type should be raised. But you can go even further. Besides naming your test-methods in an obvious fashion to understand that this method is testing an exceptional condition, you can also put some comments to highlight the line of the code which produces the expected exception. However, if your method could throw exceptions of the same type with different error codes or messages, you can use more sophisticated tool - annotation with class public ExpectedException thrown = public void getnamewithnullvalue() { thrown.expect(illegalargumentexception.class); thrown.expectmessage('name must not be null'); } MyObj obj = new MyObj(); obj.setname(null); Examples are taken from Nikos Maravitsas' post 4, where also more details could be found. Custom matchers Sometimes you need to compare objects in a non-trivial way, e.g. test string equality ignoring differences in runs of whitespace. Of course, you can write asserttrue() with special boolean function, but you can also use the Hamcrest 5 library, which contains a lot of pre-defined matchers and suggests a convenient way for implementing your own matchers. Such matchers may be required for exception
8 testing: if you want to compare error code, you should implement the corresponding matcher, see an example in Nikos Maravitsas' post mentioned above. Let the test improve the code Writing unit tests often helps you write better code. The reason is simple: A test case is a user of your code. And, it is only when using code that you find its shortcomings. Thus, do not hesitate to listen to your tests and refactor your code so that it is easier to use. For example, an easy way to identify exceptional paths is to examine the different branches in the code you re testing. When you start following these branches, sometimes you may find that testing each alternative is painful. If code is difficult to test, it is usually just as difficult to use. When testing indicates a poor design, you should stop and refactor the domain code. In the case of too many branches, the solution is usually to split a larger method into several smaller methods. Or, you may need to modify the class hierarchy to better represent the problem domain. 8
9 Automatic running To automate running of tests and reports you can use Apache Ant. Examples of Ant tasks are given below. <target name="compile.unittests" depends="compile.classes" description="compile the unit tests" > <!-- Compile the java code from ${test} into ${build} --> <javac compiler="modern" srcdir="${unit.test}" destdir="${build}" debug="on" encoding="utf-8"> <classpath refid="classpath" /> <compilerarg value="-xlint:unchecked" /> </javac> </target> <target name="instrument" depends="init, compile.classes"> <!--Remove the coverage data file and any old instrumentation.--> <delete file="cobertura.ser"/> <delete dir="${instrumented.dir}" /> <!-- Instrument the application classes, writing the instrumented classes into ${build.instrumented.dir}. --> <cobertura-instrument todir="${instrumented.dir}"> <!-- The following line causes instrument to ignore any source line containing a reference to log4j, for the purposes of coverage reporting. --> <ignore regex="org.apache.log4j.*" /> <fileset dir="${build}"> <!--Instrument all the application classes, but not the test classes.--> <include name="**/*.class" /> <exclude name="**/*test.class" /> </fileset> </cobertura-instrument> </target> <target name="unit.test" depends="compile.unittests, instrument" description="test by junit" > <junit fork="on" forkmode="once" printsummary="yes" haltonfailure="yes" showoutput="yes"> <!--<jvmarg value="[specify here is needed]"> --> <sysproperty key="net.sourceforge.cobertura.datafile" file="${basedir}/cobertura.ser" /> <classpath location="${instrumented.dir}" /> <classpath location="${build}" /> <classpath> <path refid="classpath"/> <path refid="cobertura.classpath" /> </classpath> <formatter type="plain" usefile="false"/> <batchtest todir="${test.report}"> <fileset dir="${unit.test}"> <include name="**/*test*.java"/> 9
10 </junit> </target> </fileset> </batchtest> <!-- Create report about the test coverage by cobertura --> <target name="coverage-report"> <cobertura-report format="html" destdir="${coveragereport.dir}"> <fileset dir="${src}"> <include name="**/*.java" /> </fileset> <fileset dir="${quality.test}"> <include name="**/*.java" /> </fileset> </cobertura-report> </target> 10
Unit Testing. and. JUnit
Unit Testing and JUnit Problem area Code components must be tested! Confirms that your code works Components must be tested t in isolation A functional test can tell you that a bug exists in the implementation
More informationTesting, Debugging, and Verification
Testing, Debugging, and Verification Testing, Part II Moa Johansson 10 November 2014 TDV: Testing /GU 141110 1 / 42 Admin Make sure you are registered for the course. Otherwise your marks cannot be recorded.
More informationUNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger
UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS 61B Fall 2014 P. N. Hilfinger Unit Testing with JUnit 1 The Basics JUnit is a testing framework
More informationUnit Testing JUnit and Clover
1 Unit Testing JUnit and Clover Software Component Technology Agenda for Today 2 1. Testing 2. Main Concepts 3. Unit Testing JUnit 4. Test Evaluation Clover 5. Reference Software Testing 3 Goal: find many
More informationApproach of Unit testing with the help of JUnit
Approach of Unit testing with the help of JUnit Satish Mishra mishra@informatik.hu-berlin.de About me! Satish Mishra! Master of Electronics Science from India! Worked as Software Engineer,Project Manager,Quality
More informationDesigning with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219
Designing with Exceptions CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Testing vs. Debugging Testing Coding Does the code work properly YES NO 2 Debugging Testing
More informationJiří Tomeš. Nástroje pro vývoj a monitorování SW (NSWI026)
Jiří Tomeš Nástroje pro vývoj a monitorování SW (NSWI026) Simple open source framework (one of xunit family) for creating and running unit tests in JAVA Basic information Assertion - for testing expected
More informationSoftware Construction
Software Construction Debugging and Exceptions Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You know the proper usage
More informationAim To help students prepare for the Academic Reading component of the IELTS exam.
IELTS Reading Test 1 Teacher s notes Written by Sam McCarter Aim To help students prepare for the Academic Reading component of the IELTS exam. Objectives To help students to: Practise doing an academic
More informationLicensed for viewing only. Printing is prohibited. For hard copies, please purchase from www.agileskills.org
Unit Test 301 CHAPTER 12Unit Test Unit test Suppose that you are writing a CourseCatalog class to record the information of some courses: class CourseCatalog { CourseCatalog() { void add(course course)
More informationManaging Variability in Software Architectures 1 Felix Bachmann*
Managing Variability in Software Architectures Felix Bachmann* Carnegie Bosch Institute Carnegie Mellon University Pittsburgh, Pa 523, USA fb@sei.cmu.edu Len Bass Software Engineering Institute Carnegie
More informationCS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
More informationthe first thing that comes to mind when you think about unit testing? If you re a Java developer, it s probably JUnit, since the
By Matt Love W hat s the first thing that comes to mind when you think about unit testing? If you re a Java developer, it s probably JUnit, since the tool is generally recognized as the de facto standard
More informationBuild Management. Context. Learning Objectives
Build Management Wolfgang Emmerich Professor of Distributed Computing University College London http://sse.cs.ucl.ac.uk Context Requirements Inception Elaboration Construction Transition Analysis Design
More informationImproved Software Testing Using McCabe IQ Coverage Analysis
White Paper Table of Contents Introduction...1 What is Coverage Analysis?...2 The McCabe IQ Approach to Coverage Analysis...3 The Importance of Coverage Analysis...4 Where Coverage Analysis Fits into your
More informationNational University of Ireland, Maynooth MAYNOOTH, CO. KILDARE, IRELAND. Testing Guidelines for Student Projects
National University of Ireland, Maynooth MAYNOOTH, CO. KILDARE, IRELAND. DEPARTMENT OF COMPUTER SCIENCE, TECHNICAL REPORT SERIES Testing Guidelines for Student Projects Stephen Brown and Rosemary Monahan
More informationTestability of Dependency injection
University Of Amsterdam Faculty of Science Master Thesis Software Engineering Testability of Dependency injection An attempt to find out how the testability of source code is affected when the dependency
More informationPartial Fractions. Combining fractions over a common denominator is a familiar operation from algebra:
Partial Fractions Combining fractions over a common denominator is a familiar operation from algebra: From the standpoint of integration, the left side of Equation 1 would be much easier to work with than
More informationJUnit Howto. Blaine Simpson
JUnit Howto Blaine Simpson JUnit Howto Blaine Simpson Published $Date: 2005/09/19 15:15:02 $ Table of Contents 1. Introduction... 1 Available formats for this document... 1 Purpose... 1 Support... 2 What
More informationClick on the links below to jump directly to the relevant section
Click on the links below to jump directly to the relevant section What is algebra? Operations with algebraic terms Mathematical properties of real numbers Order of operations What is Algebra? Algebra is
More informationCSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira
CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira Ingolf Krueger Department of Computer Science & Engineering University
More informationGoing Interactive: Combining Ad-Hoc and Regression Testing
Going Interactive: Combining Ad-Hoc and Regression Testing Michael Kölling 1, Andrew Patterson 2 1 Mærsk Mc-Kinney Møller Institute, University of Southern Denmark, Denmark mik@mip.sdu.dk 2 Deakin University,
More informationA Practical Guide to Test Case Types in Java
Software Tests with Faktor-IPS Gunnar Tacke, Jan Ortmann (Dokumentversion 203) Overview In each software development project, software testing entails considerable expenses. Running regression tests manually
More informationA positive exponent means repeated multiplication. A negative exponent means the opposite of repeated multiplication, which is repeated
Eponents Dealing with positive and negative eponents and simplifying epressions dealing with them is simply a matter of remembering what the definition of an eponent is. division. A positive eponent means
More informationJemmy tutorial. Introduction to Jemmy testing framework. Pawel Prokop. March 14, 2012. pawel.prokop@adfinem.net
tutorial Introduction to testing framework pawel.prokop@adfinem.net http://prokop.uek.krakow.pl March 14, 2012 Recording tests Testing frameworks Summary Manualy testing error prone slow and not efficient
More informationOutline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References
Outline Computer Science 331 Introduction to Testing of Programs Mike Jacobson Department of Computer Science University of Calgary Lecture #3-4 1 Denitions 2 3 4 Implementation and Evaluation 5 Debugging
More informationJUnit. Introduction to Unit Testing in Java
JUnit Introduction to Unit Testing in Java Testing, 1 2 3 4, Testing What Does a Unit Test Test? The term unit predates the O-O era. Unit natural abstraction unit of an O-O system: class or its instantiated
More informationMethod To Solve Linear, Polynomial, or Absolute Value Inequalities:
Solving Inequalities An inequality is the result of replacing the = sign in an equation with ,, or. For example, 3x 2 < 7 is a linear inequality. We call it linear because if the < were replaced with
More informationCase studies: Outline. Requirement Engineering. Case Study: Automated Banking System. UML and Case Studies ITNP090 - Object Oriented Software Design
I. Automated Banking System Case studies: Outline Requirements Engineering: OO and incremental software development 1. case study: withdraw money a. use cases b. identifying class/object (class diagram)
More informationAPPENDIX A: MOCKITO UNIT TESTING TUTORIAL
APPENDIX A: MOCKITO UNIT TESTING TUTORIAL This appendix is a tutorial over how to implement Mockito Unit testing/mocking framework. It also contains a code example of a simple test created exclusively
More informationUnit Testing & JUnit
Unit Testing & JUnit Lecture Outline Communicating your Classes Introduction to JUnit4 Selecting test cases UML Class Diagrams Rectangle height : int width : int resize(double,double) getarea(): int getperimeter():int
More informationTeam Name : PRX Team Members : Liang Yu, Parvathy Unnikrishnan Nair, Reto Kleeb, Xinyi Wang
Test Design Document Authors Team Name : PRX Team Members : Liang Yu, Parvathy Unnikrishnan Nair, Reto Kleeb, Xinyi Wang Purpose of this Document This document explains the general idea of the continuous
More informationUsing JUnit in SAP NetWeaver Developer Studio
Using JUnit in SAP NetWeaver Developer Studio Applies to: This article applies to SAP NetWeaver Developer Studio and JUnit. Summary Test-driven development helps us meet your deadlines by eliminating debugging
More information1.3 Algebraic Expressions
1.3 Algebraic Expressions A polynomial is an expression of the form: a n x n + a n 1 x n 1 +... + a 2 x 2 + a 1 x + a 0 The numbers a 1, a 2,..., a n are called coefficients. Each of the separate parts,
More information5.1 Radical Notation and Rational Exponents
Section 5.1 Radical Notation and Rational Exponents 1 5.1 Radical Notation and Rational Exponents We now review how exponents can be used to describe not only powers (such as 5 2 and 2 3 ), but also roots
More informationJava Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
More informationWriting Self-testing Java Classes with SelfTest
Writing Self-testing Java Classes with SelfTest Yoonsik Cheon TR #14-31 April 2014 Keywords: annotation; annotation processor; test case; unit test; Java; JUnit; SelfTest. 1998 CR Categories: D.2.3 [Software
More informationAuthor: Sascha Wolski Sebastian Hennebrueder http://www.laliluna.de/tutorials.html Tutorials for Struts, EJB, xdoclet and eclipse.
JUnit Testing JUnit is a simple Java testing framework to write tests for you Java application. This tutorial gives you an overview of the features of JUnit and shows a little example how you can write
More informationCOMP 110 Prasun Dewan 1
COMP 110 Prasun Dewan 1 12. Conditionals Real-life algorithms seldom do the same thing each time they are executed. For instance, our plan for studying this chapter may be to read it in the park, if it
More informationAppendix A Using the Java Compiler
Appendix A Using the Java Compiler 1. Download the Java Development Kit from Sun: a. Go to http://java.sun.com/j2se/1.4.2/download.html b. Download J2SE v1.4.2 (click the SDK column) 2. Install Java. Simply
More informationAccess Tutorial 2: Tables
Access Tutorial 2: Tables 2.1 Introduction: The importance of good table design Tables are where data in a database is stored; consequently, tables form the core of any database application. In addition
More informationIntroduction to Java and Eclipse
Algorithms and Data-Structures Exercise Week 0 Outline 1 Introduction Motivation The Example 2 Setting things up Setting command line parameters in Eclipse 3 Debugging Understanding stack traces Breakpoints
More informationPre-Algebra Lecture 6
Pre-Algebra Lecture 6 Today we will discuss Decimals and Percentages. Outline: 1. Decimals 2. Ordering Decimals 3. Rounding Decimals 4. Adding and subtracting Decimals 5. Multiplying and Dividing Decimals
More informationPA2: Word Cloud (100 Points)
PA2: Word Cloud (100 Points) Due: 11:59pm, Thursday, April 16th Overview You will create a program to read in a text file and output the most frequent and unique words by using an ArrayList. Setup In all
More information(Refer Slide Time: 2:03)
Control Engineering Prof. Madan Gopal Department of Electrical Engineering Indian Institute of Technology, Delhi Lecture - 11 Models of Industrial Control Devices and Systems (Contd.) Last time we were
More informationIntegrated Error-Detection Techniques: Find More Bugs in Java Applications
Integrated Error-Detection Techniques: Find More Bugs in Java Applications Software verification techniques such as pattern-based static code analysis, runtime error detection, unit testing, and flow analysis
More informationRow Echelon Form and Reduced Row Echelon Form
These notes closely follow the presentation of the material given in David C Lay s textbook Linear Algebra and its Applications (3rd edition) These notes are intended primarily for in-class presentation
More informationUnit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects
TORRY HARRIS BUSINESS SOLUTIONS Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects Ganapathi Nanjappa 4/28/2010 2010 Torry Harris Business Solutions. All rights reserved Page
More informationIntroduction to C Unit Testing (CUnit) Brian Nielsen Arne Skou
Introduction to C Unit Testing (CUnit) Brian Nielsen Arne Skou {bnielsen ask}@cs.auc.dk Unit Testing Code that isn t tested doesn t work Code that isn t regression tested suffers from code rot (breaks
More informationUnit-testing with JML
Métodos Formais em Engenharia de Software Unit-testing with JML José Carlos Bacelar Almeida Departamento de Informática Universidade do Minho MI/MEI 2008/2009 1 Talk Outline Unit Testing - software testing
More information6.3 Conditional Probability and Independence
222 CHAPTER 6. PROBABILITY 6.3 Conditional Probability and Independence Conditional Probability Two cubical dice each have a triangle painted on one side, a circle painted on two sides and a square painted
More informationChapter 6 Experiment Process
Chapter 6 Process ation is not simple; we have to prepare, conduct and analyze experiments properly. One of the main advantages of an experiment is the control of, for example, subjects, objects and instrumentation.
More informationStatic Analysis Best Practices
Static Analysis Best Practices This is the first in a series of interviews in which Adam Kolawa Parasoft CEO and Automated Defect Prevention: Best Practices in Software Management (Wiley-IEEE, 2007) co-author
More informationEfficient Data Structures for Decision Diagrams
Artificial Intelligence Laboratory Efficient Data Structures for Decision Diagrams Master Thesis Nacereddine Ouaret Professor: Supervisors: Boi Faltings Thomas Léauté Radoslaw Szymanek Contents Introduction...
More informationUnit Testing with junit. based on materials by M. Stepp, M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia
Unit Testing with junit based on materials by M. Stepp, M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia Bugs and testing software reliability: Probability that a software system will not cause failure
More informationRUnit - A Unit Test Framework for R
RUnit - A Unit Test Framework for R Thomas König, Klaus Jünemann, and Matthias Burger Epigenomics AG November 5, 2015 Contents 1 Introduction 2 2 The RUnit package 4 2.1 Test case execution........................
More informationUsing Feedback Tags and Sentiment Analysis to Generate Sharable Learning Resources
Using Feedback Tags and Sentiment Analysis to Generate Sharable Learning Resources Investigating Automated Sentiment Analysis of Feedback Tags in a Programming Course Stephen Cummins, Liz Burd, Andrew
More informationThe «include» and «extend» Relationships in Use Case Models
The «include» and «extend» Relationships in Use Case Models Introduction UML defines three stereotypes of association between Use Cases, «include», «extend» and generalisation. For the most part, the popular
More informationEquations, Lenses and Fractions
46 Equations, Lenses and Fractions The study of lenses offers a good real world example of a relation with fractions we just can t avoid! Different uses of a simple lens that you may be familiar with are
More informationInventory Costing Repair and Restoration
White Paper Dynamics NAV / Navision Inventory Costing Repair and Restoration Now you can use NAV for Inventory Costing as it was meant to be used Download this White Paper on the web at http://www.dynamicswest.com/navisioncostrepair.html
More informationAdvanced Software Testing
Johan Seland Advanced Software Testing Geilo Winter School 2013 1 Solution Example for the Bowling Game Kata Solution is in the final branch on Github git clone git://github.com/johanseland/bowlinggamekatapy.git
More informationWriting Thesis Defense Papers
Writing Thesis Defense Papers The point of these papers is for you to explain and defend a thesis of your own critically analyzing the reasoning offered in support of a claim made by one of the philosophers
More informationSupplement I.C. Creating, Compiling and Running Java Programs from the Command Window
Supplement I.C Creating, Compiling and Running Java Programs from the Command Window For Introduction to Java Programming By Y. Daniel Liang This supplement covers the following topics: Opening a Command
More information3 Improving the Crab more sophisticated programming
3 Improving the Crab more sophisticated programming topics: concepts: random behavior, keyboard control, sound dot notation, random numbers, defining methods, comments In the previous chapter, we looked
More informationThe goal with this tutorial is to show how to implement and use the Selenium testing framework.
APPENDIX B: SELENIUM FRAMEWORK TUTORIAL This appendix is a tutorial about implementing the Selenium framework for black-box testing at user level. It also contains code examples on how to use Selenium.
More informationTen steps to better requirements management.
White paper June 2009 Ten steps to better requirements management. Dominic Tavassoli, IBM Actionable enterprise architecture management Page 2 Contents 2 Introduction 2 Defining a good requirement 3 Ten
More informationEffective unit testing with JUnit
Effective unit testing with JUnit written by Eric M. Burke burke_e@ociweb.com Copyright 2000, Eric M. Burke and All rights reserved last revised 12 Oct 2000 extreme Testing 1 What is extreme Programming
More informationThis section provides a 'Quickstart' guide to using TestDriven.NET any version of Microsoft Visual Studio.NET
Quickstart TestDriven.NET - Quickstart TestDriven.NET Quickstart Introduction Installing Running Tests Ad-hoc Tests Test Output Test With... Test Projects Aborting Stopping Introduction This section provides
More informationFriendship and Encapsulation in C++
Friendship and Encapsulation in C++ Adrian P Robson Department of Computing University of Northumbria at Newcastle 23rd October 1995 Abstract There is much confusion and debate about friendship and encapsulation
More informationFile by OCR Manual. Updated December 9, 2008
File by OCR Manual Updated December 9, 2008 edocfile, Inc. 2709 Willow Oaks Drive Valrico, FL 33594 Phone 813-413-5599 Email sales@edocfile.com www.edocfile.com File by OCR Please note: This program is
More informationWRITING PROOFS. Christopher Heil Georgia Institute of Technology
WRITING PROOFS Christopher Heil Georgia Institute of Technology A theorem is just a statement of fact A proof of the theorem is a logical explanation of why the theorem is true Many theorems have this
More informationGuidelines for the Development of a Communication Strategy
Guidelines for the Development of a Communication Strategy Matthew Cook Caitlin Lally Matthew McCarthy Kristine Mischler About the Guidelines This guide has been created by the students from Worcester
More informationStack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
More informationEvaluation of AgitarOne
Carnegie Mellon University, School of Computer Science Master of Software Engineering Evaluation of AgitarOne Analysis of Software Artifacts Final Project Report April 24, 2007 Edited for public release
More information+ Introduction to JUnit. IT323 Software Engineering II By: Mashael Al-Duwais
1 + Introduction to JUnit IT323 Software Engineering II By: Mashael Al-Duwais + What is Unit Testing? 2 A procedure to validate individual units of Source Code Example: A procedure, method or class Validating
More informationTTCN-3, Qtronic and SIP
TTCN-3, Qtronic and SIP 1 (8) TTCN-3, Qtronic and SIP The Model-Based Testing of a Protocol Stack a TTCN-3 Integrated Approach Technical Whitepaper EXECUTIVE SUMMARY TTCN-3 (Test and Test Control Notation
More informationServer Setup and Configuration
Server Setup and Configuration 1 Agenda Configuring the server Configuring your development environment Testing the setup Basic server HTML/JSP Servlets 2 1 Server Setup and Configuration 1. Download and
More informationBIRT Application and BIRT Report Deployment Functional Specification
Functional Specification Version 1: October 6, 2005 Abstract This document describes how the user will deploy a BIRT Application and BIRT reports to the Application Server. Document Revisions Version Date
More informationPolynomial and Rational Functions
Polynomial and Rational Functions Quadratic Functions Overview of Objectives, students should be able to: 1. Recognize the characteristics of parabolas. 2. Find the intercepts a. x intercepts by solving
More informationIndependent samples t-test. Dr. Tom Pierce Radford University
Independent samples t-test Dr. Tom Pierce Radford University The logic behind drawing causal conclusions from experiments The sampling distribution of the difference between means The standard error of
More informationSTEP 5: Giving Feedback
STEP 5: Giving Feedback Introduction You are now aware of the responsibilities of workplace mentoring, the six step approach to teaching skills, the importance of identifying the point of the lesson, and
More informationWait-Time Analysis Method: New Best Practice for Performance Management
WHITE PAPER Wait-Time Analysis Method: New Best Practice for Performance Management September 2006 Confio Software www.confio.com +1-303-938-8282 SUMMARY: Wait-Time analysis allows IT to ALWAYS find the
More informationWorking with whole numbers
1 CHAPTER 1 Working with whole numbers In this chapter you will revise earlier work on: addition and subtraction without a calculator multiplication and division without a calculator using positive and
More informationUnit Testing with zunit
IBM Software Group Rational Developer for System z Unit Testing with zunit Jon Sayles / IBM - jsayles@us.ibm.com IBM Corporation IBM Trademarks and Copyrights Copyright IBM Corporation 2013, 2014. All
More informationTest Driven Development
Test Driven Development Introduction Test Driven development (TDD) is a fairly recent (post 2000) design approach that originated from the Extreme Programming / Agile Methodologies design communities.
More informationVieta s Formulas and the Identity Theorem
Vieta s Formulas and the Identity Theorem This worksheet will work through the material from our class on 3/21/2013 with some examples that should help you with the homework The topic of our discussion
More informationFail early, fail often, succeed sooner!
Fail early, fail often, succeed sooner! Contents Beyond testing Testing levels Testing techniques TDD = fail early Automate testing = fail often Tools for testing Acceptance tests Quality Erja Nikunen
More informationSoftware Quality Exercise 2
Software Quality Exercise 2 Testing and Debugging 1 Information 1.1 Dates Release: 12.03.2012 12.15pm Deadline: 19.03.2012 12.15pm Discussion: 26.03.2012 1.2 Formalities Please submit your solution as
More informationEclipse Help
Software configuration management We ll start with the nitty gritty and then get more abstract. Configuration and build Perdita Stevens School of Informatics University of Edinburgh 1. Version control
More informationExperimental Comparison of Concolic and Random Testing for Java Card Applets
Experimental Comparison of Concolic and Random Testing for Java Card Applets Kari Kähkönen, Roland Kindermann, Keijo Heljanko, and Ilkka Niemelä Aalto University, Department of Information and Computer
More informationObject-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,
More informationNetwork Security EDA491 2011/2012. Laboratory assignment 4. Revision A/576, 2012-05-04 06:13:02Z
Network Security EDA491 2011/2012 Laboratory assignment 4 Revision A/576, 2012-05-04 06:13:02Z Lab 4 - Network Intrusion Detection using Snort 1 Purpose In this assignment you will be introduced to network
More informationT his feature is add-on service available to Enterprise accounts.
SAML Single Sign-On T his feature is add-on service available to Enterprise accounts. Are you already using an Identity Provider (IdP) to manage logins and access to the various systems your users need
More informationAnnouncement. SOFT1902 Software Development Tools. Today s Lecture. Version Control. Multiple iterations. What is Version Control
SOFT1902 Software Development Tools Announcement SOFT1902 Quiz 1 in lecture NEXT WEEK School of Information Technologies 1 2 Today s Lecture Yes: we have evolved to the point of using tools Version Control
More informationAnswer Key for California State Standards: Algebra I
Algebra I: Symbolic reasoning and calculations with symbols are central in algebra. Through the study of algebra, a student develops an understanding of the symbolic language of mathematics and the sciences.
More informationPlugin JUnit. Contents. Mikaël Marche. November 18, 2005
Plugin JUnit Mikaël Marche November 18, 2005 JUnit is a Java API enabling to describe unit tests for a Java application. The JUnit plugin inside Salomé-TMF enables one to execute automatically JUnit tests
More informationSudoku puzzles and how to solve them
Sudoku puzzles and how to solve them Andries E. Brouwer 2006-05-31 1 Sudoku Figure 1: Two puzzles the second one is difficult A Sudoku puzzle (of classical type ) consists of a 9-by-9 matrix partitioned
More informationSolving Quadratic Equations
9.3 Solving Quadratic Equations by Using the Quadratic Formula 9.3 OBJECTIVES 1. Solve a quadratic equation by using the quadratic formula 2. Determine the nature of the solutions of a quadratic equation
More information