Analysis of the Test Driven Development by Example

Size: px
Start display at page:

Download "Analysis of the Test Driven Development by Example"

Transcription

1 Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 / Accepted: July 9, 2013 / Published: December 15, Abstract: Traditional testing methods are based on testing of already existing code and functionality, TDD (Test Driven Development) approach writes first a test and then implementation code. These papers describe TDD methodology by developing an example step by step, and commenting each of steps. TDD methodology claims that quality of delivered software is improved even a total time used for development is shorter., and cutting of development expenses and shortening development time, would not affect final software product quality. Research and example projects results differs significantly, what means that involved IT (Information Technology) professionals skills and experience can be a crucial factor, but there is no doubt that TDD approach delivers better test coverage of implementation code and introduces fewer software defects. However, this approach also uses approximately more than 15% time for development. Key words: Test DRIVEN Development, TDD, unit test, automated test, NUnit. 1. Introduction The test-first concept has been introduced in the Extreme Programming, an agile development methodology created by Kent Beck. Extreme Programming development method originate from the experience that Kent Beck collected by working as project manager 1996 on the Chrysler C3 project. In 1999 he wrote a book Extreme Programming Explained, where he presented this methodology that is combined from already known best practice principles. Kent Beck is also known as designer of the automatic unit test driving framework known as xunit framework, or today even better known as JUnit,automatic unit test framework, used by Java programmers or NUnit, automatic unit test framework, used by.microsoft,.net programmers (C# programmers for example). In 2003 Addison-Wesley published another Kent Beck book Test Driven Development by Example, Radoslav Stojic, associate professor, research fields: software engineering, computer games, flight simulators. Corresponding author: Aleksandar Bulajic, Ph.D. candidate, research field: information technology. aleksandar.bulajic.1145@fit.edu.rs. that attracts more attention to the test-first concept. The basic idea behind the Test Driven Development is developing a test before implementation of requirement. The Section, Test Driven Development, describes this approach, in details. The next Test Driven Development Example includes a fully functional example developed in C#. The Section Conclusion is a short discussion and conclusion. All presented examples are developed by Visual Studio 2010 and C# and executed by using NUnit automated test framework. 2. Test Driven Development TDD (Test Driven Development) rules defined by Kent Beck [1] are very simple: (1) Never write a single line of code unless you have a failing automated test; (2) Eliminate duplications. The first principle is fundamental for TDD approach because this principle introduces technique where a developer first writes a test and then implementation code. Another important consequence of this rule is that

2 6 test development is driving implementation. Implemented requirements are by default testable; otherwise, it will not be possible to develop a test case. Second principle is today called a Refactoring, or improving a design of existing code. Refactoring also means implementing a modular design, encapsulation, and loose coupling, the most important principles of Object-Oriented Design, by continues code reorganization and without changing existing functionality. 2.1 Test Driven Development Work-Flow Fig. 1 illustrates a Test Driven Development process: Requirement Requirements in case of the Extreme Programming and Agile development are managed differently than in a case of the traditional approach. Traditional approach can use a lot of time and huge communication overhead to specify all requirements details and requirements relations and interactions. Extreme programming splits development in the short iterations that can last from one to three or four weeks. Each iteration delivers fully functional software that adds new functionality or improves existing. A short iteration requires that requirements complexity is Fig. 1 Test Driven Development workflow diagram. reduced by dividing in the parts that can be completed in the short development time. A short iteration requires also that development starts very early, and there is no time to wait that whole requirement specification is completed. Many Agile and Extreme Programming sites are offering idealized pictures of the requirement management based on the user stories, but the time necessary to understand requirement cannot be avoided. This means that even it is possible to start development from the short user story, communication overhead related to the understanding of the requirement details cannot be avoid. The most used agile development and Extreme Programming argument why it is not necessary to wait for full requirement specification is that requirements are subject of changes. Development is the best way to validate requirements understanding. Supporters of Agile development often mentioned that requirement changes are welcome. Even requirements are often changed and changes cannot be avoided also in the short development projects, I am strongly in doubt that changes are welcome. Design of the development code is closely connected to requirements and each requirement changes could require more or less work to adapt existing solution. Always keep in mind that each methodology interest is to be used and implement improvements based on the collective experience and best practice. This means that especially methodologies that pretend on using attribute new will claim that such approach solves many old methodologies issues. Authors own experience is that new are very often improving an old methodology usage, but also introducing new issues and new complexities. However, traditional methodology approach or TDD methodology approach, both need to know about requirements in advance. The differences are in the time used for specifying requirements and also in the requirement size and complexity. TDD requires less time and starts implementation as soon as some parts of

3 7 requirements are known. Requirement understanding is validated during development and at the end of iteration Write Automated Test This is implementation of the first TDD rule: Never write a single line of code unless you have a failing automated test. This means that before any line of the requirement implementation code is written, an automated test code is written. Automated test will fail because there is not existing implementation code. Writing an automated test is not a spontaneous process. A test is chosen from a tests list that is already created during brainstorm sessions. This list contains a list of tests that verifies requirement and describes the completion criteria [2]. There are few important things that shall be remembered [2]: (1) The first test should not be the first test on the list. Developer is free to write code for any test on the list in any possible order; (2) The test list is not a static and adding or changing tests is welcome; (3) The test shall be as simple as possible. Developer should remember that Unit test is testing a particular class or a particular method inside of the same class; (4) The new test shall fail; otherwise there is no reason to develop a test. The rule number 3 is not always possible to respect because in the situation when there are involved database operations or Web services or GUI (Graphical User Interface) tests, a test implementation can be complex Execute Automated Test Because implementation code is not yet written and there is existing only empty implementation method to avoid compiler errors, a test will always fail. The automated testing tool is precondition to implement TDD. All tests or particular test shall be possible to execute automatically. This requirement is very important because developing small tests, step by step, can suddenly end by a test suite or test suites that contain hundreds of tests that shall be executed each time when implementation code is changed or new test is added to the test suite. This kind of testing is called Regression Test and this is very important step in the Quality Assurance process. Regression Test shall confirm that new introduced changes or new added functionality does not cause already existing functionality to fail. Executing each of these hundreds tests manually, when code is changed, would take too much time and never be possible, because the TDD methodology assumes frequent code changes. Today are mostly used code-driven testing frameworks that are known as xunit frameworks collection. These are open source solutions based on Kent Beck design of SUnit, Smalltalk test tool. Kent Beck and Erich Gamma ported SUnit to Java and called it JUnit. Different versions of this automated test framework are available for different programming languages, as for example NUnit for.net and CppUnit for C++. The most important advantage of these test frameworks is possibility to execute whole regression test suite at once by executing a class where all these tests are stored as separate methods. Each test can share common preconditions for successful test execution and in the xunit jargon this is called Test Fixture, as well as clean-up procedure that fallback changes and returns tests to the initial state. Assertions are functions that test a result of each test execution. There are available different assertion functions that can test positive results as well as failures. As input parameters to assertion function is sent expected result that is usually hard coded and actual result received after test execution. Result of this comparison is true or false and also the test result, success or failure. The results are presented visually, by red and green bar s that are changing color according to a test result. If only one test is executed and it executed

4 8 successfully there will be a green bar showing final result as success, otherwise there will be a red bar, showing a failed test. If there are executed more than one tests in the same test run, if only one test fails, the red bar will indicate that whole test run fails, even all other tests results were successful and produced internally green flags. This is important to remember during execution of the regression tests when all tests are executed at once. The red bar shows that new version introduced changes that break existing functionality. The testing is considered successful when all tests execution is successful and result is presented visually by green bar. This also means that each test design shall be independent of other tests execution results, what is not always easy job, especially if there are involved data stored in the external storages, as for example databases. Even Unit test is defined as test of the smallest possible testing unit and primary purpose is testing a method inside of the same class and is recommended to avoid using it to test database, interfaces or across components boundaries, in praxes is often Unit test frameworks used for any kind of testing. Complex tests can lead to a complex and obscure test case design Write Implementation Code If test fails then Write Implementation Code should provide implementation code that makes a corresponding test case to execute successfully. The TDD considers a passing test not useful and unnecessary. New test shall always fail and cause changes in the implementation code. These changes can introduce writing of new implementation code or changes in existing code. The TDD recommends initially writing of very simple implementation code and keeping of code design as simple as possible. This means that implementation code shall be as simple as it is enough to produce successful execution of corresponding test case. Newkirk and Vorontsov [2] describe a set of check points that best describes recommendation that implementation code should do no more and no less: The code is appropriate for intended audience; The code passes all the tests; The code communicates everything it needs to; The code has the smallest number of classes; The code has the smallest number of methods. The highest priority according to authors is the first criteria that code is appropriate for audience and the next priority is that code passes all the tests and then the third priority is code communication. Implementation of recommendations such as source code should be simple, sufficient and elegant is always difficult to understand and very difficult to achieve. The simple reason is that a code is still mostly written by human beings, as well as solutions are designed by human beings. This means that different people will probably design and solve even most simple requirement differently. They will use different names for classes, methods, parameters and variables, as well as different structures and data types. They would probably implement an error handling differently too. The following is my own list of recommendations to write a code: Document method purpose and parameters by writing sufficient comments; Document each variable purpose and algorithms by writing sufficient comments; Write code as simple as possible and always keep in mind that someone other would probably maintain your code; Implement error handling and report properly (log) any kind of error; If used a pattern, document which pattern you believe a current code belongs. Properly documenting code is very important even in case if it is your own code that is not supposed to be maintained by other people. After some time we are going to forget code purpose and we cannot understand it easy why we wrote that piece of code. Simplicity means that developer shall avoid complex

5 9 and non standard solution if it is not necessary, and assume that these who would maintain a code probably do not have the same knowledge and experiences as code initial author. Implementation of error handling makes code robust. If code fails or cannot satisfy required functionality, message should report a reason to a caller Refactoring Although refactoring code has been done informally for years, William Opdyke s 1992 Ph.D. dissertation [3].is the first known paper to specifically examine refactoring, [4].although all the theory and machinery have long been available as program transformation systems [5]. Removing duplicate code today is better known as code refactoring. Code refactoring has been widely popular in recent years and very popular book written by Martin Fowler book Refactoring Improving the Design of Existing Code [4] still can be used as a reference book that contains a long list of refactoring techniques. There are available different definitions and all agree that refactoring is improving design of existing code. Refactoring does not add new functionality or change old one. Refactoring eliminates duplicates, makes code more readable and improves code internal structure. Refactoring process means refactoring of a test case code and a refactoring of implementation code. As well as implementation, code can introduce duplicates, so can test case too. Test case initializations, preconditions and clean-up procedures could be shared between more test cases. This is a good start point and moving these code lines in separate and shared methods would eliminate code duplication. Test case specific requirements can make code complex, and if not handled properly, this code can introduce too many switch or if statements and code branches, to eliminate duplicate code. In this case is important to keep common sense and do not make code more complex then it is necessary. Refactoring process would probably start when there are more test cases available. It depends of the test cases and source code quality, as well as of the developer skills and experiences. 2.2 When to Stop TDD Iterations If all tests are green (successfully executed) then on the Figure: Test Driven Development workflow diagram are available three paths: (1) Refactoring; (2) Write Automated Test; (3) Stop Further Development. The first two are described in previous Sections. The third possibility means that application development is completed. Some authors are calling a Red, Green and Refactor sequence a TDD pattern. A decision to stop further development can be made when all test cases from a test case list are implemented, and all tests passed, and all test code is covered by implementation code. This means that all requirements are implemented and there is no reason to use more time and resources. However, by inspecting source code it is probably possible to find a way to improve it, and make it more robust, report errors better and more understandable. When to stop depends of the available time and resources. If there is more time, it can be used to develop more test cases or to document code by inserting comments and editing existing comments. If time is a critical resource, then green bar after whole test suite execution is a best indication to move forward and declare application ready. 3. TDD example This example is inspired by James W. Newkirk and Alexei A. Vorontsov book, Test-Driven Development in Microsoft.NET, [2]. Reason why we choose to use and adapt this example is simple. Kent Beck and Martin Fowler, as well as other computer science experts were part of a team that reviewed this book and wrote foreword or were part of a book technical team. Example in these papers correct a small error from this

6 10 book example as well as it recommends different solution. Code, implementation and refactoring of test cases differ too. This example is an implementation of a stack structure that can store and return objects by using First In, First Out, (FIFO) approach. The very first step after understanding a requirement is to make a list of test cases. This is just a brainstorming process and test cases are written down without sorting it in any particular order. For example this list can contain following test cases: (1) Push one object on empty Stack and then pull an object from a Stack. Verify that pulled object is equal to pushed object; (2) Push three objects on empty Stack and then pull all three objects from a Stack, one by one. Verify that objects are pulled in correct order (FIFO); (3) Create an empty Stack. Verify that a Stack is empty; (4) Push an object on a Stack. Verify that a Stack is not empty; (5) Remove all elements from a Stack and verify that Stack is empty. And so on, and so on. Refer to Write Automated Test Section for a recommendation rules for writing automated test list. It is important remember that this list is not a static and can be extended by additional tests any time, and order of implementation of any of test from this list does not depends of any place where test is written down. Developer decides which next test will be implemented. I decided to start implementation by test number 3, verification that Stack is empty. I had created TestStack class that is a test class used for testing of a Stack class where a Stack implementation code is: [TestFixture] class TestStack public void isempty() Stack stack = new Stack(); Console.WriteLine("Test: isempty()\n"); Assert.IsTrue (stack.isempty()); Build of this code will fail because a Stack class does not exist yet and compiler issues an error. We need to implement class and according to TDD methodology, implement as little as possible: /* TDD Example Stack class isempty method returns false */ return false; Now we can build and execute a test. NUnit 2.6 framework is used to execute this test: Fig. 2 shows that test fails and this is a good sign according to TDD approach. Now I am going to make this test execute successfully and implement just enough code to satisfy it: /* TDD Example Stack class is Empty method returns true */ return true; I am going again to test it again and now test executed successfully and green bar just confirms that test case received expected result: Fig. 3 shows that test has been executed successfully. If followed a TDD pattern Red-Green-Refactor pattern, now is time for code refactoring. Even whole code looks very simple; it is possible to improve design. For

7 11 Fig. 2 TDD Example NUnit 2.6 isempty() test failed. Fig. 3 TDD Example NUnit 2.6 isempty() test success. example remove hard coded true and false bool values and replace by a variable in the Stack class. We can also decide to develop another test, for example test number 4 on the test list, Push an object on a Stack. Verify that a Stack is not empty : Following is updated TestStack class code and add a new test case pushone(): /* TDD Example TestStack class pushone method returns false */ [TestFixture] class TestStack public void isempty() Stack stack = new Stack(); Console.WriteLine("Test: isempty()\n"); Assert.IsTrue (stack.isempty()); public void pushone() // create Stack object Stack stack = new Stack(); // create data on Stack stack.push("first element"); // test expected result Assert.IsFalse(isEmpty, "After push isempty shall be false"); Change in the TestStack class requires a minimal code implementation in the class: /* TDD Example TestStack class pushone empty method */ return true; public void push(object element) I am going to test again by using NUnit 2.6 tools and I got red bar and error message: After push isempty shall be false Expected: false; But was: True; Now is time to implement solution that makes test case execute successfully. I created a stack object as an instance of ArrayList class and add code to the push method: /* Figure: TDD Example TestStack class pushone method implemented */ ArrayList stack = new ArrayList();

8 12 return true; public void push(object element) stack.add(element); Now is time to execute a test again: Fig. 4 shows that test case failed again even Stack should not be empty. In this case it is easy to understand that test case failed because isempty() method returns always the same hard-coded value, We are going to change implementation code again: /* TDD Example updated isempty() method */ ArrayList stack = new ArrayList(); if (stack.count > 0) return false; else return true; public void push(object element) stack.add(element); Fig. 4 TDD Example NUnit 2.6 ipushone() test failed again. After executing test again all test cases are working properly and there is a green bar confirming that test cases received expected results. Now is time for code refactoring and we will start from the TestStack class. In this class is very easy notice that stack = new Stack(); code is duplicate and I will remove these duplicates: /* TDD Example Refactoring TestStack class */ [TestFixture] class TestStack Stack stack; public void isempty() stack = new Stack(); Assert.IsTrue (stack.isempty()); public void pushone () // create Stack object stack = new Stack(); // create data on Stack stack.push("first element"); bool isempty = stack.isempty(); // test expected result Assert.IsFalse(isEmpty, "After push isempty shall be false"); Why I just moved Stack stack; declaration from a test cases but did not create a common Stack object by Stack stack = new Stack();? Answer is, if I did, it can introduce potentially error-prone situation where test case can fail if test cases order of execution is changed. If object is common for both cases then if isempty() test case is executed after pushone() test case will fail, because Stack object will not be empty and there will be at least one object on the Stack.

9 13 This will break another best practice rule. Execution of each test case shall be independent of execution of any other test case. You can also make a less perfect rule by adding inside of the same test suite. What about Stack class? I am going to remove if statement from isempty() method and remove also hard coded true and false values: Here is result: /* TDD Example Refactoring Stack class */ ArrayList stack = new ArrayList(); return!(stack.count > 0); public void push(object element) stack.add(element); What I like is that hard-coded values and if statement disappeared and there is just one line of code. What I do not like is not (exclamation mark) used in the return statement. This can be a source of future errors because human being brain could be confused by logical statements where not is used. 4. Conclusions This example shows how implementation is driven by test cases development. This approach without any doubts provides better test coverage of implementation code. Continues code refactoring and eliminating of duplicate code requires continues source code inspection and changes that should improve internal code design. Developer learns about code internal structure and becomes confident to make changes. If changes are necessary, than developer impact analysis and estimations are in this case much more reliable. However, claim that TDD improves internal software design and makes further changes and maintenance easier according to research projects cannot be confirmed. It seems that design primary depends of developer skills and experience, as well as of implementation of best practice and internal standards Short development iterations discover requirements misunderstandings very early and reduce expenses for correcting these misunderstandings. This approach raised very important question about final software product quality, especially because a TDD approach claims that total time used for development is shorter. This means that cutting of development expenses and shortening development time, would not affect final software product quality. Test-first approach leads to development of a small portion of code and errors are discovered quickly without using debugger. Implementations code has fewer defects what means that more time can be used for development of new features and functionalities. Conclusion is that TDD approach provides better test coverage of implementation code and introduces fewer software defects, what means that delivered software has better quality, than software delivered by traditional approach. Claim that TDD approach is using the same amount or less time for project development cannot be confirmed and according to research papers TDD approach uses approximately 15% more time for development Test code needs to be maintain, as all other source code, and in case of requirement changes it can be daunting task to update huge number of test cases. References [1]. K. Beck, Test Driven Development by Example, Addison-Wesley professional, [2]. J.W. Newkirk, A.A. Vorontsov, Test-Driven Development in Microsoft.NET, Microsoft Press, [3]. W.F. Opdyke, refactoring/opdyke-thesis.ps.z, [4]. M. Fowler, Refactoring Improving the Design of Existing Code, Addison-Wesley, [5]. Wikipedia_Code_Refactoring, Code refactoring,

Test First Software Development

Test First Software Development Test First Software Development Jacob Kristhammar Roger Schildmeijer D04, Lund Institute of Technology, Sweden {d04jk d04rp}@student.lth.se 2008-02-06 Abstract In this in-depth study we will try to explain

More information

An Introduction to Unit Testing

An Introduction to Unit Testing An Introduction to Unit Testing Brian Henderson Programmer Analyst, Collaborative Data Services bhenders@fhcrc.org CDS Seminars & Training Classes CDS Brownbag seminars Nov 28 th - SharePoint Tips & TricksSharePoint

More information

Object Oriented Software Design - I

Object Oriented Software Design - I Object Oriented Software Design - I Unit Testing Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa November 28, 2011 G. Lipari (Scuola Superiore Sant Anna) Unit Testing November

More information

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do?

Agile Manifesto & XP. Topics. Rapid software development. Agile methods. Chapter ) What is Agile trying to do? Topics 1) What is trying to do? Manifesto & XP Chapter 3.1-3.3 2) How to choose plan-driven vs? 3) What practices go into (XP) development? 4) How to write tests while writing new code? CMPT 276 Dr. B.

