Test-Driven Development
|
|
|
- Dwayne Baker
- 10 years ago
- Views:
Transcription
1 (c) Christoph Steindl Test-Driven Development 1 Test-Driven Development Dr. Christoph Steindl Senior IT Architect and Method Exponent Certified ScrumMaster [email protected]
2 Copyright Notice and Usage Information This presentation contains material from books, talks and presentations of a number of people, partly updated, extended and rephrased. All rights remain with the original authors. None of these rights are directly or indirectly transferred to the author of this presentation. You may use or forward this presentation only after informing the author of this presentation by . Doing otherwise is dishonest. (c) Christoph Steindl Test-Driven Development 2
3 Agenda Good Engineering Practices What is Test-Driven Development? How to do TDD at the Unit-Test Level? How to do TDD at the Acceptance-Test Level? Project Automation Continuous Integration Live Demo Questions and Answers (c) Christoph Steindl Test-Driven Development 3
4 Go to Questions (c) Christoph Steindl Test-Driven Development 4 Good Engineering Practices 1. Having a source code control system E.g. CVS 2. Doing code reviews before checking in code Pair programming Code reviews 3. Checking in at least daily (even if it leads to build failures) 4. Having daily builds 5. Doing unit tests 6. Having an automated test harness for unit tests E.g. Junit 7. Using test-driven development at the automated test harness level 8. Doing continuous builds Continuously after unit tested and checked in E.g. CruiseControl 9. Doing acceptance test driven development Apply the acceptance tests once code is checked in E.g. FIT, Fitnesse 10.Refactoring FOCUS
5 (c) Christoph Steindl Test-Driven Development 5 XP practices Coding circle Team circle Process circle Product circle Collective Code Ownership Planning Game System Simple Metaphor Design Continuous Integration Testing Refactoring Pair Programming Software development practices at heart of XP Less clearly defined organizational practices around them On-Site Customer Coding Standards 40 Hour Week Small Releases
6 (c) Christoph Steindl Test-Driven Development 6 What is Test-Driven Development? In principle, it is just about writing the test before the program. But in consequence, it leads the developer to first think about how to use the component (why do we need the component, what s it for?) and only then about how to implement. So, it s a testing technique as well as a design technique It results into components that are easy to test. It results into components that are easy to enhance and adapt. In the end, there is no code without a test. The developer can tell at any time whether everything still works as it should, or what exactly does no longer work as it once did.
7 (c) Christoph Steindl Test-Driven Development 7 Motivation If you intend to test after you ve developed the system, you won t have the time for testing. Write the tests before the code! If things get complicated, you might fear that the system doesn t work. Execute the tests and get positive feedback (everything still works) or get pointed to the bit that does not / no longer work. If you re overwhelmed by the complexity, you get frustrated. Start with the simplest thing and proceed in tiny steps! If you don t have tests for the code, you shouldn t use it / ship it. This can t happen if you write the test first (so you reach better test coverage than with functional tests). If performance is only considered late, you won t be able to just add a little more performance to the system. Re-use unit tests for performance tests even during development and don t start with performance tests late in the project!
8 TDD at the Unit-Test Level Red Green Refactor Red Write a little test that doesn t work (and perhaps doesn t even compile at first). Green Make the test work quickly (committing whatever sins necessary) Refactor Eliminate all of the duplication created in merely getting the test to work, improve the design. (c) Christoph Steindl Test-Driven Development 8
9 TDD at the Unit-Test Level Why? The test is the executable specification. You start thinking about the goal first, then about the possible implementations. You understand the program s behavior by looking at the tests. The tests tell you more than just an API description, they show the dynamics, how to use the API. You develop just enough. You get to the goal as quick as possible. You don t develop unnecessary code. There is no code without a test. There is no test without a user requirement. Once you get one test working, you know it is working now and forever. You use the tests as regression tests. The tests give us the courage to refactor. You can prove that everything still works after the refactoring by simply executing the tests. It s more fun that way, it reduces fear. (c) Christoph Steindl Test-Driven Development 9
10 TDD at the Unit-Test Level (c) Christoph Steindl Test-Driven Development 10 How? Don t start with objects (or design, or...), start with a test. Write new code only if an automated test has failed. First think of the goal, the required functionality. Then think of the perfect interface for that operation (from the outside, black-box view). Run the test often very often. To determine whether you ve reached the goal. To catch any bugs that have crawled back in. Make little steps (during coding and refactoring) So little that you feel comfortable with them. Make them larger if you feel. Make them smaller if you don t proceed with your expected velocity.
11 TDD at the Unit-Test Level (c) Christoph Steindl Test-Driven Development 11 Use Tools Framework for automating the unit tests E.g. Junit Integrated development environment For writing tests, using auto-completion and generation of missing code. For running the tests For refactoring E.g. Eclipse Build environment For executing tests automatically and during the build process For computing code coverage For generating test reports E.g. Maven
12 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 12 Iterative Software Development At the start of the iteration, the customer explains the expected functionality to the team. The customer prioritizes for business value and urgency, the team estimates the effort and cost. Then the team brainstorms the necessary tasks to implement the functionality, details the estimation and team members select their tasks. During the iteration, the team holds short status meetings in order to discuss the current tasks, the achievements and the problems. At the end of the iteration, the team demonstrates to the customer the increment of potentially shippable functionality. Prioritized functionality 24 h 30 d One iteration with short feedback loops 24h within team 30d with customer Increment o potentially shippable functionality
13 TDD at the Acceptance-Test Level Acceptance Testing Don t wait until the software has been written in order to start with acceptance testing. Write the acceptance tests as soon as possible. Build the unit tests upon the acceptance tests. Execute the acceptance tests during the iteration to understand the progress. Execute the acceptance tests at the end of the iteration in order to verify that the requested functionality has been built. Write acceptance tests Prioritized functionality 24 h 30 d One iteration with short feedback loops Write unit tests based upon acceptance tests Execute acceptance tests (c) Christoph Steindl Test-Driven Development 13 Increment o functionality
14 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 14 Why? Better collaboration between customer and developer, faster feedback. Customer / Business / User / Domain Expert Specifies the requirements In the language of the business, focusing on the scenarios, the flow of events, the dynamic behavior In an executable form Where the execution can be automated Before the requirements are implemented Validates the requirements Is that really what we need? ( Do we build the right system?, not just Do we build the system in the right way? ) Typically, validation only occurs at the end of the project (where it s too late). Targets errors not found by unit testing Requirements are mis-interpreted by developer Interface of software is not as intended Modules don t integrate with each other
15 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 15 Traditional Approaches to Acceptance Testing Manual Acceptance Testing User exercises the system manually using his creativity Disadvantages: The developers don t know the goal, the tests that the system has to pass this approach does not support TDD Expensive, due to manual effort which has to be repeated whenever the system changes Errors may be overlooked (no automated verification whether the actual matches the expected, the eye sees what it wants to see ) There can be big arguments about the pass/fail decision Acceptance Testing with Capture & Replay (e.g. at the GUI level) Tool captures events (e.g. mouse, keyboard) in modifiable script (e.g. hopefully abstracting from screen coordinates to GUI objects) Disadvantages: System (and GUI) has to exist, so this approach does not support TDD Tools are expensive Tests are brittle, have to be re-captured if the system changes
16 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 16 Agile Approach to Acceptance Testing Framework for automating the functional tests E.g. FIT, FitNesse Advantages: Easy for the user to describe the requirements themselves (no programming, just text) Easy for the developer to glue the requirements to the business logic Tests are written before the code, so this approach supports TDD Inexpensive because the frameworks are open source, execution of the tests can be automated. The developer has a clear goal to achieve! Disadvantages: No capture & replay possible
17 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 17 What is FIT? An open source framework (under the GPL) created by Ward Cunningham: Supports Java,.NET, Python, Lisp, Scheme, Ruby, Perl, C++ has enough logic to parse HTML, run tests, capture results and output them as a modified HTML document For data-driven tests (input processing output) where the tests look like spreadsheets The customer write tests as HTML tables. The framework interprets the tables, the glue code passes the values to the test code, the test code exercises the business logic. The customer documents the test with free text between the tables (which is ignored by the framework).
18 (c) Christoph Steindl Test-Driven Development 18 How to Use FIT? Fixtures are types of HTML tables with a specific behavior of interpreting the values in the table. ColumnFixture: maps columns in the test data to fields or methods; a new column fixture is created for each table that uses one. ActionFixture: executes the command in the first column start aclass: create an object of aclass to work with enter amethod anargument: invoke the method on the object press amethod: invoke the method on the object (without parameters) check afunction avalue: invoke the (parameterless) function and compare return value with the specified value RowFixture: invokes methods on the objects and compares the returned values to those in the table binds the columns to variables and methods by reflection. Executes the functions to get the result rows which will be checked. matches the expected and result rows and check the matches. marks missing and surplus rows Run FIT Fixtures Within Eclipse: For.NET:
19 Eclipse plugin FitRunner ( Install plugin, add fit.jar and junit.jar to project s classpath Define input fixtures Define output directory Run them View the result (c) Christoph Steindl Test-Driven Development 19
20 (c) Christoph Steindl Test-Driven Development 20.NET StoryTestRunner ( StoryTestRunner is a C# based application that runs.net FIT fixtures. Runs all story tests in specified locations (specified in an XML config file) Ability to add additional tests for 'one-time execution' Context menu lets tests be run individually. Summary results are displayed in the tree control once a test is complete. Detailed results are displayed using a context menu.
21 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 21 What is a Wiki? A minimalistic Content Management System Everyone can change every page Changes are visible immediately (but are under version control in case that you damage something) There are abbreviations for often used HTML tags Whenever a word is combined of several others (TestDrivenDevelopment), it becomes a link to a new page. When the link is activated the first time, you can fill the (originally) empty page. First Wiki by Ward Cunningham:
22 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 22 What is FitNesse? An open source framework (under the GPL) created by Robert Martin et al.: Supports Java,.NET, C++ Combines FIT with a Wiki Web for writing the Fixtures (HTML tables) Supports sub wikis for managing multiple projects Supports virtual wikis for defining tests on the server (accessible by all) but for running them locally (within the development environment). Versions pages, searches pages, supports simple refactorings (rename, move, delete page) A collaborative testing and documentation tool - it provides a very simple way for teams to: collaboratively create documents, specify tests, and run those tests and suites of those tests A web server: It requires no configuration or setup. Just run it and then direct your browser to the machine where it is running. A wiki - you can easily create: New Documents and pages. Hyperlinks Lists Tables
23 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 23 How to use FitNesse? Install and start Define project on the FitNesse Wiki Write acceptance tests on the FitNesse Wiki. Write the glue code, the unit tests and the business logic in your favorite IDE. Execute the acceptance tests by a click on the web page. See the results of executing the tests on the web page. But: Not so tightly integrated into the automated build process, i.e. no test coverage computed out of the box, Not so tightly integrated into the IDE, i.e. no end-to-end debugging
24 TDD at the Acceptance-Test Level Standard FitNesse Fixtures ColumnFixture: operates on a single object; each row loads a data structure (domain object) and then invokes functions upon it, often used for test object creation. RowEntryFixture: (like ColumnFixture) to add a bunch of data to a database, or to call a function over and over again with different arguments. RowFixture: to match all the rows from a simple query, independent of order. Each row is the data of a domain object, all rows are matched, missing and surplus rows are reported; often used to check the results of a query (where the query is built into the fixture or taken from a known static variable) ParametricRowFixture: (like RowFixture) additionally you can pass arguments into the RowFixture ActionFixture: to write a script that emulates a user interface CommandLineFixture: to execute shell commands in multiple threads HtmlFixture: to examine and navigate html pages SummaryFixture: displays a summary of all tests on a page; often added to TearDown TableFixture: lets you access the cells in a table by row and column TimedActionFixture: (like ActionFixture) additionally with visual feedback on how long certain functions take to execute (c) Christoph Steindl Test-Driven Development 24
25 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 25 Sub Wikis and Test Suites A normal wiki is a collection of pages with a flat structure. All the pages are peers. Add a top-level page simply by placing a WikiWord on an existing top-level page, and then clicking on the? FitNesse allows you to create sub wikis. Each wiki page can be the parent of an entire new wiki. Create a sub wiki page by the ^SubPage syntax, and then clicking on the? Each wiki (and sub wiki) can have its own ClassPath PageHeader, PageFooter SetUp, TearDown SuiteSetup, SuiteTearDown Test Suites A Test Suite executes all tests in the sub wiki (tree of pages) SetUp and TearDown pages are invoked for each page of the suite. To wrap an entire suite, define the operations on pages SuiteSetUp and SuiteTearDown
26 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 26 Virtual Wikis Fitnesse runs on the server the developer works on his own machine. Virtual Wikis allow to run local code still under development using a central set of shared test pages. This is helpful in testing code before check-in. How to The developer starts FitNesse on his own machine, points one of his local pages to a subwiki on the global FitNesse server. The entire sub-wiki from the global server then appears on the developer's local machine -- just as if the developer had written the pages there. But the pages are really still on the server. Pressing the Test button on such a page, causes the test to be executed locally. The developer can create ClassPath pages on his machine that allow the acceptance tests to be run in his local environment. Thus, each developer can set up his own local environment and create a set of ClassPath pages that bind that environment to his wiki. Then he can use Virtual Wiki to merge the remote acceptance tests to his local ClassPath environment. See for details Set page property VirtualWiki URL to include the pages of the sub wiki as children of the current page.
27 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 27 Testing the User Interface HtmlFixture ( is used to exercise and test web pages permits to make assertions about the structure of a page and to navigate between pages can fire java script, submit forms, "click" links, etc lets you navigate this structure and name the elements as you go At any given time some element in the structure is the "current" element and the commands apply to this element for the most part (called the "focus ). Some commands are only legal if the focus has a certain type. For example, Submit applies only to anchor elements and form elements. HttpUnit ( emulates the relevant portions of browser behavior, including form submission, JavaScript, basic http authentication, cookies and automatic page redirection allows Java test code to examine returned pages either as text, an XML DOM, or containers of forms, tables, and links makes it easy to write Junit tests that very quickly verify the functioning of a web site models the http protocol so you deal with request and response objects HtmlUnit ( Similar to HttpUnit, but models the returned document so that you deal with pages and forms and tables Supports http/https, POST/GET, partial JavaScript, basic http authentication, cookies, proxy server Makes it easy to submit forms, click on buttons, walk the DOM model of the html document jwebunit ( Evolved from combined use of HttpUnit and Junit provides a high-level API for navigating a web application combined with a set of assertions to verify the application's correctness (includes navigation via links, form entry and submission, validation of table contents)
28 TDD at the Acceptance-Test Level (c) Christoph Steindl Test-Driven Development 28 Junit/HttpUnit jwebjunit package net.sourceforge.jwebunit.sample; import junit.framework.testcase; import com.meterware.httpunit.webresponse; import com.meterware.httpunit.webconversation; import com.meterware.httpunit.webform; import com.meterware.httpunit.webrequest; public class SearchExample extends TestCase { package net.sourceforge.jwebunit.sample; import net.sourceforge.jwebunit.webtestcase; public class JWebUnitSearchExample extends WebTestCase { } public void testsearch() throws Exception { WebConversation wc = new WebConversation(); WebResponse resp = wc.getresponse( " WebForm form = resp.getforms()[0]; form.setparameter("q", "HttpUnit"); WebRequest req = form.getrequest("btng"); resp = wc.getresponse(req); assertnotnull(resp.getlinkwith("httpunit")); resp = resp.getlinkwith("httpunit").click(); assertequals(resp.gettitle(), "HttpUnit"); assertnotnull(resp.getlinkwith("user's Manual")); } } public void testsearch() { gettestcontext().setbaseurl(" } beginat("/"); setformelement("q", "HttpUnit"); submit("btng"); clicklinkwithtext("httpunit"); asserttitleequals("httpunit"); assertlinkpresentwithtext("user's Manual");
29 Project Automation Building # Compiling Integrate early Integrate often Make the build CRISP Automate (e.g. with Ant or Maven) Verify the build with tests Trigger build by schedule or event (like modified sources in the repository) Build continuously (e.g. with CruiseControl) (c) Christoph Steindl Test-Driven Development 29
30 Continuous Integration (c) Christoph Steindl Test-Driven Development 30 Prerequisites and Benefits Prequisites: Keep a single place where all the source code lives and where anyone can obtain the current sources from (and previous versions). Automate the build process so that anyone can use a single command to build the system from the sources. Automate the testing so that you can run a good suite of tests on the system at any time with a single command. Make sure anyone can get a current executable which you are confident is the best executable so far. Benefits Faster Feedback: Most integration bugs manifest themselves the same day they were introduced. Better Context: You typically know where to look for the reason of the problem (or you don t add the buggy feature to the product).
31 Continuous Integration (c) Christoph Steindl Test-Driven Development 31 CruiseControl Is a continuous integration server Runs in the background Runs the build cycle (at configurable intervals): Reload configuration file (in case of changes) Determine if a build is necessary (by querying the source control system) Build Check out the project files Compile the sources Execute the tests Package the deliverables Create a log file Send notifications of success or failure Presents the build results as a web page (by the build results JSP which can be deployed into a Tomcat server). Integrates with Junit, Ant, Maven and CVS (and other source control systems).
32 Continuous Integration (c) Christoph Steindl Test-Driven Development 32 How to On the developer s machine (as usually, nothing new here) Develop the system Check in code On the build server Create a directory for the builds (e.g. mkdir c:\builds ) Change into the directory (e.g. cd c:\builds ) Check out the project (e.g. cvs co triangle ) Create a directory for the build results (optionally on another server, e.g. mkdir c:\builds\buildresults ) this is where Maven will deploy the results of the build Create a directory for the log files (e.g. mkdir c:\builds\cc-logs ) this is where CruiseControl will create its log files Let maven create the cruisecontrol.xml (e.g. maven cruisecontrol ) Add additional publishers (e.g. for RSS feeds) Let maven start CruiseControl (e.g. maven cruisecontrol:run ) The source control system acts as the intermediary between the developer and the build server. Relax and wait for notifications to arrive.
33 Check out Source Control System Check in Continuous Integration Server Development Machine checkout Maven ruisecontrol C:\ builds triangle buildresults cc-logs buildstatus RSS-Feed (c) Christoph Steindl Test-Driven Development 33 C:\ develop triangle
34 Continuous Integration (c) Christoph Steindl Test-Driven Development 34 CruiseControl.xml (1/3) <?xml version="1.0" encoding="utf-8"?> Name Bootstrappers <cruisecontrol> Modification set <project name="testing-triangle"> <bootstrappers> <currentbuildstatusbootstrapper file="c:\builds/cc-logs/currentbuildstatus.txt"> </currentbuildstatusbootstrapper> </bootstrappers> <modificationset> <cvs localworkingcopy="c:\builds/triangle" </cvs> </modificationset> </project> </cruisecontrol>
35 Continuous Integration CruiseControl.xml (2/3) <schedule interval="60"> <maven goal="scm:update-project clean test site site:fsdeploy" projectfile="c:\builds/triangle/project.xml" mavenscript="c:\progra~1\apache~1\maven1~1.0/bin/maven"> </maven> </schedule> <log dir="c:\builds/cc-logs/testing-triangle"> <merge dir="c:\builds/triangle/target/test-reports"> </merge> </log> Schedule interval Maven for build Log (c) Christoph Steindl Test-Driven Development 35
36 Continuous Integration CruiseControl.xml (3/3) <publishers> <currentbuildstatuspublisher file="c:\builds/cc-logs/currentbuildstatus.txt"> </currentbuildstatuspublisher> <html logdir="c:\builds/cc-logs/testing-triangle" mailhost="localhost" css="c:\cruisecontrol-2.1.6/reporting/jsp/css/cruisecontrol.css" subjectprefix="[build]" xsldir="c:\cruisecontrol-2.1.6/reporting/jsp/xsl"> <map alias="steindl"> </map> <failure </failure> </html > <XSLTLogPublisher directory="c:\builds\buildstatus outfilename="trianglebuildstatus.rss" xsltfile="buildstatus.xsl" /> </publishers> Publishers , RSS Mapping for names (c) Christoph Steindl Test-Driven Development 36
37 Continuous Integration (c) Christoph Steindl Test-Driven Development 37 Maven / CruiseControl files Maven s project.xml (under version control) Deploy the build result with the target site:fsdeploy (file system deployment) <sitedirectory>c:\builds\buildresults</sitedirectory> You can also deploy the results to a web server (with site:deploy ) Maven s build.properties (specific for each developer / machine) maven.cruisecontrol.checkout.dir=c:\\builds maven.cruisecontrol.logs.dir=c:\\builds\\cc-logs CruiseControl s cruisecontrol.xml Generated by Maven (maven cruisecontrol) Added RSS publisher (under <publishers>): <XSLTLogPublisher directory="c:\builds\buildstatus" outfilename="trianglebuildstatus.rss" xsltfile="buildstatus.xsl" />
38 maven.username=administrator #Location of cruise control installation - for finding the reporting directory maven.cruisecontrol.home=c:\\cruisecontrol #Where to checkout/update code temporarily. Default value is ${basedir}/checkout. maven.cruisecontrol.checkout.dir=c:\\builds Maven s project.xml Maven s build.properties #Seconds in between builds for this project. Default value is 300. maven.cruisecontrol.schedule.interval=60 CruiseControl s cruisecontrol.xml #Default value is scm:update-project clean test site:deploy. maven.cruisecontrol.goals=scm:update-project clean test site site:fsdeploy #Default value is the domain name of the first in ${pom.build.nag address}. maven.cruisecontrol.mail.defaultsuffix=@localhost #Default value is ${maven.build.dir}/cc-logs. maven.cruisecontrol.logs.dir=c:\\builds\\cc-logs #Default value is localhost. #maven.cruisecontrol.mail.host= #Default value is [BUILD]. #maven.cruisecontrol.mail.subjectprefix= #Config file to update/create. Default value is ${basedir}/cruisecontrol.xml. #maven.cruisecontrol.config= #Template file to use in generating the cruisecontrol.xml file. #maven.cruisecontrol.template= User name Home of CruiseCont Schedule interval Goals for build Mail suffix (c) Christoph Steindl Test-Driven Development 38
39 (c) Christoph Steindl Test-Driven Development 39 extreme Feedback Devices (XFDs) XFDs are inexpensive to build and operate, they add fun and color to the workspace, and most important they are effective in providing the team with feedback on key items and getting them to act upon it. XFDs help you to achieve and maintain focus on what is most important to the organization at any given time. By making the feedback mechanism fun you help to draw attention to it. By making the feedback broadly available you send out a signal that the objectives are important and that many people care about, and depend upon, their achievement.
40 Quote of the day By the time it was released, Microsoft Windows NT 3.0 consisted of 5.6 million lines of code spread across 40,000 source files. A complete build took as many as 19 hours on several machines, but the NT development team still managed to build every day (Zachary, 1994). Far from being a nuisance, the NT team attributed much of its success on that huge project to their daily builds. Steve McConnell (c) Christoph Steindl Test-Driven Development 40
41 (c) Christoph Steindl Test-Driven Development 41 References Kent Beck: Test-Driven Development: By Example, Addison-Wesley, David Astels: Test-Driven Development: A Practical Guide, Prentice Hall, Frank Westphal: Testgetriebene Entwicklung, dpunkt.verlag, 2004 Vincent Massol: Junit in Action, Manning Publications, J. B. Rainsberger: Junit Recipes, Manning Publications, Andrew Hunt, David Thomas: Pragmatic Unit Testing, Pragmatic Bookshelf, Johannes Link, Peter Fröhlich: Unit Tests mit Java, dpunkt.verlag, Stefan Roock: Akzeptanztests mit FIT und Fitnesse, Mark Windholz: Fit & Fitnesse, Mike Clark: Pragmatic Project Automation, Pragmatic Bookshelf, Martin Fowler: Continuous Integration Continuous Integration with CruiseControl.NET and Draco.NET
42 (c) Christoph Steindl Test-Driven Development 42 Online References Unit Testing: xunit: Junit: NUnit: Automated Build: Ant: Grand: NAnt: Integrated Development Environment: Eclipse: SharpDevelop: Build Environment: Maven:
43 (c) Christoph Steindl Test-Driven Development 43 Online References FIT: Fitnesse: Continuous Build Environment: CruiseControl: CruiseControl.NET: DamageControl: Draco.NET: Anthill: IntegrationGuard: Gump: see Google
44 (c) Christoph Steindl Test-Driven Development 44 Online References TDD Aim, Fire : Continuous Integration: Daily Build and Smoke Test: XFDs: Continuous Integration WebLog: Automated Continuous Integration and the Ambient Orb Mathmos SoftLight
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
Software Construction
Software Construction Martin Kropp University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You can explain the importance of continuous integration
Software Development Tools
Software Development Tools COMP220/COMP285 Sebastian Coope More on Automated Testing and Continuous Integration These slides are mainly based on Java Tools for Extreme Programming R.Hightower & N.Lesiecki.
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
Continuous Integration
Continuous Integration WITH FITNESSE AND SELENIUM By Brian Kitchener [email protected] Intro Who am I? Overview Continuous Integration The Tools Selenium Overview Fitnesse Overview Data Dependence My
Kevin Lee Technical Consultant [email protected]. As part of a normal software build and release process
Agile SCM: Realising Continuous Kevin Lee Technical Consultant [email protected] Agenda What is Continuous? Continuous in Context As part of a normal software build and release process Realising Continuous
Test Automation Integration with Test Management QAComplete
Test Automation Integration with Test Management QAComplete This User's Guide walks you through configuring and using your automated tests with QAComplete's Test Management module SmartBear Software Release
Automating Functional Tests Using Selenium
Automating Functional Tests Using Selenium Antawan Holmes and Marc Kellogg Digital Focus [email protected], [email protected] Abstract Ever in search of a silver bullet for automated
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.
Distributed Agile Development. Bapiraju Nandury Product Development Manager Bangalore Development Centre
Distributed Agile Development Bapiraju Nandury Product Development Manager Bangalore Development Centre Agenda Distributed / offshore Development Agile Methods Distributed Agile Development Goals of this
Leveraging Rational Team Concert's build capabilities for Continuous Integration
Leveraging Rational Team Concert's build capabilities for Continuous Integration Krishna Kishore Senior Engineer, RTC IBM [email protected] August 9-11, Bangalore August 11, Delhi Agenda What
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
Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited
Continuous Integration: Improving Software Quality and Reducing Risk Preetam Palwe Aftek Limited One more title Do you love bugs? Or Are you in love with QC members? [Courtesy: Smita N] Agenda Motivation
Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)
Sonatype CLM Enforcement Points - Continuous Integration (CI) i Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI) ii Contents 1
Introduction to Agile Software Development Process. Software Development Life Cycles
Introduction to Agile Software Development Process Presenter: Soontarin W. (Senior Software Process Specialist) Date: 24 November 2010 AGENDA Software Development Life Cycles Waterfall Model Iterative
Automation using Selenium
Table of Contents 1. A view on Automation Testing... 3 2. Automation Testing Tools... 3 2.1 Licensed Tools... 3 2.1.1 Market Growth & Productivity... 4 2.1.2 Current Scenario... 4 2.2 Open Source Tools...
SOFTWARE TESTING TRAINING COURSES CONTENTS
SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software
CSE 4415 / SWE 5415 Software Testing 2 Fall 2004 Olin Engineering Building, Room 128 Credits: 3.00
CSE 4415 / SWE 5415 Software Testing 2 Fall 2004 Olin Engineering Building, Room 128 Credits: 3.00 SOFTWARE TESTING 2. (Catalog description) Explores structural (glass box) methods for testing software.
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
Continuous Integration
Continuous Integration Collaborative development issues Checkout of a shared version of software ( mainline ) Creation of personal working copies of developers Software development: modification of personal
LoadRunner and Performance Center v11.52 Technical Awareness Webinar Training
LoadRunner and Performance Center v11.52 Technical Awareness Webinar Training Tony Wong 1 Copyright Copyright 2012 2012 Hewlett-Packard Development Development Company, Company, L.P. The L.P. information
GUI Test Automation How-To Tips
www. routinebot.com AKS-Labs - Page 2 - It s often said that First Impression is the last impression and software applications are no exception to that rule. There is little doubt that the user interface
Web Applications Testing
Web Applications Testing Automated testing and verification JP Galeotti, Alessandra Gorla Why are Web applications different Web 1.0: Static content Client and Server side execution Different components
Bridging the Gap Between Acceptance Criteria and Definition of Done
Bridging the Gap Between Acceptance Criteria and Definition of Done Sowmya Purushotham, Amith Pulla [email protected], [email protected] Abstract With the onset of Scrum and as many organizations
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
DiskBoss. File & Disk Manager. Version 2.0. Dec 2011. Flexense Ltd. www.flexense.com [email protected]. File Integrity Monitor
DiskBoss File & Disk Manager File Integrity Monitor Version 2.0 Dec 2011 www.flexense.com [email protected] 1 Product Overview DiskBoss is an automated, rule-based file and disk manager allowing one to
How To Test Your Web Site On Wapt On A Pc Or Mac Or Mac (Or Mac) On A Mac Or Ipad Or Ipa (Or Ipa) On Pc Or Ipam (Or Pc Or Pc) On An Ip
Load testing with WAPT: Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. A brief insight is provided
Pipeline Orchestration for Test Automation using Extended Buildbot Architecture
Pipeline Orchestration for Test Automation using Extended Buildbot Architecture Sushant G.Gaikwad Department of Computer Science and engineering, Walchand College of Engineering, Sangli, India. M.A.Shah
Extreme Programming. Sergey Konovalov and Stefan Misslinger. May 23, 2006
Extreme Programming Sergey Konovalov and Stefan Misslinger May 23, 2006 1 Contents 1 Introduction 3 2 Why do we need XP? 3 3 Economics of Software Development 4 4 Extreme Programming Values 4 5 Extreme
.NET and J2EE Intro to Software Engineering
.NET and J2EE Intro to Software Engineering David Talby This Lecture.NET Platform The Framework CLR and C# J2EE Platform And Web Services Introduction to Software Engineering The Software Crisis Methodologies
Continuous Integration and Bamboo. Ryan Cutter CSCI 5828 2012 Spring Semester
Continuous Integration and Bamboo Ryan Cutter CSCI 5828 2012 Spring Semester Agenda What is CI and how can it help me? Fundamentals of CI Fundamentals of Bamboo Configuration / Price Quick example Features
Automated Integration Testing & Continuous Integration for webmethods
WHITE PAPER Automated Integration Testing & Continuous Integration for webmethods Increase your webmethods ROI with CloudGen Automated Test Engine (CATE) Shiva Kolli CTO CLOUDGEN, LLC NOVEMBER, 2015 EXECUTIVE
Unit 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
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous Integration 01 02 03 04 Unit Check- Test Review In 05 06 07 Build Deploy Test In the following pages we will discuss the approach and systems that together make
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
Software Development In the Cloud Cloud management and ALM
Software Development In the Cloud Cloud management and ALM First published in Dr. Dobb's Journal, February 2009: http://www.ddj.com/development-tools/212900736 Nick Gulrajani is a Senior Solutions Architect
Load testing with. WAPT Cloud. Quick Start Guide
Load testing with WAPT Cloud Quick Start Guide This document describes step by step how to create a simple typical test for a web application, execute it and interpret the results. 2007-2015 SoftLogica
Software Continuous Integration & Delivery
November 2013 Daitan White Paper Software Continuous Integration & Delivery INCREASING YOUR SOFTWARE DEVELOPMENT PROCESS AGILITY Highly Reliable Software Development Services http://www.daitangroup.com
Development Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD
Development Techniques CSE301 University of Sunderland Harry R. Erwin, PhD Sources Boehm, 1981, Software Engineering Economics, Prentice- Hall. Stephens and Rosenberg, 2003, Extreme Programming Refactored:
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
Nexus Professional Whitepaper. Repository Management: Stages of Adoption
Sonatype Nexus Professional Whitepaper Repository Management: Stages of Adoption Adopting Repository Management Best Practices SONATYPE www.sonatype.com [email protected] +1 301-684-8080 12501 Prosperity
Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.
TAKING CONTROL OF YOUR DATABASE DEVELOPMENT Nick Ashley While language-oriented toolsets become more advanced the range of development and deployment tools for databases remains primitive. How often is
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.
MarathonITE. GUI Testing for Java/Swing Applications
MarathonITE GUI Testing for Java/Swing Applications Overview Test automation is not a sprint... it is a marathon Test Automation As the applications in today s environment grow more complex, the testing
Content. Development Tools 2(63)
Development Tools Content Project management and build, Maven Version control, Git Code coverage, JaCoCo Profiling, NetBeans Static Analyzer, NetBeans Continuous integration, Hudson Development Tools 2(63)
BDD FOR AUTOMATING WEB APPLICATION TESTING. Stephen de Vries
BDD FOR AUTOMATING WEB APPLICATION TESTING Stephen de Vries www.continuumsecurity.net INTRODUCTION Security Testing of web applications, both in the form of automated scanning and manual security assessment
SysPatrol - Server Security Monitor
SysPatrol Server Security Monitor User Manual Version 2.2 Sep 2013 www.flexense.com www.syspatrol.com 1 Product Overview SysPatrol is a server security monitoring solution allowing one to monitor one or
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
Global Software Change Management for PVCS Version Manager
Global Software Change Management for PVCS Version Manager... www.ikanalm.com Summary PVCS Version Manager is considered as one of the leading versioning tools that offers complete versioning control.
Hypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
Continuous integration for databases using Redgate tools
Continuous integration for databases using Redgate tools Wie Sie die Microsoft SQL Server Data Tools mit den Tools von Redgate ergänzen und kombinieren können An overview 1 Continuous integration for
Pragmatic Version Control
Extracted from: Pragmatic Version Control using Subversion, 2nd Edition This PDF file contains pages extracted from Pragmatic Version Control, one of the Pragmatic Starter Kit series of books for project
Getting started with API testing
Technical white paper Getting started with API testing Test all layers of your composite applications, not just the GUI Table of contents Executive summary... 3 Introduction... 3 Who should read this document?...
Business Application Services Testing
Business Application Services Testing Curriculum Structure Course name Duration(days) Express 2 Testing Concept and methodologies 3 Introduction to Performance Testing 3 Web Testing 2 QTP 5 SQL 5 Load
Agile Software Development with Scrum. Jeff Sutherland Gabrielle Benefield
Agile Software Development with Scrum Jeff Sutherland Gabrielle Benefield Agenda Introduction Overview of Methodologies Exercise; empirical learning Agile Manifesto Agile Values History of Scrum Exercise:
HIRSCH Velocity Web Console Guide
HIRSCH Velocity Web Console Guide MAN012-1112 HIRSCH Velocity Web Console Guide MAN012-1112, November 2012 Version 1.1 Copyright 2012 Identive Group. All rights reserved. ScramblePad and ScrambleProx are
Workshop for WebLogic introduces new tools in support of Java EE 5.0 standards. The support for Java EE5 includes the following technologies:
Oracle Workshop for WebLogic 10g R3 Hands on Labs Workshop for WebLogic extends Eclipse and Web Tools Platform for development of Web Services, Java, JavaEE, Object Relational Mapping, Spring, Beehive,
Maven or how to automate java builds, tests and version management with open source tools
Maven or how to automate java builds, tests and version management with open source tools Erik Putrycz Software Engineer, Apption Software [email protected] Outlook What is Maven Maven Concepts and
TESTING FRAMEWORKS. Gayatri Ghanakota
TESTING FRAMEWORKS Gayatri Ghanakota OUTLINE Introduction to Software Test Automation. What is Test Automation. Where does Test Automation fit in the software life cycle. Why do we need test automation.
Agile Techniques for Object Databases
db4o The Open Source Object Database Java and.net Agile Techniques for Object Databases By Scott Ambler 1 Modern software processes such as Rational Unified Process (RUP), Extreme Programming (XP), and
E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote 2011. SSA-U Appendix 5 Testing and Approval Project: E-vote 2011
E-vote 2011 SSA-U Appendix 5 Testing and Approval Project: E-vote 2011 Change log Version Date Author Description/changes 0.1 26.10.09 First version Page 1 CONTENT 1. INTRODUCTION 3 2. TESTING PROCESS
Advanced Service Design
vcloud Automation Center 6.0 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition. To check for more recent editions
LECTURES NOTES Organisational Aspects of Software Development
LECTURES NOTES Organisational Aspects of Software Development Pedro Contreras Department of Computer Science Royal Holloway, University of London Egham, Surrey TW20 0EX, UK [email protected] 1. Introduction
Magento Search Extension TECHNICAL DOCUMENTATION
CHAPTER 1... 3 1. INSTALLING PREREQUISITES AND THE MODULE (APACHE SOLR)... 3 1.1 Installation of the search server... 3 1.2 Configure the search server for usage with the search module... 7 Deploy the
Continuous Integration: Put it at the heart of your development
Continuous Integration: Put it at the heart of your development Susan Duncan Tools Product Manager, Oracle 1 Program Agenda What is CI? What Does It Mean To You? Make it Hudson Evolving Best Practice For
We (http://www.newagesolution.net) have extensive experience in enterprise and system architectures, system engineering, project management, and
We (http://www.newagesolution.net) have extensive experience in enterprise and system architectures, system engineering, project management, and software design and development. We will be presenting a
BillQuick Web i Time and Expense User Guide
BillQuick Web i Time and Expense User Guide BQE Software Inc. 1852 Lomita Boulevard Lomita, California 90717 USA http://www.bqe.com Table of Contents INTRODUCTION TO BILLQUICK... 3 INTRODUCTION TO BILLQUICK
http://www.wakaleo.com [email protected] Java Software Quality Tools and techniques
Wakaleo Consulting O p t i m i z i n g y o u r s o f t w a r e d e v e l o p m e n t http://www.wakaleo.com [email protected] Java Software Quality Tools and techniques 1 Introduction Agenda tools
Firewall Builder Architecture Overview
Firewall Builder Architecture Overview Vadim Zaliva Vadim Kurland Abstract This document gives brief, high level overview of existing Firewall Builder architecture.
Towards Software Configuration Management for Test-Driven Development
Towards Software Configuration Management for Test-Driven Development Tammo Freese OFFIS, Escherweg 2, 26121 Oldenburg, Germany [email protected] Abstract. Test-Driven Development is a technique where
The Deployment Pipeline
The Deployment Pipeline (Extending the range of Continuous Integration) Dave Farley 2007 Continuous Build A core practice in Agile development projects is the use of Continuous Integration. CI is a process
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
Improving software quality with an automated build process
Software architecture for developers What is software architecture? What is the role of a software architect? How do you define software architecture? How do you share software architecture? How do you
Unit 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
EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.
WA2088 WebSphere Application Server 8.5 Administration on Windows Student Labs Web Age Solutions Inc. Copyright 2013 Web Age Solutions Inc. 1 Table of Contents Directory Paths Used in Labs...3 Lab Notes...4
Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation
Practicing Continuous Delivery using Hudson Winston Prakash Oracle Corporation Development Lifecycle Dev Dev QA Ops DevOps QA Ops Typical turn around time is 6 months to 1 year Sprint cycle is typically
Monitoring Oracle Enterprise Performance Management System Release 11.1.2.3 Deployments from Oracle Enterprise Manager 12c
Monitoring Oracle Enterprise Performance Management System Release 11.1.2.3 Deployments from Oracle Enterprise Manager 12c This document describes how to set up Oracle Enterprise Manager 12c to monitor
Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON
Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, [email protected] Writing a custom web
Using WhatCounts Publicaster Edition To Send Transactional Emails
Using WhatCounts Publicaster Edition To Send Transactional Emails 1 DEFINITION Transactional email by definition is any message in which the primary purpose facilitates an already agreed-upon transaction
OpenSta OpenSource for Web Load, HTTP Stress & Performance testing
Magazine OpenSta OpenSource for Web Load, HTTP Stress & Performance testing Author: Łukasz Smolarski About the Author: Łukasz Smolarski : Graduated from Higher School of Business-National Louis University
by Jonathan Kohl and Paul Rogers 40 BETTER SOFTWARE APRIL 2005 www.stickyminds.com
Test automation of Web applications can be done more effectively by accessing the plumbing within the user interface. Here is a detailed walk-through of Watir, a tool many are using to check the pipes.
Checklist for Web Application Testing
Checklist for Web Application Testing July 27, 2004 Submitted By Infosys Technologies Limited Author Setumadhav Kulkarni ([email protected]) Web Testing Checklist.doc Page 1 of 9 COPYRIGHT
Specify the location of an HTML control stored in the application repository. See Using the XPath search method, page 2.
Testing Dynamic Web Applications How To You can use XML Path Language (XPath) queries and URL format rules to test web sites or applications that contain dynamic content that changes on a regular basis.
Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development
Ingegneria del Software Corso di Laurea in Informatica per il Management Agile software development Davide Rossi Dipartimento di Informatica Università di Bologna The problem Efficiency: too much effort
Java course - IAG0040. Unit testing & Agile Software Development
Java course - IAG0040 Unit testing & Agile Software Development 2011 Unit tests How to be confident that your code works? Why wait for somebody else to test your code? How to provide up-to-date examples
Effektiver Tool-Einsatz
Effektiver Tool-Einsatz für Scrum-Projekte im Java-Umfeld Agile Softwareentwicklung Werte, Prinzipien, Methoden und Prozesse 13. OBJEKTspektrum Information Days 29. April 2010, München Gerhard Müller,
Integrated Virtual Debugger for Visual Studio Developer s Guide VMware Workstation 8.0
Integrated Virtual Debugger for Visual Studio Developer s Guide VMware Workstation 8.0 This document supports the version of each product listed and supports all subsequent versions until the document
Jenkins on Windows with StreamBase
Jenkins on Windows with StreamBase Using a Continuous Integration (CI) process and server to perform frequent application building, packaging, and automated testing is such a good idea that it s now a
An Example Checklist for ScrumMasters
An Example Checklist for ScrumMasters Michael James ([email protected]) 14 September 2007 (Revised 24 July 2012) A Full Time Facilitator? An adequate ScrumMaster can handle two or three teams at a time.
