SUnit Explained. 1. Testing and Tests. Stéphane Ducasse
|
|
|
- Junior West
- 9 years ago
- Views:
Transcription
1 1. SUnit Explained Stéphane Ducasse Note for the reader: This article is a first draft version of the paper I would like to have. I would like to have a better motivation for testing, relations with XP and the latest version of SUnit 3.1. I wrote it because I could not afford to wait to have one document describing SUnit and the resources. This version has been sent to Squeak news. Originally Sam Shuster mentioned that he wanted to write an article on SUnit and I know that Joseph Pelrine as a paper under way. So if one of you is interested I would really like to have you as co-author. SUnit is a minimal yet powerful framework that supports the creation of tests. SUnit was developed originally by Kent Beck and get extended by Joseph Pelrine and others over several iterations to take into account the notion of resources that we will illustrate hereafter. The interest for SUnit is not limited to Smalltalk or Squeak. Indeed legions of developers understood the power of unit testing and now versions of SUnit exist in nearly any language going from Java, Python, Perl, Oracle and lot others [SUnit]. The current version of SUnit is 3.0 and a new version 3.1 is on preparation. Testing and building regression test suites is not new and everybody knows that regression tests are a good way to catch errors. Extreme Programming by putting testing in the core of its methodology is bringing a new light on testing which is a not so liked discipline. The Smalltalk community has a long tradition of test due to the incremental development supported by its programming environment. However, once you write tests in a workspace or as example methods there is no easy way to keep track of them and to automatically run them and tests that you cannot automatically run are of little interests. Moreover, having examples often does not tell to the reader what are the expect results, lot of the logic is left unspecified. That s why SUnit is interesting because it allows you to structure, describe the context of tests and to run them automatically. In less than two minutes you can write tests using SUnit instead of writing small code snippets and get all the advantage of stored and automatically executable tests. In this article we start by discussing the interest of testing, then we present an exemple with SUnit and we go deep into the SUnit implementation. 1. Testing and Tests Most of the developers believe that tests are a lost of time. Who has not heard: I would write tests if I would have more time. If you write code that should never be changed indeed you should not write tests, but this also means that you application is not really used or useful. In fact tests are an investment for the future. In particular, having a suite of tests is extremely useful and allow one to gain a lot of time when your application changes. Tests play several roles: first they are an active and always synchronized documentation of the functionality they cover. Second they represent the confidence that developers can have into a piece of functionality. They help you to find extremely fast the parts that break to due introduced changes. It is obvious but simply true. Finally, writing tests in the same time or even be-
2 2. SUnit Explained fore writing code force you to think about the functionality you want to design. By writing tests first you have to clearly state the context in which your functionality will run, the way it will interact and more important the expected results. Moreover, when you are writing tests you are your first client and your code will naturally improves. The culture of tests has always been present in the Smalltalk community because a method is compiled and we write a small expression to test it. This practice supports the extremely tight incremental development cycle promoted by Smalltalk. However, doing so does not bring the maximum benefit from testing. Because tests are not stored, reachable and run automatically. Moreover it often happens that the context of the tests is left unspecified so the reader has to interpret the obtained results and assess they are right or wrong. It is clear that we cannot tests all the aspects of an application. Covering a complete application is simply impossible and should not be goal of testing. It may also happen that even with a good test suite some bugs can creep into the application and be left hidden waiting for an opportunity to damage your system. This is not a problem as soon as if you trap a bug you write a test that covers it. Writing good tests is a technique that can be easily learnt by practising. Let us look at the properties that tests should have to get a maximum benefit Repeatable. We should be able to repeat a test as much as we want. Without human intervention. Tests should be repeated without any human intervention. You should be able to run them during the night. Telling a story. A test should cover one aspect of a piece of code. A test should act as a scenario that you would like to read to understand a functionality. Having a change frequency lower than the one of the covered functionality. Indeed you do not want to change all your tests every times you modify your application. One way to achieve this property is to write tests based on the interfaces of the tested functionality. Besides the property of the test itself another important point while writing test suites is that the number of tests should be somehow proportional to the number of tested functionality. For example, changing one aspect of the system should not break all the tests you wrote but only a limited number. This is important because having 100 tests broken should be a much more important message for you than having 10 tests failing. extreme Programming proposes to write tests even before writing code. This may seems against our deep developer habits. Here are the observations we made while practising up front tests writing. Up front testing help to know what you want to code, they help to know when you are done, they help to conceptualize the functionality of a class and to design the interface. Now it is time to write a first test and to convince you that this is a pity not using SUnit. 2. SUnit by Example Before going into the detail of SUnit, we show an example step by step. We use the example testing the class Set that is included in the SUnit distribution, so that you can read the code directly in your favorite Smalltalk. Step 1. First you should subclass the TestCase class as follow: TestCase subclass: #ExampleSetTest
3 3. instancevariablenames: 'full empty' classvariablenames: '' pooldictionaries: '' category: 'SUnit-Tests' The class ExampleSetTest groups all tests related to the class test. It defines the context of all the tests that we will specify. Here the context is described by specifying two instance variables full and empty that represent a full and empty set. Step 2. We define the method setup as follow. The method setup acts as a context definer method or initiliaze method. It is invoked before the execution of any test method defined in this class. Here we initialize the empty variable to refer to an empty set and the full variable to refer to a set containing two elements. ExampleSetTest>>setUp empty := Set new. full := Set with: 5 with: #abc This method defines the context of any tests defined in the class in testing jargon it is called the fixture of the test. Step 3. We define some tests by defining some methods on the class ExampleSetTest. Basically one method represents one test. If your test methods start with the string test the framework will collect them automatically for you into test suites ready to be executed. The first test named testincludes, tests the includes method of a Set. We say that sending the message includes: 5 to a set containing 5 should return true.here we see clearly that the test relies on the fact that the setup method has been run before. ExampleSetTest>>testIncludes self assert: (full includes: 5). self assert: (full includes: #abc) The second test named testoccurrences verifies that the occurrences of 5 in the full set is equal to one even if we add another element 5 to the set. ExampleSetTest>>testOccurrences self assert: (empty occurrencesof: 0) = 0. self assert: (full occurrencesof: 5) = 1. full add: 5. self assert: (full occurrencesof: 5) = 1 Finally we test that if we remove the element 5 from a set the set does not contain it any more. ExampleSetTest>>testRemove full remove: 5. self assert: (full includes: #abc). self deny: (full includes: 5) Step 4. Now we can execute the tests. This is possible using the user interface of SUnit. This interface depends on the dialect you use. In Squeak and VisualWorks, you should execute TestRunner open. You should obtain the figure 1. You can also run you tests by executing the fol-
4 4. SUnit Explained lowing code: (ExampleSetTest selector: #testremove) run. This expression is equivalent to the shorter one ExampleSetTest run: #testremove. We usually always include such kind of expression in the comment of our tests to be able to run them while browsing them as shown below. ExampleSetTest>>testRemove self run: #testremove full remove: 5. self assert: (full includes: #abc). self deny: (full includes: 5) To debug a test use the following expressions: (ExampleSetTest #testremove) debug or ExampleSetTest debug: #testremove. selector: Figure 1 The user interface of SUnit. Here a test run and all the tests passed. Some Explanations. The method assert: which is defined on the class TestCase requires a boolean as argument. This boolean represents the value of a tested expression. When the argument is true, the expression is considered to be correct, we say that the test is valid. When the argument is false, then the test failed. In fact SUnit consider two kinds of errors: the failures, i.e., when a test is not valid and the errors which are unexpected situations occurring while the test is running. An error is by its nature something that has not been tested but that happened like an out of bounds error. The method deny: is the negation of assert:. Hence atest deny: anexpression is equal to atest assert: anexpression not. SUnit offers two methods should:raise: and shouldnt:raise: (atest should: ablock raise: anexception) to test that exceptions have been raised during the execution of an expression. The following test illustrates the use of this method. ExampleSetTest>>testIllegal self should: [empty at: 5] raise: Error. self should: [empty at: 5 put: #abc] raise: Error
5 5. Note that if you look in the example provided by SUnit you will found the following definition for the same test. Here the exception is provided via the TestResult class. This is because SUnit is running on all the Smalltalk dialects and the SUnit developers have factored out the variant part such as the name of the exception. So if you write tests that are intended to be cross dialects look at the class TestResult. ExampleSetTest>>testIllegal self should: [empty at: 5] raise: TestResult error. self should: [empty at: 5 put: #abc] raise: TestResult error 3. The SUnit Framework Squeak 3.1 includes the version 3.0 of SUnit. This version introduces the notion of resources that are mandatory when one need to build tests that require long set up phases. A test resource specifies a set up that is only executed once for a set of tests contrary to the TestCase method which is executed before every test execution. Figure 2 The four classes representing the core of SUnit. SUnit is constituted by four main classes, namely TestCase, TestSuite, TestResult et TestResource as shown in the figure 2. The class TestCase represents a test or more generally a family of tests that share a common context. The context is specified by the declaration of instance variables on a subclass of Test- Case and by the specialization of the method setup which initializes the context in which the will be executed. The class TestCase defines also the method teardown that is responsible for releasing if necessary the object allocated during the execution of the method setup. The method teardown is invoked after the execution of every tests. The class TestSuite represents a collection of tests. An instance of TestSuite is composed by instance of TestCase subclasses (a instance of TestCase is characterized by the selector that should run) and TestSuite. The classes TestSuite and TestCase form a composite pattern in which TestSuite is the composite and TestCase the leaves.
6 6. SUnit Explained The class TestResult represents the results of a TestSuite execution. This means the number of test passed, failed and the number of errors. The class TestResource represents a resource that is used by a test or a set of tests. The point is that a resource is associated with subclass of TestCase and it is run automatically once before all the tests are executed contrary to the TestCase methods setup and teardown that are executed before and after any test. A resource is run before a test suite is run. A resource is defined by specializing the class method resources as shown by the following example. By default, an instance of TestSuite consider that all its resources are the list of resources of the TestCase that compose it. We define a subclass of TestResource called MyTestResource and we associate it with MyTestCase by specializing the class method resources to return an array of the test classes to which it is associated. TestResource subclass: #MyTestResource instancevariablenames: '' TestResource>>setUp here the resource is set up MyTestCase class>>resources associate a resource with a testcase ^ Array with: MyTestResource As with a TestCase, we use the method setup to define the actions that will be run during the set up of the resource. 4. Key Implementation Aspects We show now some key aspects of the implementation by following the execution of a test. This is not mandatory to use SUnit but can help you to customize it. Running one Test. To execute one test, we evaluate the expression (TestCase selector: asymbol) run. The method TestCase>>run defined on the class TestCase creates an instance of TestResult that will contains the result of the executed tests, then it invokes the method TestCase>>run: TestCase>>run result result := TestResult new. self run: result. ^result The method TestCase>>run: invokes the method TestResult>>runCase:. TestCase>>run: aresult aresult runcase: self
7 7. The method TestResult>>runCase: is the method that will invoke the method Test- Case>>runCase that executes a test. Without going into the details, TestCase>>runCase pays attention to the possible exception that may be raised during the execution of the test, invokes the execution of a testcase by calling the method runcase and counts the errors, failures and passed tests. TestResult>>runCase: atestcase testcasepassed testcasepassed := true. [[atestcase runcase] suniton: self class failure do: [:signal self failures add: atestcase. testcasepassed := false. signal sunitexitwith: false]] suniton: self class error do: [:signal self errors add: atestcase. testcasepassed := false. signal sunitexitwith: false]. testcasepassed iftrue: [self passed add: atestcase] The method TestCase>>runCase realizes the calls to the methods setup et teardown as shown below: TestCase>>runCase self setup. [self performtest] sunitensure: [self teardown] Running a TestSuite. To execute more than a test, we invoke the method Test- Suite>>run on a TestSuite. The class TestCase provides some functionalities to get a test suite from its methods. The expression MyTestCase buildsuitefromselectors returns a suite suite containing all the tests defined in the class MyTestCase. The method TestSuite>>run creates an instance of TestResult, verifies that all the resource are available, then the method TestSuite>>run: is invoked which run all the tests that compose the test suite. All the resources are then reset. TestSuite>>run result result := TestResult new. self areallresourcesavailable iffalse: [^TestResult signalerrorwith: 'Resource could not be initialized']. [self run: result] sunitensure: [self resources do: [:each each reset]]. ^result TestSuite>>run: aresult self tests do: [:each self sunitchanged: each. each run: aresult] TestSuite>>areAllResourcesAvailable ^self resources
8 8. SUnit Explained inject: true into: [:total :each each isavailable & total] The class TestResource and its subclasses keep track of the their currently created instances (one per class) that can be accessed and created using the class method current. This instance is cleared when the tests have finished to run and the resources are reset. This is during the resource availability check that the resource is created if needed as shows the class method TestResource class>>isavailable. During the TestResource instance creation, it is initialized and the method setup is invoked. (Note it may happen that your version of SUnit 3.0 does not correctly initialize the resource. A version with this bug circulated a lot. Verify that TestResource class>>new calls the method initialize). TestResource class>>isavailable ^self current notnil TestResource class>>current current isnil iftrue: [current := self new]. ^current TestResource>>initialize self setup 5. Conclusion We presented why writing tests are an important way of investing on the future. We recalled that tests should be repeatable, independent of any direct human interaction and cover a precise functionality to maximize their potential. We presented in a step by step fashion how to define a couple of tests for the class Set using SUnit. Then we gave an overview of the core of the framework by presenting the classes TestCase, TestResult, TestSuite and TestResources. Finally we dived into SUnit by following the execution of a tests and test suite. We hope that we convince you about the importance of repeatable unit tests and about the ease of writing them using SUnit. 6. Bibliography [Beck] Kent Beck, Extreme Programming Explained: Embrace Change, Addison-Wesley, [FBBOR] Martin Fowler, Kent Beck, John Brant, William Opdyke and Don Roberts, Refactoring: Improving the Design of Existing Code, Addison-Wesley, [RBJ1] D. Roberts, J. Brant and R. Johnson, Why every Smalltalker should use the Refactoring Browser, Smalltalk Report, SIGS Press, homepage.html#refactoring [RBJ2]D. Roberts, J. Brant and R. Johnson, A Refactoring Tool for Smalltalk, TAPOS, vol. 3, no. 4, 1997, pp , [SUnit]
Effective unit testing with JUnit
Effective unit testing with JUnit written by Eric M. Burke [email protected] Copyright 2000, Eric M. Burke and All rights reserved last revised 12 Oct 2000 extreme Testing 1 What is extreme Programming
Merlin A Continuous Integration Tool for VisualWorks
Merlin A Continuous Integration Tool for VisualWorks Michael Meyer November 23, 2005 1 Contents Contents 1. Continuous Integration 3 1.1. Definition.................................... 3 1.2. The benefit...................................
Approach of Unit testing with the help of JUnit
Approach of Unit testing with the help of JUnit Satish Mishra [email protected] About me! Satish Mishra! Master of Electronics Science from India! Worked as Software Engineer,Project Manager,Quality
Licensed 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)
The Smalltalk Programming Language. Beatrice Åkerblom [email protected]
The Smalltalk Programming Language Beatrice Åkerblom [email protected] 'The best way to predict the future is to invent it' - Alan Kay. History of Smalltalk Influenced by Lisp and Simula Object-oriented
Table of Contents. LESSON: The JUnit Test Tool...1. Subjects...2. Testing 123...3. What JUnit Provides...4. JUnit Concepts...5
Table of Contents LESSON: The JUnit Test Tool...1 Subjects...2 Testing 123...3 What JUnit Provides...4 JUnit Concepts...5 Example Testing a Queue Class...6 Example TestCase Class for Queue...7 Example
Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda
Xtreme RUP by Ne t BJECTIVES Lightening Up the Rational Unified Process 2/9/2001 Copyright 2001 Net Objectives 1 RUP Overview Agenda Typical RUP Challenges Xtreme Programming Paradigm Document driven or
Unit testing with JUnit and CPPUnit. Krzysztof Pietroszek [email protected]
Unit testing with JUnit and CPPUnit Krzysztof Pietroszek [email protected] Old-fashioned low-level testing Stepping through a debugger drawbacks: 1. not automatic 2. time-consuming Littering code
An Introduction to Extreme Programming
An Introduction to Extreme Programming Ken Auer [email protected] http://www.rolemodelsoft.com RoleModel Software, Inc. 5004 Rossmore Dr. Fuquay-Varina, NC 27526 919-557-6352 Page 1 The Joy of Software
Test Driven Development Part III: Continuous Integration Venkat Subramaniam [email protected] http://www.agiledeveloper.com/download.
Test Driven Development Part III: Continuous Integration Venkat Subramaniam [email protected] http://www.agiledeveloper.com/download.aspx Abstract In this final part of the three part series on
Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries
Deep Agile Blending Scrum and Extreme Programming Jeff Sutherland Ron Jeffries Separation of XP and Scrum Methods * Largely Historical * XP chose to write more down * XP programmer focus * Successful Scrum
Embracing Change with Squeak: Extreme Programming (XP)
Embracing Change with Squeak: Extreme Programming (XP) J. Sarkela, P. McDonough, D. Caster The Fourth Estate, Incorporated Introduction In the sports world, we often hear the adjective extreme applied
Chapter 8: Bags and Sets
Chapter 8: Bags and Sets In the stack and the queue abstractions, the order that elements are placed into the container is important, because the order elements are removed is related to the order in which
Using 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
Formal Languages and Automata Theory - Regular Expressions and Finite Automata -
Formal Languages and Automata Theory - Regular Expressions and Finite Automata - Samarjit Chakraborty Computer Engineering and Networks Laboratory Swiss Federal Institute of Technology (ETH) Zürich March
Unit Testing with gunit
Unit Testing with gunit Revision 2052 Andrew P. Black July 7, 2015 Abstract Unit testing has become a required part of software development. Every method that might possibly go wrong should have one or
Unit Testing and JUnit
Unit Testing and JUnit Testing Objectives Tests intended to find errors Errors should be found quickly Good test cases have high p for finding a yet undiscovered error Successful tests cause program failure,
Managing Variability in Software Architectures 1 Felix Bachmann*
Managing Variability in Software Architectures Felix Bachmann* Carnegie Bosch Institute Carnegie Mellon University Pittsburgh, Pa 523, USA [email protected] Len Bass Software Engineering Institute Carnegie
Software Quality and Agile Methods
Software Quality and Agile Methods Ming Huo, June Verner, Liming Zhu, Muhammad Ali Babar National ICT Australia Ltd. and University of New South Wales, Australia {mhuo, jverner, limingz, malibaba }@cse.unsw.edu.au
STEP 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
Instance Creation. Chapter
Chapter 5 Instance Creation We've now covered enough material to look more closely at creating instances of a class. The basic instance creation message is new, which returns a new instance of the class.
Testing, 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.
Human Aspects of Software Engineering: The Case of Extreme Programming
1 Human Aspects of Software Engineering: The Case of Extreme Programming Orit Hazzan 1 and Jim Tomayko 2 1 Department of Education in Technology and Science, Technion - IIT, Haifa 32000, Israel [email protected]
Extreme Programming and Embedded Software Development
Extreme Programming and Embedded Software Development By James Grenning Every time I do a project, it seems we don t get the hardware until late in the project. This limits the progress the team can make.
Test 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.
Guide to Writing a Project Report
Guide to Writing a Project Report The following notes provide a guideline to report writing, and more generally to writing a scientific article. Please take the time to read them carefully. Even if your
Introduction 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
תילגנאב תורגבה תניחב ןורתפ
פתרון בחינת הבגרות באנגלית ו' שאלון (MODULE F) 416 מספרי השאלון: 016117, מוגש על ידי: ענת זהבי, אסתי אילן וארז צרפתי מורים לאנגלית ברשת בתי הספר של יואל גבע הערות:.1.2.3 התשובות המוצעות כאן הן ביחס ליצירות
XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories
XP & Scrum Beatrice Åkerblom [email protected] extreme Programming XP Roles XP Roles, cont!d! Customer ~ Writes User Stories and specifies Functional Tests ~ Sets priorities, explains stories ~ May or
JUnit. 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
Agile Based Software Development Model : Benefits & Challenges
Agile Based Software Development Model : Benefits & Challenges Tajinder Kumar Assistant Professor, IT Department JMIT Radaur, Haryana Vipul Gupta Assistant Professor, IT Department JMIT Radaur, Haryana
WRITING 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
Lab Experience 17. Programming Language Translation
Lab Experience 17 Programming Language Translation Objectives Gain insight into the translation process for converting one virtual machine to another See the process by which an assembler translates assembly
Agile processes. Extreme Programming, an agile software development process
Agile processes Extreme Programming, an agile software development process Nigel Goddard School of Informatics University of Edinburgh What the spiral models were reaching towards was that software development
Introduction to unit testing with Java, Eclipse and Subversion
Introduction to unit testing with Java, Eclipse and Subversion Table of Contents 1. About Unit Tests... 2 1.1. Introduction... 2 1.2. Unit tests frameworks... 3 2. A first test class... 4 2.1. Problem
RUP and XP, Part I: Finding Common Ground
RUP and XP, Part I: Finding Common Ground by Gary Pollice Evangelist, The Rational Unified Process Rational Software extreme Programming (XP) is hot! Attend any software development conference today and
Fail 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
Agile Testing and Extreme Programming
Agile Testing and Extreme Programming [email protected] www.pettichord.com March 2003 Copyright 2003 Bret Pettichord. All rights reserved. The Agile Alliance Values We have come to value: Individuals
Writing an essay. This seems obvious - but it is surprising how many people don't really do this.
Writing an essay Look back If this is not your first essay, take a look at your previous one. Did your tutor make any suggestions that you need to bear in mind for this essay? Did you learn anything else
Introduction to extreme Programming (XP)
Introduction to extreme Programming (XP) Extreme Programming (XP) Kent Beck C3 Project Chrysler Comprehensive Compensation system. XP Values: Communication Courage Feedback Simplicity Established the Twelve
Object-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,
Introduction. Motivational Principles. An Introduction to extreme Programming. Jonathan I. Maletic, Ph.D.
An Introduction to extreme Programming Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University Introduction Extreme Programming (XP) is a (very) lightweight incremental software
Code Kingdoms Learning a Language
codekingdoms Code Kingdoms Unit 2 Learning a Language for kids, with kids, by kids. Resources overview We have produced a number of resources designed to help people use Code Kingdoms. There are introductory
Designing 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
tools that make every developer a quality expert
tools that make every developer a quality expert Google: www.google.com Copyright 2006-2010, Google,Inc.. All rights are reserved. Google is a registered trademark of Google, Inc. and CodePro AnalytiX
Going 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 [email protected] 2 Deakin University,
Agile Scrum Workshop
Agile Scrum Workshop What is agile and scrum? Agile meaning: Able to move quickly and easily. Scrum meaning: a Rugby play Agile Scrum: It is an iterative and incremental agile software development framework
Test-Driven Development
Test-Driven Development An Introduction Mattias Ståhlberg [email protected] Debugging sucks. Testing rocks. Contents 1. What is unit testing? 2. What is test-driven development? 3. Example 4.
Agile.NET Development Test-driven Development using NUnit
Agile.NET Development Test-driven Development using NUnit Jason Gorman Test-driven Development Drive the design and construction of your code on unit test at a time Write a test that the system currently
Planning and Writing Essays
Planning and Writing Essays Many of your coursework assignments will take the form of an essay. This leaflet will give you an overview of the basic stages of planning and writing an academic essay but
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
Is ISO/IEC 15504 Applicable to Agile Methods?
Is ISO/IEC 15504 Applicable to Agile Methods? Giuseppe Lami 1, Fabio Falcini 2 1 Consiglio Nazionale delle Ricerche, Istituto di Scienza e Tecnologie dell Informazione via Moruzzi, 1 I-56124 Pisa, Italy
Evaluating and improving quality of administration
Evaluating and improving quality of administration White Paper by Dr Ilia Bider of IbisSoft (www.ibissoft.se) Abstract. This paper is aimed at creating guidelines for projects that concern quality of administrative
Reading and Taking Notes on Scholarly Journal Articles
Reading and Taking Notes on Scholarly Journal Articles Set aside enough time in your schedule to read material thoroughly and repeatedly, until you understand what the author is studying, arguing, or discussing.
Iterators. Provides a way to access elements of an aggregate object sequentially without exposing its underlying representation.
Iterators Provides a way to access elements of an aggregate object sequentially without exposing its underlying representation when to use it - to access an aggregate object's contents without exposing
Brought to you by the NVCC-Annandale Reading and Writing Center
Brought to you by the NVCC-Annandale Reading and Writing Center WORKSHOP OBJECTIVES: To understand the steps involved in writing inclass essays To be able to decode the question so that you answer the
KWIC Implemented with Pipe Filter Architectural Style
KWIC Implemented with Pipe Filter Architectural Style KWIC Implemented with Pipe Filter Architectural Style... 2 1 Pipe Filter Systems in General... 2 2 Architecture... 3 2.1 Pipes in KWIC system... 3
AN OPINION COMPOSITION
1 AN OPINION COMPOSITION When you are writing an essay that asks you to discuss a topic or give your opinion on a question, it is important to organize your thoughts and present your arguments clearly
Playing with Numbers
PLAYING WITH NUMBERS 249 Playing with Numbers CHAPTER 16 16.1 Introduction You have studied various types of numbers such as natural numbers, whole numbers, integers and rational numbers. You have also
Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona
Progress Report Aspect Oriented Programming meets Design Patterns Academic Programme MSc in Advanced Computer Science Guillermo Antonio Toro Bayona Supervisor Dr. John Sargeant The University of Manchester
Five High Order Thinking Skills
Five High Order Introduction The high technology like computers and calculators has profoundly changed the world of mathematics education. It is not only what aspects of mathematics are essential for learning,
Test Driven Development
Software Development Best Practices Test Driven Development http://www.construx.com 1999, 2006 Software Builders Inc. All Rights Reserved. Software Development Best Practices Test Driven Development, What
The Importance of Continuous Integration for Quality Assurance Teams
The Importance of Continuous Integration for Quality Assurance Teams Without proper implementation, a continuous integration system will go from a competitive advantage for a software quality assurance
Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6
The Researches on Unified Pattern of Information System Deng Zhonghua,Guo Liang,Xia Yanping School of Information Management, Wuhan University Wuhan, Hubei, China 430072 Abstract: This paper discusses
Continuous Integration, Delivery and Deployment. Eero Laukkanen T-76.5613 - Software Testing and Quality Assurance P 20.11.2015
Continuous Integration, Delivery and Deployment Eero Laukkanen T-76.5613 - Software Testing and Quality Assurance P 20.11.2015 System Integration In engineering, system integration is defined as the process
1 Description of The Simpletron
Simulating The Simpletron Computer 50 points 1 Description of The Simpletron In this assignment you will write a program to simulate a fictional computer that we will call the Simpletron. As its name implies
Regular Expressions and Automata using Haskell
Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressions
Agile Development for Application Security Managers
Agile Development for Application Security Managers www.quotium.com When examining the agile development methodology many organizations are uncertain whether it is possible to introduce application security
Mathematical Induction
Mathematical Induction In logic, we often want to prove that every member of an infinite set has some feature. E.g., we would like to show: N 1 : is a number 1 : has the feature Φ ( x)(n 1 x! 1 x) How
MANAGEMENT S ROLE 1/16/2002 152. Copyright 2001, Net Objectives
MANAGEMENT S ROLE 1/16/2002 152 Continuous Overtime Is Counterproductive Working more hours does not increase productivity Overwork is usually an indication of something wrong - working more doesn t fix
1/9. Locke 1: Critique of Innate Ideas
1/9 Locke 1: Critique of Innate Ideas This week we are going to begin looking at a new area by turning our attention to the work of John Locke, who is probably the most famous English philosopher of all
Friendship 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
Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.
1 Continuous Integration with Jenkins Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.se Faculty of Engineering, Lund Univeristy (LTH) March 5, 2013 Abstract
Quality Meets the CEO
Quality Meets the CEO Jeffery E. Payne [email protected] Reliable Software Technologies Corporate management does not care about quality. This is the cold, hard reality of the software world. Management
The Role of Agile Methodology in Project Management
Edith Cowan University Research Online Australian Information Warfare and Security Conference Security Research Institute Conferences 2010 Success of Agile Environment in Complex Projects Abbass Ghanbary
Vodafone PC SMS 2010. (Software version 4.7.1) User Manual
Vodafone PC SMS 2010 (Software version 4.7.1) User Manual July 19, 2010 Table of contents 1. Introduction...4 1.1 System Requirements... 4 1.2 Reply-to-Inbox... 4 1.3 What s new?... 4 2. Installation...6
Advanced Test-Driven Development
Corporate Technology Advanced Test-Driven Development Software Engineering 2007 Hamburg, Germany Peter Zimmerer Principal Engineer Siemens AG, CT SE 1 Corporate Technology Corporate Research and Technologies
WRITING EFFECTIVE REPORTS AND ESSAYS
WRITING EFFECTIVE REPORTS AND ESSAYS A. What are Reports? Writing Effective Reports Reports are documents which both give a reader information and ask the reader to do something with that information.
Test Driven Development with Continuous Integration: A Literature Review
Test Driven Development with Continuous Integration: A Literature Review Sheikh Fahad Ahmad Deptt. of Computer Science & Engg. Mohd. Rizwan Beg Deptt. of Computer Science & Engg. Mohd. Haleem Deptt. of
Parameter Passing in Pascal
Parameter Passing in Pascal Mordechai Ben-Ari Department of Science Teaching Weizmann Institute of Science Rehovot 76100 Israel [email protected] Abstract This paper claims that reference parameters
RUnit - 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........................
TesT AuTomATion Best Practices
Test Automation Best Pr actices 2 Which test Cases should be automated? A test case or use case scenario is a simulated situation in which a user performs determinate actions when using a particular app.
Grade 3: Module 1: Unit 1: Lesson 8 Paragraph Writing Instruction
Grade 3: Module 1: Unit 1: Lesson 8 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Exempt third-party content is indicated by the footer: (name
3 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
Pseudo code Tutorial and Exercises Teacher s Version
Pseudo code Tutorial and Exercises Teacher s Version Pseudo-code is an informal way to express the design of a computer program or an algorithm in 1.45. The aim is to get the idea quickly and also easy
APPENDIX 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
Software Service Engineering Architect s Dream or Developer s Nightmare?
Software Service Engineering Architect s Dream or Developer s Nightmare? Gregor Hohpe Google, 1600 Amphitheatre Parkway, Mountain View, CA 94043 [email protected] Abstract. Architectural principles such
Agile processes. Extreme Programming, an agile software development process. Extreme Programming. Risk: The Basic Problem
Agile processes Extreme Programming, an agile software development process Perdita Stevens School of Informatics University of Edinburgh What the spiral models were reaching towards was that software development
A 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
Author: 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
Students will know Vocabulary: purpose details reasons phrases conclusion point of view persuasive evaluate
Fourth Grade Writing : Text Types and Purposes Essential Questions: 1. How do writers select the genre of writing for a specific purpose and audience? 2. How do essential components of the writing process