More information

Introduction to Extreme Programming

Introduction to Extreme Programming Introduction to Extreme Programming References: William Wake, Capital One Steve Metsker, Capital One Kent Beck Robert Martin, Object Mentor Ron Jeffries,et.al. 12/3/2003 Slide Content by Wake/Metsker 1

More information

Tuesday, November 15. Testing

Tuesday, November 15. Testing Tuesday, November 15 1 Testing Testing Waterfall model show testing as an activity or box In practice, testing is performed constantly There has never been a project where there was too much testing. Products

More information

Extreme programming XP 6

Extreme programming XP 6 Extreme programming XP 6 Planning Game 3 Planning Game Independent: Stories should be as independent as possible. When thinking of independence it is often easier to think of order independent. In other

More information

Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck

Introduction to Extreme Programming. Extreme Programming is... Benefits. References: William Wake, Capital One Steve Metsker, Capital One Kent Beck Introduction to Extreme Programming References: William Wake, Capital One Steve Metsker, Capital One Kent Beck Extreme Programming is... Lightweight software development method used for small to medium-sized

More information

Unit Testing with JUnit and CppUnit

Unit Testing with JUnit and CppUnit Unit Testing with JUnit and CppUnit Software Testing Fundamentals (1) What is software testing? The process of operating a system or component under specified conditions, observing or recording the results,

