creating_a_loop_diagram_for_ci

[[creating_a_loop_diagram_for_ci]] JayFlowers Trace: » creating_a_loop_diagram_for_ci Some Resources: First you need to understand how to draw loop diagrams: Guidelines for Drawing Loop Diagrams http://www.thesystemsthinker.com/tstgdlines2.html http://www.systemsprimer.com/making_loops_intro.htm Tool for Drawing Loop Diagrams: MapSys http://www.simtegra.com Later you will need to read the diagram as it will be more complex than the simple diagrams used to illustrate how to draw loop diagrams. Systems Thinking Archetypes: http://www.systems-thinking.org/arch/arch.htm http://www.exponentialimprovement.com/cms/uploads/ArchetypesGeneric02.pdf http://www.exponentialimprovement.com/cms/uploads/Archetypes%20Gang%20Up7.pdf Fodder for the story The fodder below has been taken from: http://www.martinfowler.com/articles/continuousIntegration.html Software Configuration Management Patterns: Effective Teamwork, Practical Integration ...

June 1, 2007 · 4 min · Jay Flowers

works_in_progress

[[works_in_progress]] JayFlowers Trace: » works_in_progress Articles Traceability and Continuous Integration This article is about how traceability can play a vital role in your project, particularly when married with Continuous Integration. Prelude to Unit Testing Most articles on unit testing assume you know all the terminology and concepts. This article will help you understand it all. Scratch Pad Creating a Loop Diagram for CI This is a brainstorm of creating a Systems Thinking loop diagram for Continuous Integration. ...

May 30, 2007 · 1 min · Jay Flowers

a_recipe_for_build_maintainability_and_reusability

[[a_recipe_for_build_maintainability_and_reusability]] JayFlowers Trace: » traceability_and_continuous_integration » a_recipe_for_build_maintainability_and_reusability Continuous Integration Definition: The practice of integrating (compiling and testing) changes produced by a task into the product’s code line before starting on another task. There are many benefits to Continuous Integration(CI). It is helpful to understand that CI is not a practice performed in isolation. There are several other practices that support CI and still others that depend on it. The benefits of these supporting practices are magnified as they culminate into CI. A simple example is the practice of unit testing. A developer experiences many benefits when practicing unit testing in their own Private Workspace: rapid feedback, localization of errors, confidence to make change, and more. When unit tests are exercised in the practice of CI their meaning is subtly altered. The tests are being run on an independent machine after a clean build. This adds to the feedback: not only did it work on my machine it worked on the integration build server so it should work on any machine. The following list of benefits may seem familiar, that is because of CI’s supporting practices. ...

October 14, 2006 · 16 min · Jay Flowers

shrinking_the_edge_and_expanding_the_creamy_center

[[shrinking_the_edge_and_expanding_the_creamy_center]] JayFlowers Trace: » shrinking_the_edge_and_expanding_the_creamy_center Introduction In the article Introduction to Unit Testing a recipe was identified that could test any class in a system except for the edge. The recipe depends on the test subject knowing of other types through abstractions. The abstraction allows for indirection to be used to insert a test double. This methodology of testing is known as interaction based testing. Interaction Based Recipe: Does the test subject interact through abstractions? If not perform safe refactorings till compliant. ...

October 14, 2006 · 6 min · Jay Flowers

unit_testing_highly_cyclomatic_test_subjects

[[unit_testing_highly_cyclomatic_test_subjects]] JayFlowers Trace: » unit_testing_highly_cyclomatic_test_subjects Introduction Sometimes the simplest way to solve a problem is to write a method that has a lot of conditional logic in it. When it is, testing that method does not have to be difficult. This article will explore different ways of creating quality unit tests in the face of a highly cyclomatic test subject. Meet the Test Subject public class Conditional { public String ComplexeMethod(String name) { if (name == null) throw new ArgumentNullException("name"); if (name == String.Empty) throw new ArgumentException("Name can not be blank."); return String.Format("Hello {0}.", name); } } This is a very simple example. I trust you to see how this will apply to your own highly cyclomatic methods. There are three branches in this test subject. We will need to account for all of them. Again this is a simple example and I will trust you to keep in mind what each test solution would be like if this were a real life example(i.e. setups, teardowns, …). ...

October 14, 2006 · 10 min · Jay Flowers

using_junctions_to_manage_a_development_environment

[[using_junctions_to_manage_a_development_environment]] JayFlowers Trace: » using_junctions_to_manage_a_development_environment Junctions are symbolic links and have been supported since Win2k in NTFS. The OS provides no ways to manage junctions. There is a tool in the Win2K resource and there is a tool provided by Sysinternals. Below is a screen shot of part of a development environment structure. Notice the icon overlays of the chain links. This functionality is provided by Travis Illig’s Junction Shell Extensions. With out this you will not be able to see a difference between a regular folder and a junction. Below is are screen shots of how to use the Sysinternals tool to display junction points and the properties of a junction with Junction Shell Extensions. ...