More information

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages No Source Code : Software Testing Black-Box Testing Test-Driven Development No access to source code So test cases don t worry about structure Emphasis is only on ensuring that the contract is met Specification-Based

More information

JUnit in EDA Introduction. 2 JUnit 4.3

JUnit in EDA Introduction. 2 JUnit 4.3 Lunds tekniska högskola Datavetenskap, Nov 25, 2010 Görel Hedin EDA260 Programvaruutveckling i grupp projekt Labb 3 (Test First): Bakgrundsmaterial JUnit in EDA260 1 Introduction The JUnit framework is

More information

EVALUATION COPY. Test-Driven Development Using NUnit and C# Student Guide Revision 4.6. Unauthorized reproduction or distribution is prohibited.

EVALUATION COPY. Test-Driven Development Using NUnit and C# Student Guide Revision 4.6. Unauthorized reproduction or distribution is prohibited. Test-Driven Development Using NUnit and C# Student Guide Revision 4.6 Object Innovations Course 4105 Test-Driven Development Using NUnit and C# Rev. 4.6 Student Guide Information in this document is subject

More information

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing Black Box Testing EEC 521: Software Engineering Software Testing Black-Box Testing Test-Driven Development Also known as specification-based testing Tester has access only to running code and the specification

More information

Risk-Based Testing & Test-Driven Development

Risk-Based Testing & Test-Driven Development Risk-Based Testing & Test-Driven Development Minsoo Ryu Hanyang University What is Risk? A factor that could result in a future negative consequence; usually expressed as impact and likelihood (ISTQB Glossary)

More information

COMP 354 TDD and Refactoring

COMP 354 TDD and Refactoring COMP 354 TDD and Refactoring Greg Butler Office: EV 3.219 Computer Science and Software Engineering Concordia University, Montreal, Canada Email: gregb@cs.concordia.ca Winter 2015 Course Web Site: http://users.encs.concordia.ca/

More information

Software Design and Analysis CSCI 2040

Software Design and Analysis CSCI 2040 Software Design and Analysis CSCI 2040 Introduce two important development practices in the context of the case studies: Test-Driven Development Refactoring 2 Logic is the art of going wrong with confidence

More information

EECS 4313 Software Engineering Testing

EECS 4313 Software Engineering Testing EECS 4313 Software Engineering Testing Topic 03: Test automation / JUnit - Building automatically repeatable test suites Zhen Ming (Jack) Jiang Acknowledgement Some slides are from Prof. Alex Orso Relevant

More information

COURSE 11 DESIGN PATTERNS

COURSE 11 DESIGN PATTERNS COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/

More information

Test-driven Development with Vulcan.NET and Visual Objects