October 14, 2006 · 2 min · Jay Flowers

common_nant_tasks

[[common_nant_tasks]] JayFlowers Articles :: Software Projects :: Works in Progress This page has moved and you will be redirected. Description This is an assmebly of tasks, types, and functions that I found I could not live without. Tasks: LargeProperty LoopThrough Replace SaveProperties Strings Write IfThenElse Function Functions: FileSet StringList Type: SaveProperty StringItem TextElement Quick Example <strings id="Numbers"> <string value="1"/> <string value="2"/> <string value="3"/> <string value="4"/> </strings> <function execute="${stringlist::add('Numbers', '5')}"/> <ifthenelse test="${stringlist::contains('Numbers', '5')}"> <then> <echo message="Added number 5 to StringList, count = ${stringlist::count('Numbers')}."/> </then> <elseif if="false" > <echo message="This won't happen."/> </elseif> <else> <echo message="Did not add number 5 to StringList, count = ${stringlist::count('Numbers')}."/> </else> </ifthenelse> <function execute="${stringlist::remove('Numbers', '2')}"/> <loopthrough property="Number"> <items> <strings refid="Numbers" /> </items> <do> <echo message="Number ${Number}!"/> </do> </loopthrough> Copyright (C) 2001-2005 Gerry Shaw http://nant.sourceforge.net Buildfile: file:///C:/Projects/CI Factory/Current/Product/nAnt Scratch/Scratch.build.xml Target framework: Microsoft .NET Framework 1.1 Target(s) specified: test [loadtasks] Scanning assembly "Common.Functions" for extensions. test: [echo] Added number 5 to StringList, count = 5. [echo] Number 3! [echo] Number 1! [echo] Number 4! [echo] Number 5! BUILD SUCCEEDED Total time: 0.1 seconds. Download common.tasks.zip ...

May 4, 2006 · 1 min · Jay Flowers

doubler

[[doubler]] JayFlowers This page has moved and you will be redirected. Install Usage Support Description Doubler is a code generator that makes unit testing easier. It is especially useful when working with legacy code. It is a Reflector add-in, a tool already woven into your workflow. It will help you cleave dependencies apart, create test doubles, and write unit tests with little effort and less coding. Features Doubler is a Reflector add-in that helps with creating unit tests. It offers four code generators: - Recording Generator – Use against an abstract type. It will create a Recording Test Stub. Recorders generated have the following features for each method on the subject type: - Property named Called of type Boolean that records if the method was called. - Properties for each parameter passed named in the following format Passed of the same type as the parameter. - Property named ReturnValue of the same type as return type of the subject method. If subject method is void this property is not created. When the method is called the this value is returned. - Property named ExceptionToThrow of type Exception. When the method is called if this property is not null the property value is thrown. - Wrapper/Interface Generator – Use against a concrete type. It will create a mirror interface of the subject type and an implementation of the interface that passes all calls to a private instance of the subject type. This can be used to help control dependencies, allowing unit tests to insert a test double in place of the subject (run the Recording Generator on the mirror interface). - Fake Generator - Use against an abstract type. It will create a Fake Object. - Test Generator – Use against a concrete type. It will generate a unit test fixture and test methods for each public method on the test subject. The test methods will contain a start on the unit test. Download Version 0.5.5.12 0.5.5.12-doubler.zip 0.5.5.12 - Fixed Wrapper/Interface: creates interface again, no duplicate members - Fixed Recorder: no duplicate members - Minor changes 0.5.5 Changes: - Added logging tab. - Unit Test generator can now tracks calls to named parameters, writting test code for how each parameter is used. - No longer locks assemblies. 0.5 Changes: - Added drag file control. - Wrapper class members are all final. - Recorder method names that are shared wiht Object are marked with override or overload. - Wrapper class internals are marked as private and not part of the wrapper interface. Example: unit_test_patterns.zip doubler.txt · Last modified: 2006/05/04 14:51 by jflowers

May 4, 2006 · 3 min · Jay Flowers

doublerusage

[[doublerusage]] JayFlowers Trace: » doublersupport » doublerusage This page has moved and you will be redirected. Recorder Generator Create New Recorder - This movie shows the creation of a new test stub recorder and adding it to a VS.NET project. Use Recorder - This movie shows how to use the recorder in a unit test. Example Recorder - This is the recorder generated and or used in the other movies. Unit Test Generator Create Unit Test - This movie shows the creation of a new unit test fixture, adding it to a VS.NET project, filling in some test values, and running the test. Example Unit Test - This is the unit test generated in the previous movie. ...

May 4, 2006 · 1 min · Jay Flowers

doulberinstall

[[doulberinstall]] JayFlowers Trace: » doublersupport » doublerusage » doulberinstall This page has moved and you will be redirected. doulberinstall.txt · Last modified: 2006/05/04 14:52 by jflowers

May 4, 2006 · 1 min · Jay Flowers