Test-driven Development with Vulcan.NET and Visual Objects welcomes you to the DevFest 2007 Session Test-driven Development Speaker Michael Fischer Copyright 2007 Fischer & Consultants GmbH (F&C) Martinstrasse 1 44137 Dortmund www.appfact.com Kontakt: Michael

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 3 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2016 Recap Requirements Engineering functional / non-functional requirements Elicitation,

More information

Levels of Testing Testing Methods Test Driven Development JUnit. Testing. ENGI 5895: Software Design. Andrew Vardy

Levels of Testing Testing Methods Test Driven Development JUnit. Testing. ENGI 5895: Software Design. Andrew Vardy Testing ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland March 6, 2017 Outline 1 Levels of Testing 2 Testing Methods 3 Test Driven Development

More information

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through A few more things about Agile and SE Could help in interviews, but don t try to bluff your way through 1 Refactoring How to do it, where it fits in http://www.cse.ohio-state.edu/~crawfis/cse3902/index.htm

More information

Practical Objects: Test Driven Software Development using JUnit

Practical Objects: Test Driven Software Development using JUnit 1999 McBreen.Consulting Practical Objects Test Driven Software Development using JUnit Pete McBreen, McBreen.Consulting petemcbreen@acm.org Test Driven Software Development??? The Unified Process is Use

More information

Test Driven Development (TDD)

Test Driven Development (TDD) Test Driven Development (TDD) Test Driven Development Introduction Good programmers write code, great programmers write tests Never, in the field of programming, have so many owed so much to so few - Martin

More information

Levels of Testing Testing Methods Test Driven Development JUnit. Testing. ENGI 5895: Software Design. Andrew Vardy

Levels of Testing Testing Methods Test Driven Development JUnit. Testing. ENGI 5895: Software Design. Andrew Vardy Testing ENGI 5895: Software Design Andrew Vardy Faculty of Engineering & Applied Science Memorial University of Newfoundland March 6, 2017 Outline 1 Levels of Testing 2 Testing Methods 3 Test Driven Development

More information

Chapter 15. Software Testing The assert Statement

Chapter 15. Software Testing The assert Statement 177 Chapter 15 Software Testing We know that a clean compile does not imply that a program will work correctly. We can detect errors in our code as we interact with the executing program. The process of

More information

Testing with JUnit 1

Testing with JUnit 1 Testing with JUnit 1 What are we doing here? Learning the mechanics of how to write tests in Java using JUnit Without considering issues like coverage Using JUnit is sometimes called unit testing Unit

More information

Scrums effects on software maintainability and usability

Scrums effects on software maintainability and usability Scrums effects on software maintainability and usability Gustav Ernberg guser350@student.liu.se January 19, 2015 Synposis I have been working as a web developer with advanced web applications on a number

More information

Test Driven Development. Software Engineering, DVGC18 Faculty of Economic Sciences, Communication and IT Tobias Pulls and Eivind Nordby

Test Driven Development. Software Engineering, DVGC18 Faculty of Economic Sciences, Communication and IT Tobias Pulls and Eivind Nordby Test Driven Development Faculty of Economic Sciences, Communication and IT 2010-09-03 Tobias Pulls and Principle Use Executable Specifications Test Driven Development (TDD) xunit Behaviour Driven Development

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 3 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2013 Recap Requirements Engineering user- / system requirements functional- / non-functional

More information

כללי Extreme Programming

כללי Extreme Programming פיתוח מער כות תוכנה מבוססות Java כללי Extreme Programming אוהד ברזילי ohadbr@tau.ac.il Based on: K. Beck: Extreme Programming Explained. E. M. Burke and B.M. Coyner: Java Extreme Programming Cookbook.

More information

Test Driven Development TDD

Test Driven Development TDD Test Driven Development TDD Testing Testing can never demonstrate the absence of errors in software, only their presence Edsger W. Dijkstra (but it is very good at the latter). Testing If it's worth building,

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 8 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2016 Last Week State machines Layered Architecture: GUI Layered Architecture: Persistency

More information

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg

XP: Planning, coding and testing. Practice Planning game. Release Planning. User stories. Annika Silvervarg XP: Planning, coding and testing Annika Silvervarg Practice Planning game Goal: schedule the most important tasks Which features to implement in what order Supports: simple design, acceptance testing,

More information

Test suites Obviously you have to test your code to get it working in the first place You can do ad hoc testing (testing whatever occurs to you at

Test suites Obviously you have to test your code to get it working in the first place You can do ad hoc testing (testing whatever occurs to you at JUnit Test suites Obviously you have to test your code to get it working in the first place You can do ad hoc testing (testing whatever occurs to you at the moment), or You can build a test suite (a thorough

More information

E xtr B e y CS R m oy 6704, e T a P n a Spring r n o d J g ia n 2002 r g a S m hu m ing

E xtr B e y CS R m oy 6704, e T a P n a Spring r n o d J g ia n 2002 r g a S m hu m ing Extreme Programming CS 6704, Spring 2002 By Roy Tan and Jiang Shu Contents What is Extreme Programming (XP)? When to use XP? Do we need yet another software methodology? XP s rules and practices XP s relation

More information

Testing and Debugging

Testing and Debugging Testing and Debugging Comp-303 : Programming Techniques Lecture 14 Alexandre Denault Computer Science McGill University Winter 2004 March 1, 2004 Lecture 14 Comp 303 : Testing and Debugging Page 1 Announcements...

More information

XP Evolution Rachel Davies

XP Evolution Rachel Davies XP Evolution Rachel Davies Sept 10, 2005 2005 Agile Experience Ltd. 1 What is XP? 1.eXtreme Programming (XP) is so named because it raises practices that improve code quality to extreme levels 2. XP is

More information

1 of 5 3/28/2010 8:01 AM Unit Testing Notes Home Class Info Links Lectures Newsgroup Assignmen [Jump to Writing Clear Tests, What about Private Functions?] Testing The typical approach to testing code

More information

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore Lecture 04 Software Test Automation: JUnit as an example

More information

02161: Software Engineering I

02161: Software Engineering I 02161: Software Engineering I Week 9: Version Control, Software Development Process, and Project Introduction Hubert Baumeister Informatics and Mathematical Modelling Technical University of Denmark Spring

More information

Unit Testing and JUnit

Unit Testing and JUnit Unit Testing and JUnit Moinul Hossain CS 791Z 03/02/2015 Outline What is Software Testing? What and Why Unit Testing? JUnit JUnit features and Examples Test Driven Development (TDD) What is Software Testing?

More information

Lab Exercise Test First using JUnit

Lab Exercise Test First using JUnit Lunds tekniska högskola Datavetenskap, Nov, 2017 Görel Hedin/Ulf Asklund EDAF45 Programvaruutveckling i grupp projekt Lab Exercise Test First using JUnit Goal This lab is intended to demonstrate basic

More information

2014 Intelliware Development Inc.

2014 Intelliware Development Inc. What You ll Learn in this Presentation: The basics of user stories. How user stories fit into the overall Agile planning process. How to write a user story. A story card example 2 Why is it so Difficult

More information

Chapter 8 Software Testing. Chapter 8 Software testing

Chapter 8 Software Testing. Chapter 8 Software testing Chapter 8 Software Testing 1 Topics covered Introduction to testing Stages for testing software system are: Development testing Release testing User testing Test-driven development as interleave approach.

More information

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010 PACIFIC NW 28TH ANNUAL SOFTWARE QUALITY CONFERENCE October 18th 19th, 2010 Conference Paper Excerpt from the CONFERENCE PROCEEDINGS Permission to copy, without fee, all or part of this material, except

More information

Automated testing in Agile SW development

Automated testing in Agile SW development T-76.5613 Software Testing and Quality Assurance Automated testing in Agile SW development Seppo Sahi SoberIT seppo.sahi@soberit.hut.fi 2.10.2006 Introduction Agile methods have strong emphasis on practices

More information

McCa!"s Triangle of Quality

McCa!s Triangle of Quality McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency

More information

Unit Testing In Python

Unit Testing In Python Lab 13 Unit Testing In Python Lab Objective: One of the hardest parts of computer programming is ensuring that a program does what you expect it to do. For instance, a program may fail to meet specifications,

More information

So, You Want to Test Your Compiler?

So, You Want to Test Your Compiler? So, You Want to Test Your Compiler? Theodore S. Norvell Electrical and Computer Engineering Memorial University October 19, 2005 Abstract We illustrate a simple method of system testing by applying it

More information

Main concepts to be covered. Testing and Debugging. Code snippet of the day. Results. Testing Debugging Test automation Writing for maintainability

Main concepts to be covered. Testing and Debugging. Code snippet of the day. Results. Testing Debugging Test automation Writing for maintainability Main concepts to be covered Testing and Debugging Testing Debugging Test automation Writing for maintainability 4.0 Code snippet of the day public void test() { int sum = 1; for (int i = 0; i

More information

Test Driven Development (TDD), and Working with Legacy Code Using C# Workshop ( 4 days)

Test Driven Development (TDD), and Working with Legacy Code Using C# Workshop ( 4 days) Test Driven Development (TDD), and Working with Legacy Code Using C# Workshop ( 4 days) HOTEL DUBAI GRAND April 16 to 19-2018 Monday to Thursday ) (4 days) 9 am to 4 pm ISIDUS TECH TEAM FZE PO Box 9798

More information

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics csci2600/

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics  csci2600/ Outline Principles of Software (CSCI 600) Spring 018 http://www.cs.rpi.edu/academics/courses/spring18/csci600/ Konstantin Kuzmin, kuzmik@cs.rpi.edu Office hours: Monday and Thursday 4:00 pm - 5:30 pm Mailing

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 4 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2017 Recap week 1: Introduction week 2: Requirements: Domain model, Use Cases week

More information

What's that? Why? Is one "better" than the other? Terminology. Comparison. Loop testing. Some experts (e.g. Pezze & Young) call it structural testing

What's that? Why? Is one better than the other? Terminology. Comparison. Loop testing. Some experts (e.g. Pezze & Young) call it structural testing Week 9: More details of white-box testing What is it? Comparison with black-box testing What we should not validate Automated versus interactive testing Testing conditional and loop constructs COMP 370

More information

JUnit 4 and Java EE 5 Better Testing by Design

JUnit 4 and Java EE 5 Better Testing by Design JUnit 4 and Java EE 5 Better Testing by Design Kent Beck Alberto Savoia Agitar Software Inc. www.agitar.com TS-1580 2006 JavaOne SM Conference Session TS-1580 Simplifying Developer Testing JUnit 4 further

More information

Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach

Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach Building in Quality: The Beauty of Behavior Driven Development (BDD) Larry Apke - Agile Coach Deming on Quality Quality comes not from inspection, but from improvement of the production process. We cannot

More information

XP: Planning, coding and testing. Planning. Release planning. Release Planning. User stories. Release planning Step 1.

XP: Planning, coding and testing. Planning. Release planning. Release Planning. User stories. Release planning Step 1. XP: Planning, coding and testing Annika Silvervarg Planning XP planning addresses two key questions in software development: predicting what will be accomplished by the due date determining what to do

More information

Story Writing Basics

Story Writing Basics Jimi Fosdick, PMP, CST Agile Process Mentor jfosdick@collab.net 503.248.0800 Story Writing Basics [A user story is] a promise for a future conversation -Alistair Cockburn 1 Welcome Welcome to our ScrumCore

More information

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing.

Overview. State-of-the-Art. Relative cost of error correction. CS 619 Introduction to OO Design and Development. Testing. Overview CS 619 Introduction to OO Design and Development ing! Preliminaries! All sorts of test techniques! Comparison of test techniques! Software reliability Fall 2012! Main issues: There are a great

More information

Adopting Agile Practices

Adopting Agile Practices Adopting Agile Practices Ian Charlton Managing Consultant ReleasePoint Software Testing Solutions ANZTB SIGIST (Perth) 30 November 2010 Tonight s Agenda What is Agile? Why is Agile Important to Testers?

More information

Test Driven Development and Refactoring. CSC 440/540: Software Engineering Slide #1

Test Driven Development and Refactoring. CSC 440/540: Software Engineering Slide #1 Test Driven Development and Refactoring CSC 440/540: Software Engineering Slide #1 Topics 1. Bugs 2. Software Testing 3. Test Driven Development 4. Refactoring 5. Automating Acceptance Tests CSC 440/540:

More information

Software Engineering I (02161)

Software Engineering I (02161) Software Engineering I (02161) Week 3 Assoc. Prof. Hubert Baumeister DTU Compute Technical University of Denmark Spring 2017 Contents Programming Tips and Tricks Booleans Constants Delegation Requirements

More information

SOFTWARE LIFE-CYCLE MODELS 2.1

SOFTWARE LIFE-CYCLE MODELS 2.1 SOFTWARE LIFE-CYCLE MODELS 2.1 Outline Software development in theory and practice Software life-cycle models Comparison of life-cycle models 2.2 Software Development in Theory Ideally, software is developed

More information

Automated Testing of Tableau Dashboards

Automated Testing of Tableau Dashboards Kinesis Technical Whitepapers April 2018 Kinesis CI Automated Testing of Tableau Dashboards Abstract Companies make business critical decisions every day, based on data from their business intelligence

More information

Software Development Methodologies

Software Development Methodologies Software Development Methodologies Lecturer: Raman Ramsin Lecture 8 Agile Methodologies: XP 1 extreme Programming (XP) Developed by Beck in 1996. The first authentic XP book appeared in 1999, with a revised

More information

Programming with GUTs

Programming with GUTs Programming with GUTs @KevlinHenney kevlin@curbralan.com When you write unit tests, TDDstyle or after your development, you scrutinize, you think, and often you prevent problems without even encountering

More information

Question 1: What is a code walk-through, and how is it performed?

Question 1: What is a code walk-through, and how is it performed? Question 1: What is a code walk-through, and how is it performed? Response: Code walk-throughs have traditionally been viewed as informal evaluations of code, but more attention is being given to this

More information

Testing in Agile Software Development

Testing in Agile Software Development Testing in Agile Software Development T 76.5613, Software Testing and Quality Assurance Slides by Juha Itkonen Lecture delivered by 4.10.2006 V-model of testing Benefits of the V-model Intuitive and easy

More information

Project Automation. If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008

Project Automation. If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008 Project Automation If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008 Introduction Purpose: Introduce various aspects of project automation. Why, when, what, and how to

More information

Program Correctness and Efficiency. Chapter 2

Program Correctness and Efficiency. Chapter 2 Program Correctness and Efficiency Chapter 2 Chapter Objectives To understand the differences between the three categories of program errors To understand the effect of an uncaught exception and why you

More information

As a programmer, you know how easy it can be to get lost in the details

As a programmer, you know how easy it can be to get lost in the details Chapter 1 Congratulations, Your Problem Has Already Been Solved In This Chapter Introducing design patterns Knowing how design patterns can help Extending object-oriented programming Taking a look at some

More information

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 Introduction to User Stories CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 1 Goals Present an introduction to the topic of user stories concepts and terminology benefits and limitations

More information

JUnit A Cook's Tour. Kent Beck and Erich Gamma. Renaat Verbruggen 1#

JUnit A Cook's Tour. Kent Beck and Erich Gamma. Renaat Verbruggen 1# JUnit A Cook's Tour Kent Beck and Erich Gamma Renaat Verbruggen 1# JUnit advice "Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead."

More information

Test-driven development

Test-driven development Test-driven development And how we do it at WIX Mantas Indrašius Software Engineer WIX.COM Agenda Tests overview Test-driven development (TDD) The Bowling Game demo Kickstarting a project using TDD How

More information

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Introduction TDD had its origins as an integral part of Extreme Programming TDD, BDD, DDD and the coming

More information

Faculty of Engineering Kasetsart University

Faculty of Engineering Kasetsart University Faculty of Engineering Kasetsart University Final eamination, 2013-2014, 2 nd Semester Section 450 219343: Software Testing Lecturer: Uwe Gühl Tuesday, 18 th of March, 2014 1.00 pm until 3.00 pm Name:

More information

Improving Software Testability

Improving Software Testability Improving Software Testability George Yee, 1Z48-M Jan 14, 2000 1 Contents 1. Introduction 2. Improving Testability at Design Time 3. Improving Testability at Coding Time 4. Putting it into Practice 5.

More information

Implementation of Process Networks in Java

Implementation of Process Networks in Java Implementation of Process Networks in Java Richard S, Stevens 1, Marlene Wan, Peggy Laramie, Thomas M. Parks, Edward A. Lee DRAFT: 10 July 1997 Abstract A process network, as described by G. Kahn, is a

More information

Verification and Validation

Verification and Validation Chapter 5 Verification and Validation Chapter Revision History Revision 0 Revision 1 Revision 2 Revision 3 Revision 4 original 94/03/23 by Fred Popowich modified 94/11/09 by Fred Popowich reorganization

More information

Programming Embedded Systems

Programming Embedded Systems Programming Embedded Systems Lecture 8 Overview of software testing Wednesday Feb 8, 2012 Philipp Rümmer Uppsala University Philipp.Ruemmer@it.uu.se 1/53 Lecture outline Testing in general Unit testing

More information

System Integration and Build Management

System Integration and Build Management System Integration and Build Management Christian Schröder and Roman Antonov May 29, 2006 1 Contents 1 Introduction 3 2 Continuous Builds 3 3 Continuous Tests 3 4 Continuous Integration 4 5 Conclusion

More information

Software Quality. Richard Harris

Software Quality. Richard Harris Software Quality Richard Harris Part 1 Software Quality 143.465 Software Quality 2 Presentation Outline Defining Software Quality Improving source code quality More on reliability Software testing Software

More information

Lecture 15 Software Testing

Lecture 15 Software Testing Lecture 15 Software Testing Includes slides from the companion website for Sommerville, Software Engineering, 10/e. Pearson Higher Education, 2016. All rights reserved. Used with permission. Topics covered

More information

Test automation / JUnit. Building automatically repeatable test suites

Test automation / JUnit. Building automatically repeatable test suites Test automation / JUnit Building automatically repeatable test suites Test automation n Test automation is software that automates any aspect of testing n Generating test inputs and expected results n

More information

Test automation Test automation / JUnit

Test automation Test automation / JUnit Test automation Test automation / JUnit Building automatically repeatable test suites Test automation is software that automates any aspect of testing Generating test inputs and expected results Running

More information

C Programming. A quick introduction for embedded systems. Dr. Alun Moon UNN/CEIS. September 2008

C Programming. A quick introduction for embedded systems. Dr. Alun Moon UNN/CEIS. September 2008 C Programming A quick introduction for embedded systems Dr. Alun Moon UNN/CEIS September 2008 Dr. Alun Moon (UNN/CEIS) C Programming September 2008 1 / 13 Programming is both an art and a science. It is

More information

DAT159 Refactoring (Introduction)

DAT159 Refactoring (Introduction) DAT159 Refactoring (Introduction) Volker Stolz 1, with contributions by: Larissa Braz 2, Anna M. Eilertsen 3, Fernando Macías 1, Rohit Gheyi 2 Western Norway University of Applied Sciences, Universidade

More information

Objectives: On completion of this project the student should be able to:

Objectives: On completion of this project the student should be able to: ENGI-0655/5232 Software Construction and Evolution Project 1 Reverse Engineering Refactoring & Object Oriented Design Due date November 10, 2009-4:00 pm 1. Aims The aim of this project is to give you more

More information

Testing in an Agile Environment Understanding Testing role and techniques in an Agile development environment. Just enough, just in time!

Testing in an Agile Environment Understanding Testing role and techniques in an Agile development environment. Just enough, just in time! Testing in an Agile Environment Understanding Testing role and techniques in an Agile development environment. Just enough, just in time! Today s Topics How the Tester s Role Changes in Agile Testing in

More information

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011 Lessons Learned Johnny Bigert, Ph.D., Skype/Microsoft johnny.bigert@skype.net October 26, 2011 Why do we do the things we do? Software Development Object-orientation, design principles, timeboxing, teams,

More information

Software Quality Assurance

Software Quality Assurance Arizona Information Technology Skills Training Initiative (AITSTI) Software Quality Assurance Bob Fowler Oris Friesen January 14, 2009 Table of Contents Introduction Software Development Software Quality

More information

2. Reasons for implementing clos-unit

2. Reasons for implementing clos-unit A CLOS Implementation of the JUnit Testing Framework Architecture: A Case Study Sandro Pedrazzini Canoo Engineering AG sandro.pedrazzini@canoo.com Abstract There are different reasons why you would like

More information

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD

Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD Cairo University Faculty of Computers and Information CS251 Software Engineering Lecture 20: SW Testing Presented by: Mohammad El-Ramly, PhD http://www.acadox.com/join/75udwt Outline Definition of Software

More information

ArrayList. Introduction. java.util.arraylist

ArrayList. Introduction. java.util.arraylist ArrayList Introduction In this article from my free Java 8 course, I will be giving you a basic overview of the Java class java.util.arraylist. I will first explain the meaning of size and capacity of

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

A CONFUSED TESTER IN AGILE WORLD

A CONFUSED TESTER IN AGILE WORLD A CONFUSED TESTER IN AGILE WORLD QA A LIABILITY OR AN ASSET THIS IS A WORK OF FACTS & FINDINGS BASED ON TRUE STORIES OF ONE & MANY TESTERS!! J Presented By Ashish Kumar, A STORY OF TESTING. WHAT S AHEAD

More information

1. Introduction and overview

1. Introduction and overview 1. Introduction and overview 1.1 Purpose of this Document This document describes how we will test our code for robustness. It includes test cases and other methods of testing. 1.2 Scope of the Development

More information

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process Introduction System tests, often called slow tests, play a crucial role in nearly every Java development

More information

Chapter 10. Testing and Quality Assurance

Chapter 10. Testing and Quality Assurance Chapter 10 Testing and Quality Assurance Different styles of doing code review Human Reviewer Code Inspection with continuous integration infrastructure Pinger s testing set up Testing Related topics 1.

More information