Home

article - Methods & Tools

image

Contents

1. 3 Expertise In order to write an efficient automated test test automation experts are required to be a techno geek version of superman good test engineers system experts and great SW developers Obviously a different approach is required to make test automation work What is Test Language Test Language is a dictionary of keywords that helps testers to communicate with each other and with other Subject Matter experts The keywords replace the common English or as the basis and create an approach called keyword driven testing KDT KDT can be used to achieve a number of goals e Improve communication between testers e Avoid inconsistency in test documents e Serve as the infrastructure for Test Automation based on Keyword Driven Testing Test Language Structure The Test Language is based on a dictionary which is comprised of words keywords and parameters Test Cases A Test Case is a sequence of steps that tests the behavior of a given functionality feature in an application Unlike traditional test approaches Test Language uses pre defined keywords to describe the steps and expected results The Keywords Keywords are the basic functional sub procedures for the test cases of the application under test A test case is comprised of at least one keyword Types of Keywords Item Operation Item an action that performs a specific operation on a given GUI component For example set value Larry Swartz in customer
2. Agile Development Doesn t Have to Mean Fragile Enterprise Process http www mks com enterprise agile Mi K S Methods amp Tools Summer 2010 Page 32 Agile Requirements Visualization is a useful tool to help business communicate better with IT Answering these questions can give you an indication of the level of visualization requirements your project demands Nevertheless you may also find that visualization is not required Once you have requirements what do you do with them It is not enough to get your requirements and or user stories on paper or in a tool distributed to your team and then hope that they are met Once requirements are defined and captured it is essential that they are managed actively and correctly This is even more important in agile as each iteration is a pressure cooker where user stories and requirements need to be defined estimated re estimated developed and tested in a short period of time Here are some basics tenants to follow for successful RM Prioritize requirements and user stories so resources are assigned to address the highest priority highest risk requirements This helps prevent a lesser requirement with perhaps a more vocal stakeholder taking precedent over other more important requirements Baseline requirements to set measurable success standards thresholds for all requirements so that all stakeholders are on the same page Achieve sign off agreement between business analysts
3. Allison interrupts so why aren t you all at O at the beginning Yves oh good observation I was not at O because I had been talking to other people so I already had an idea how many people where interested does this answers your questions Allison yes it does Then you started by the person with the lowest score Why did you ask everyone what he wants If it is my meeting I want to set an agenda Yves That is true and we want to make sure we address the most important issues concerning this topic If everyone has to organize his own meeting to address an issue we now have 10 meetings Did I mention already that we schedule our meetings for at least an hour The meeting protocol offers us a way to have 10 productive meetings instead of one And yes people are smart enough to only bring topics related to the goal of the meeting Allison What if I have no goal for this meeting Yves Then why are you in this meeting Allison Well I don t know if my input is needed to solve an issue in this meeting Yves With the meeting protocol you will know at the beginning if you are needed or not And if not you leave Allison Yes I noticed that B n dicte left halfway the meeting once she had what she wanted Yves You can stay if you think someone needs your input in the meeting If you always stay and nobody actually needs you your goal probably is I want to feel needed by the team That goal will never
4. Being able to begin with a Nursery Slope process and move towards an Off Piste process creates an evolutionary style of introducing change This is on contrast to a revolutionary style of jumping straight into the implementation of a new process An evolutionary approach is appropriate for contexts where there is strong resistance or where a revolutionary change will highlight more issues than it is possible to resolve effectively Large enterprises with legacy technologies complex architectures and political silos may struggle to make the leap to a having multi skilled cross functional teams delivering production code every few weeks Whatever approach is taken it should be remembered that method is only a means to achieving purpose and measuring capability towards that purpose Rather than focusing on being Lean or Agile which may and should lead to being successful we should focuses on becoming successful which will probably involve being Lean or Agile The end goal is to be successful and a Kanban System is a means to that end not an end in itself To finish with a quote from The Toyota Way 14 by Jeffery Liker kanban is something you strive to get rid of not to be proud of Methods amp Tools Summer 2010 Page 13 Kanban References 1 Toyota Production System Beyond Large scale Production Tatichi Ohno 2 Freedom from Command and Control A Better Way to Make the Work Work John Seddon 3 The
5. Methods amp Tools Summer 2010 Page 42 Core Protocols Yves Great question It s not Although the name seems to insinuate we strive for perfection the game is more for finding idea s to make things better I would have preferred the greatness game Allison wondered That score how do you deal with that with people that have no experience with this You mean what to do with people who still feel they are evaluated as a person Yves asked Yes she nodded Yves As a coach I usually start with a score of 7 out of 10 That is I am aiming to give improvements worth 3 out of 10 When I m listing my improvements and I feel my improvements are not worth 3 out of 10 I adjust my score At XP days Benelux the Perfection Game is used in its original form to improve the proposed sessions for the conference A lot of speakers appreciate this kind of feedback I have seen the Perfection Game being adopted as a kind of evaluation That does not work The Perfection Game was intended for improvement and not for evaluation Mixing these two does not work That is also why the third part is improvements and not things we don t like It s very easy to come up with a long list of things we don t like about everything To come up with a small list of improvements is a different thing Yves paused for a moment to make her think about that last message Then he added a last remark That is why for me using the Perfection Game is a serious eng
6. Then let s find some seats said Allison I m tired of standing up with my drink in my hand and something tells me I want to sit down for what you ve got to say next After her initial talk with Yves she had tried to read Software for your head and although she had given up she somehow felt she would like the Core As a coach I give feedback to teams and individuals all the time and as I currently see the Perfection Game as the most powerful way to give feedback the Perfection Game is the pattern I use most Allison who had been reading his blog said Yes I ve noticed you use it a lot Yves surprised that she knew the Perfection Game saw that as an opportunity to do a little experiment Let s try it out right now Will you perfect this conversation Methods amp Tools Summer 2010 Page 40 Core Protocols This unexpected shift made Allison catch her breath She looked down She had read his posts even printed out the Perfection Game but she had never actually done one And now this expert was asking her to perfect this conversation She hadn t even had time to think about the conversation Hey they were only talking for five minutes Yves waited he knew it was quite a challenge for someone who had never done this Especially because he had not repeated the pattern of the game with her He had done that on purpose so he would be able to see what parts she understood and what parts were still unclear She loo
7. e terating containers e Deleting or replacing expectations e Insert ExpectationList s Expectations Expectations are what the tester spends most of his writing time Each expectation matches an event the tested unit must or can do VoodooMock is shipped with the following expectations e Construction expectation scenario lt lt Construction lt class gt Name to give new object e Destruction expectation scenario lt lt Desturction Name of object being destroyed e Call to a global function scenario lt lt CallReturnVoid Namespacel Namespace2 function e Call to a stub object method scenario lt lt CallReturnVoid Stub objects name method name Once a call matches an expectation the expectation contains instruction as to what to provide as a return value Storing the return value in the expectation also raises the question of scope for the return value stored VoodooMock provides several calls expectations that only differ between them in the way the return value is stored A call expectation looks like this CallReturn Return ValueScope Stub object method value Simple examples include CallReturnVoid is for calls returning void e CallReturnValue copies the return value once when creating the expectation and a second time when the call return This works best for immediate values e g integers e CallReturnReference
8. Build Now icon in the left sidebar A new build will start checking out the source code then compiling and testing it You can follow the progress by peeking at the live output of the build Click on the progress bar on the left hand side to open the console view 5 Once the build has been finished return to the Hudson dashboard page by clicking on Hudson in the top left corner If the build succeeded you will see a blue ball icon If any problem occurred the ball will be yellow or even red Note how you can browse the test results interactively by clicking on the project name and then on Latest Test Results You have now configured your Hudson server added your first job and built it In a production instance builds would be triggered automatically by changes in the version control system or by a timer but the basic scheme would be the same Conclusion Continuous Integration is a software development practice that most teams cannot think of living without once it has been established With Hudson the necessary tooling is fast to install easy to maintain and scalable for future extensions A final note While Hudson is implemented in Java and supports mainstream Java build chains out of the box CVS Subversion Ant Maven JUnit TestNG it is not restricted to the Java world Many companies use Hudson to automate their software development efforts in C C C PHP Groovy Scala and many other languages Methods
9. allow business stakeholders to get a high level view of all of the models within your system Bounded vs Unbounded DSLs Another important distinction is between bounded and unbounded DSLs Unbounded DSLs are used to deal with solutions where there is a theoretically infinite solution space A good example would be a language for describing domain objects and their properties While there are a relatively small number of domain objects that come up on a regular basis such a language is capable of describing an unlimited number of potential models Bounded DSLs are designed for configuration of systems with a limited number of possible configuration states If you find that you need a bounded configuration DSL make sure to research existing solutions for feature modeling There are well proven patterns for describing configuration DSLs and it is worth reviewing them to help with the design of your specific configuration DSL s Runtime Interpretation vs Code Generation While we started off by thinking that we were in the code generation business we realized pretty quickly that actually we wee in the domain specific modeling business There is nothing wrong with generating code It is one of the many ways of implementing DSLs and has strengths and weaknesses There are a number of benefits to code generation From an intellectual property perspective it allows you to deliver to clients a specific solution for their needs rather than giving them
10. amp Tools Summer 2010 Page 59 FitNesse FitNesse A Tester s Perspective Lisa Crispin http lisacrispin com FitNesse is a test framework that allows testers developers and customers to collaborate to create test cases on a wiki Teams can take examples of desired software behavior and turn them into automated tests integrated with narrative requirements documentation FitNesse runs its own wiki web server It s possible to test applications written in Java Net Ruby Python C and PHP using FitNesse My team has used FitNesse since 2004 This review is based on our experiences I hope it will help you decide whether you d like to try out FitNesse for your own test automation Web Site http Awww fitnesse org Version tested 20100308 License amp Pricing Open Source Support Yahoo group mailing list Installation Ease of installation is one of the strengths of FitNesse You can download FitNesse via http fitnesse org Installation is simple For a Java installation type java jar fitnesse jar This will put all the necessary files in place To start the server type java jar fitnesse jar p xxxx where xxxx is your desired port number Now you can access FitNesse via your browser with http lt hostname gt xxxx FrontPage where hostname is your localhost or the server where you just installed FitNesse and xxxx is the port number you used Yes it really is that easy to get it installed You can write and e
11. stores a reference to the provided return value only copies it when the call return This works best for functions like gettimeofday returning a global variable representing now e CallReturnAuto receives a pointer copies what it references as the return value but also deletes the pointer when the scenario is destroyed e CallReturnCallback fetches the return value from a given functor Implementing additional call expectations is a matter of inheriting from the Expectation hierarchy Methods amp Tools Summer 2010 Page 69 Voodoo Each expectation can also contain one or more hooks functors to run after they are matched The hook notation is similar to the parameters notation see below When no expectation matches an event e g the unit called a stub method which were not supposed to be called at this point VoodooMock fails the test suite with a message containing the next expectation of every Scenario object by line number created and index inside the Scenario Parameters Except for destruction each expectation also describes the parameters it expects and how to verify their correctness For example const Serializable secondObject scenario lt lt new Construction lt DataFile gt The Data File lt lt new EqualsValue lt const std string gt C data dat lt lt New VMONOLeK IE 2G lt lt new CallReturnVoid The Data File serialize lt lt new Na
12. AJAX applications using the built in DOM interrogation capability You can also parameterize scripts manage control flow as they execute Data from external files can be fed into scripts Load Testing The load testing function in eValid uses the same script repository than the functional testing part You can therefore either reuse an existing script or create a dedicated item for load testing You can specify the number of times that you want to run the script and the delay between each run This playback multiplier allows increasing or decreasing the speed or repetition The functional scripts and this additional information allow you to create load testing scripts The estimated number of users is dependent of these parameters A script repeated 5 times that is complete in 20 of the normal time is the equivalent of a 25 users load The load script runs each functional script in a separate eValid sub browser without cache to assure that each page is Methods amp Tools Summer 2010 Page 53 eValid actually downloaded Information used for the test like user names can be changed for each test You can obtain 100 Browser Users per desktop session and eValid is able to run over 1 000 using multiple desktop sessions on a single machine My test scenario runs twice a test that just loads the home page then twice a test that goes to a poll page displays results and verifies the presence of a text on the result page then again once the lo
13. Cockburn Philip Almey Lilian Nijboer Esther Derby A big kudo s to Emmanuel Gaillot who initiated the conversational style Another thank you to google docs that made it possible for this international team to have 3000 revisions Yves gives free life time support on this article send your questions to core hanoulle be If you want more people to respond you can connect to the CoreProtocols user group TheCoreProtocols yahoogroups com 1 Feel free to mail me your reasons why check in or any other protocol could not work Methods amp Tools Summer 2010 Page 51 eValid eValid Franco Martinig Martinig amp Associates http www martinig ch eValid is a testing tool suite built into an IE browser eValid performs every function needed for detailed Web Site static and dynamic testing regression testing QA Validation page timing and tuning transaction monitoring realistic and scalable server loading Web Site http www e valid com Version Tested eValid V9 Build 301 tested during May June 2010 on Windows XP Home Edition SP3 System Requirements eValid V9 relies on certain properties of the IE DLLs that are only available in IE 5 50 and later versions until IE 9 0 Similarly certain features of the technology require use of Windows operating system features that are only present in Windows 2000 SP4 Windows XP Windows Vista Windows 7 and Windows Server 2008 At launch eValid will provide an advisory notice popup
14. MySQL JBoss Xerox Yahoo LinkedIn or Goldman Sachs It allows you to automate your software build chain e g monitoring changes in version control systems triggering new builds testing artifacts sending notifications deploying to production servers and much more Hudson is liked for its ease of use and broad extensibility via 250 plugins Web Site http hudson ci org see http hudson glassfish org for a live installation Version Tested Hudson V1 358 Mai 2010 License amp Pricing Open Source MIT License Support User and developer mailing lists Overview Continuous Integration CI is a software development practice where members of a team integrate their work frequently usually each person integrates at least daily leading to multiple integrations per day Each integration is verified by an automated build including test to detect integration errors as quickly as possible Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly Martin Fowler http martinfowler com articles continuousIntegration html En version control system iL e g Subversion build servers check out indicate change report results m team leads testers clients set status j J management feedback CI server etc Hudson Figure 1 A typical continuous integration cycle Hudson is a CI
15. New New Product Development Game Hirotaka Takeuchi and Ikujiro Nonaka 4 http www youtube com watch v wPFA8n7go10 5 http www exampler com testing com writings marick boundary pdf 6 Drive The Surprising Truth About What Motivates Us Daniel Pink 7 The Visual Display of Quantitative Information Edward Tufte 8 http www xqa com ar visualmanagement 9 Quality Software Management Vol Systems Thinking Systems Thinking Gerald Weinberg 10 The Goal A Process of Ongoing Improvement Eliyahu Goldratt 11 http alistair cockburn us get 2754 12 Learning to See Value Stream Mapping to Add Value and Eliminate Muda Mike Rother and John Shook 13 Flow The Psychology of Optimal Experience Mihaly Csikszentmihalyi 14 The Toyota Way 14 Management Principles from the World s Greatest Manufacturer Jeffrey Liker Advertisement TV Agile Click on ad to reach advertiser web site TV Agile http www tvagile com TV Agile is a directory of agile software development videos and tutorials categorizing material on all agile aspects Scrum Lean XP test driven development behavior driven development user stories refactoring retrospective etc Methods amp Tools Summer 2010 Page 14 Software Testing Test Language Introduction to Keyword Driven Testing Ayal Zylberman and Aviram Shotten QualiTest Group http www qualitestgroup com Introduction Keyword Driven Testing KDT is the next
16. SLA is not a promise or a target but a way of providing information about when deliverables can be expected It is a gentleman s agreement rather than a contract that when a team accepts a piece of work it should be delivered with a known time period By releasing frequently to a known cadence with an agreed SLA a team can build trust that it is delivering to its full capacity Continuous Improvement Continuous Improvement is how a team constantly develops a Kanban System s capability to meet its purpose A Kanban System should create an economy of flow rather than an economy of scale and the ultimate goal is to eliminate the Kanban System In their book Learning to See 12 Mike Rother and John Shook use the phrase Flow where you can pull when you must A Kanban System allows the work to be pulled but in order to really achieve flow the team members should be always looking for ways to keep the work moving rather than keeping themselves busy One approach to continuous improvement is to reduce WIP limits When a Kanban System appears to be working smoothly lowering a WIP limit is analogous to lowering the waterline It will expose the rocks and new bottlenecks and constraints will be discovered As a result teams can work to remove the new bottlenecks and constraints until work is flowing through the system smoothly again Another approach to continuous improvement is through retrospectives and other spontaneous ch
17. a copy of an entire system for delivering a whole class of possible solutions It also makes the runtime code easier for less experienced programmers to understand as the generated code will often be simpler than a runtime framework that will interpret your models If you have a proven performance issue with a runtime framework pre compiling your models into code can also improve performance if that really is the bottleneck The main thing to ensure with code generation is that wherever possible you use active code generation so that you can regenerate the code as your models change without losing any custom code Generally this is done by putting any custom code into different files than the generated code often using some combination of subclassing AOP event driven programming or where your language supports it include files partial classes and or mixins If you have to mix generated and custom code within a single file protected blocks with some kind of unique multi character delimiter between editable and generated code is a possible solution but it s generally better to keep the generated and hand written code in separate files wherever possible Methods amp Tools Summer 2010 Page 29 Software Product Line Avoiding the Customization Cliff Another important issue to look out for is what Krzysztof Czarnecki termed the Customization Cliff The ideal solution should make it very easy to do simple things and just a little harder t
18. a ticketing system for a building contractor and an application for sharing information about sitting Shiva mourning for a deceased person On a superficial level the projects are fairly different but over the years we have found a number of ways of developing the applications more efficiently by identifying commonalities Approaches to the Problem Originally we started off in 1996 by hand coding websites Fairly quickly we noticed a substantial duplication of effort between projects so for a short period of time we utilized informal cut and paste reuse Pretty quickly we ran into problems with different versions of various assets and issues with finding a particular piece of functionality for reuse which project has the latest calendar month to view display code The next quick and dirty solution was to create a project skeleton At first we created a simple skeleton to allow us to kick off projects more quickly We then added the latest and greatest version of our various code snippets to the project and used manual negative variability manually deleting any files we didn t need for a particular project Before long the skeleton ended up looking more like a bloated corpse with far too much functionality that had been poorly designed We tried briefly to abstract optional functionality into a separate directory but before long we realized that we needed a more scalable solution for the reuse of code Code Quality Management Click on
19. also a wiki on the project website and two active mailing lists for users and developers some 18 000 postings in 2009 Two books on Hudson are currently in progress CI with Hudson by J F Smart and CI mit Hudson in German by S Wiest Distributed Architecture Building and testing software is a rather resource intensive process Continuously building software obviously requires even more computing power Hudson can distribute your builds to a grid of build servers the slave nodes This speeds builds up but also enables you for example to test software on multiple slave nodes running different operating systems databases application servers web browsers service packs etc Slave nodes can be run on real hardware under your desktop in your data center or on virtualized systems e g on a VMWare host or in the Amazon EC2 cloud Hudson will take care of monitoring the nodes distributing the work and collecting the results once the builds have been completed on the slave nodes Methods amp Tools Summer 2010 Page 58 Hudson Plugins As software build chains always differ from team to team a good CI server must demonstrate infrastructure chameleon capabilities Hudson is extensible by 250 plugins offering support for alternative build tools e g msbuild gradle rake version control systems e g CVS Git Perforce Mercurial notification channels e g rich email jabber twitter eXtreme feedback de
20. an eye check with everyone in the team and says I ll change my proposal to 12 30 Proposal accepted Allison will you tell me what happened She accepts the challenge Christophe made a proposal I m not sure was this after a long conversation It could be but in general everyone makes proposals as soon as possible Allison asks for more clarification So then he counts to three Why did he do that Yves explains The reason we do this is to make sure that everyone votes at the same time It might sound silly but if you don t people look at each other and will vote what other members vote Allison continued The voting had three outcomes will you explain them Yves Yes I will Thumbs up I support your idea and I will do everything to make this a success Flat hand I don t have enough information to support your idea Thumbs down I can t support the idea like it exists now It needs some changes If the proposer thinks that the change is too different from his proposal he says the proposal is dead not accepted The same is true if you have too many flat hands you need enough people that support the idea Allison puzzled asked When I have a better idea what should I vote Yves smiled When you think you have a better idea you vote flat hand and after the first proposal is accepted then you propose your better idea This has Allison interrupts him I want to be sure I understand I propose my bette
21. are now running on the JVM The Da Vinci project http openjdk java net projects mlvm goal is to improve the efficiency of other languages on the JVM Finally some small additions are made to the syntax to simplify the language JavaFX release 1 3 was also announced in May the fourth release in the last 18 months Performance has been improved and new UI components have been added For those who want to see it in action Danny pointed us towards the web site of the last Vancouver Winter Olympics more precisely the geographical view of meals http www vancouver2010 com olympic medals geo view Methods amp Tools Summer 2010 Page 76 Jazoon Java and Flex in Enterprise The next two sessions that I attended were both about Java and Flex In the first presentation Adobe Evangelist James Ward http www jamesward com did first a small introduction to the Flex technology Then he showed how it was easy to connect a Flex front end with a Java back end using different protocols http web services and benchmarked their relative speed All his demos are available on http www jamesward com demos You can check the insurance one for a small taste of what a nice Flex interface can look like The second presenter Florian M ller http www richability com put a different perspective on the marriage between these two technologies with his experience on a large project that was involving both of them The development of the applica
22. are proposed by the tool By default the settings are for real time recording which means that the wait time between two actions will be automatically recorded by the tool This can be changed in the settings An existing script can be modified inserting new actions at a Methods amp Tools Summer 2010 Page 52 eValid particular point The recorded script can be also manually edited which allow to remove certain items modified input waiting times and validations parameters Validations can be made at the document level title byte size last modified date on a page element text image table cell or on a page area In fact the tool can validate and synchronize any DOM Document Object Model property anywhere on the current page BP Script File eValid MT Subscription evs DAR File Edit Insert l 2 Recording by e Yalid V9 Build 301 Build Date Apr 19 2010 3 Copyright 2010 by Software Research Inc 4 Recording made on Microsoft Windows XP Service Pack 3 IE 8 0 6001 18702 HostName Martinig 5 Recording started at lt 2010 06 10 15 33 20 gt A 8 ProjectID Project 9 GroupID Group 10 TestID e alid MT Subscription ll LogID AUTO l4 S creenSize 1280 1024 15 FontSize 1 16 DeleteCache 1 InitLink http twon methodsandtools com 1S ValidateSelectedImage 0 66 http wm methodsandtools con images subscr y 19 da Bo Tals pie meee fas 0 1B Une ope 2 E 0 8
23. be implemented If the further detail is required the user can either tie several user stories together to form an epic or super Story Given this what information should go where In the functional requirements or the body of the user story the aim should be to articulate the system wide elements such as the main product features particular to the business say order processing for a shipping business Coupled with this in the non functional requirements or fit criterion the user should aim to describe what elements should be included in order to enhance the user experience with the software Methods amp Tools Summer 2010 Page 31 Agile Requirements Common non functional requirements include Usability This includes looking at capturing and stating requirements based around user interface issues things such as accessibility interface aesthetics and consistency within the user interface Reliability This defines requirements such as availability levels computation accuracy and recoverability of the system from shutdown or failure Performance This involves things such as throughput of information or computation through the system or application response time which also relates to usability recovery time and startup time Supportability This specifies a number of requirements such as testability adaptability maintainability compatibility configurability installability scalability localizability and t
24. be reached Methods amp Tools Summer 2010 Page 50 Core Protocols Allison remarks haha this conversation is as funny as I hoped it would be Earlier you talked about Personal Alignment will you tell me what that is Yves closed his eyes No I will not do that now I m too tired and I need some sleep Why don t we get together tomorrow and continue our conversation Allison I propose we see each other at 10 am here in the bar 1 2 3 Yves showed thumbs up and said That is a deal Allison laughs while she said Protocol check You are not supposed to talk during a decider The conversation of the next day will appear in the next issue of Methods and Tools Allison and Jeffrey are fictive persons This conversation is based on talks that Yves had at agile conferences the last five years The meeting between Yves Christophe B n dicte took place in Ist quarter 2010 over the phone Although the transcript was edited this was how this 30 minutes conversation went Yves asks one agile coaching question every day on http twitter com Retroflection Questions created by John McFayden Dusan Kocurek Martin Heider John Gram Deborah Preuss Christopher Thibaut George Dinwiddie Diana Larsen Ine De handschutter Yves Hanoulle you This article was written with the help from Jim amp Michele McCarthy Els Ryssen Paul Reeves Christopher Thibaut Adam Feuer Ralph Miarka Mary Poppendieck Gino Marckx Alistair
25. for help However she does not want to bother people if she can work it out herself She also added that sometimes it takes a while to realize she got lost Just as it might take people two or three days to ask for help in their team Recently Dave Nicolette blogged about a similar experience with some very mature agile coaches that forgot to ask for help during the first certified developer Scrum course Methods amp Tools Summer 2010 Page 45 Core Protocols Allison Ok then when should I ask for help Yves laughed Whenever you feel blocked Allison What if I don t know where I need help with Yves Especially then you should ask for help It feels scary but the most powerful instances of help I have received are those when I had no idea I needed help but still asked for it Allison The previous patterns have a strange format What about ask for help Yves Use will you instead of can you Allison interrupts him The managers trick Yves reacts surprised Please say more Allison continues My first manager never asked will you do this he always asked can you do this because he knew people would quickly say yes Of course they can even when they don t want to Yves added to that Yes but that does not show much respect for people For me respect for people is one of the core agile values Allison wonders What if I don t want to help Then you say no Yves adds An ask for help
26. include lt Number h gt class Sum public Sum const Number amp first const Number amp second result first value second value unsigned result const return _result private unsigned rogale F7 endif A test for the unit that contains only the class Sum stubbing the Number class can be finclide lt stdio h gt define VOODOO EXPECT Number_h Tone Lice Wout using namespace VoodooCommon Expect class TestFailed int main Scenario scenario scenario lt x new CallReturnValue lt unsigned gt Fake Number 1 value 100 lt lt Methods amp Tools Summer 2010 Page 66 Voodoo new CallReturnValue lt unsigned gt Fake Number 2 value 200 FakeND_ Number numberl Fake Number 1 FakeND Number number2 Fake Number 2 if oat number 5 number Jsresurt b s00 3 throw Testrailed scenario assertFinished prin OR ne Leeuwin Uy 3 Lets examine the code in detail First the following two lines define VOODOO_EXPECT_include_Number_h include Sum h The first lines tells the preprocessor that if Number h gets included use the stub code instead of including the real Number h The macro name is derived from the header file name by the VoodooMock stub tree generator The second line includes Sum h which actually includes the stub Sum h first and since VOODOO EXPECT include Sum h is not defined in this test the stub simply inc
27. is only valid if the other party has the right to say no Without a possible no a yes has no value Yves proceeds When you know that people will ask for help when they need it it also removes the urge to rescue people When I was young I had a hard time asking for help I learned that behavior because in my environment people rescued other people before they could ask for help Sometimes agile coaches think that rescuing is the same as helping It s not And it teaches people not to ask for help So basically you make them more powerless During my first years as a parent it was hard for me to know the difference between helping a helpless child and teaching them to ask for help Which is helping them in the long run While Allison who had a ten and a seven year old grabs her notebook to jot down a few sentences about this Yves moves on to the next pattern Imagine the next situation you are in a meeting and after I said something someone else takes over and says something like What Yves says has a lot of value remember last year when we released supergizmo 364 customer babelstone had similar situation as what Yves describes And on top of that we should not forget that our company goal was to optimize the ROI of our department And by consequence deploying our system that does what Yves described we do precisely that So I propose that we consider that option Allison gazes at Yves confused by the unclear conv
28. of making a release is a transaction cost Coordination costs are those associated with the logistics of an activity For example the cost of getting people together to manage a release is a coordination cost Thinking in terms of transaction and coordination costs can provide the basis for establishing an appropriate cadence for the various events such as prioritisation planning reviewing retrospection and releasing Focussing on reducing these costs can subsequently allow the cadence to change as delivery capability improves The end goal of reducing costs and improve cadence is to be able to quickly reliably and frequently release valuable software In doing so we can help to further reduce costs David Anderson uses the example of over ground and under ground trains Over ground trains which run less frequently tend to require more planning by looking at a timetable and travelling to the station at the right time to avoid unnecessary waiting Under ground trains which run more frequently tend to require less planning because it is safe to turn up and catch a train quickly Thus by releasing quickly reliably and frequently we can reduce the need for much of the planning overhead Methods amp Tools Summer 2010 Page 11 Kanban Once a cadence has been established and a delivery capability understood through measuring cycle time and throughput then predictability can be achieved through setting Service Level Agreements SLAs A
29. of problems Methods amp Tools Summer 2010 Page 30 Agile Requirements Better Requirements Definition Management is Better for Business Genefa Murphy genefa murphy hp com HP Software and Solutions www hp com blogs requirementsmanagement Why focus on requirements definition management in the application lifecycle Increasingly smart businesses are looking much closer at requirements definition RD and requirements management RM sometimes grouped together under the Gartner coined phrase requirements definition management RDM to streamline the entire application lifecycle Why Because systematic and effective RDM captures software defects earlier in the lifecycle and it reduces the overall likelihood that defects will be introduced That s important How important According to one study the cost to fix a defect after delivery is more than 100 times the cost to fix it in the requirements and design phase 1 No business wants to be hit with that bill Now to add to this the growing interest in agile development techniques as a way to deliver higher quality applications and we have an interesting recipe for success What exactly is RDM Before we can apply solid RDM practices we need to understand what RD and RM are Requirements definition and requirements management are the terms used to describe the process of eliciting documenting analyzing prioritizing and agreeing on requirements and then controlling managi
30. requirement e Understand the dependencies of each requirement Software quality managers have critical questions to answer in relation to the requirements business analysts define e Are the requirements verifiable when implemented e Are the requirements realistic and how can they be implemented and tested e Where do I assign testing resources for increased Methods amp Tools Summer 2010 Page 34 Agile Requirements Developers should e Be involved in the definition and estimation of the requirement to ensure realistic times are allocated to the user story for development purposes e Make sure they have enough detail in the user story to start developing All stakeholders manage requirements changes during the entire application lifecycle Together they must e Determine how a requirements change affects other requirements e Figure out which tests are affected by requirements changes e Decipher if changes introduce new risks and the level of those risks e Calculate how changes affect development schedule and release When business analysts work in unison with other SDLC stakeholders using strong requirements management practices they can reduce changes defects and delays and potential disruptions in the application lifecycle can be smoothed out Agile 2010 Conference Click on ad to reach advertiser web site O Agile2010 CONFERENCE E IN ORLANDO FLORIDA AUGUST 9 13 2010 ile Jim Newkirk Chair EEL a
31. server that allows you to implement that approach Figure 1 Developers will check in new code into your version control system 1 Hudson polls this system regularly for changes e g every minute 2 If changes are indicated the new code is checked out to build severs 3 and a new build of your project is executed The results are reported back to Hudson 4 that will set the new status of the project 5 stable unstable or failed Finally notifications are sent to developers and other stakeholders 6 which will either fix any problems found or proceed implementing new features This complete cycle typically does not exceed 15 minutes Methods amp Tools Summer 2010 Page 57 Hudson Installation Download the latest release from http hudson ci org latest hudson war Start Hudson in the command line using the following command java jar hudson war Finally open http localhost 8080 in your web browser You should now see the Hudson Dashboard like Figure 2 but for obvious reasons without any projects yet You are now ready to run If port 8080 is already used you can choose another port by starting Hudson with a command like java jar hudson war httpPort 8888 Hudson can also be deployed in application servers like Tomcat WebSphere or JBoss The Hudson project publishes new releases roughly every week Hudson will inform you of updates available on its Administration page Hudson Manage Hudson Plugins are installed
32. should have a clear definition of done that include everything needed to deliver software to the user otherwise you will have the same death march at the end of agile projects during the stabilization phase than in waterfall projects He remembered an early embarrassing personal experience where his definition of done as a developer was different from the definition from the user and he had to explain what was needed to achieve it When you have a gap between the team sprint results and what you really need to be done you will create at every sprint an increasing backlog of work that will have to be cleared before delivery of the application He gave the example of the number of defects for the same team with two different options In the first release integration testing was not included in sprints The number of defects strongly grows at the end of the project For the second release they included integration testing in every sprint activity The number of defects was kept under control and the software was completed before the deadline Not having enough time is the excuse often presented by teams for not including needed activities in their sprints However these are things that will have to be done later at a higher cost Additionally as you are accumulating bad code you create a technical debt that lowers your velocity Ken Schwaber defines Scrum as a light framework without technical practices This was done intentionally because
33. the Linux version but means rather than your code might be used by your friends If your code is bad then their code will be bad The full list of 97 things is available on http tr im 97tepsk Total Cost of Ownership and Return on Investment by Ken Schwaber Ken Schwaber talked about the lack of technical practices in Scrum projects that lead to technical debt However the end of the talk made me thinks that this topic could have been chosen only to promote its Scrum org certification courses Ken Schwaber started by saying that we often consider only the costs of the development phase but not the costs of the total life cycle of the software Therefore we ignore the impact of short term decisions on long term return on investment ROI The ROI can be measured with several aspects like the valuable functionality included or the absence of low value features He discussed after this the meaning of quality for the developer I can understand the software I can change the code without side effect I can check if things work after a change This lead to an exercise where he asked the audience to agree on a definition of done using the context of multiple teams developing common software He then asked if the agreed definition included performance testing stability testing Methods amp Tools Summer 2010 Page 75 Jazoon integration with other teams user acceptance testing code reviews His point was that you
34. this single tick which occurs on the time box boundaries In addition the unit of work commonly User Stories should be small enough to be scheduled into the time box and subsequently completed in the same time box However while User Stories in process can be limited within a time box they don t always fit into one exactly Additionally while releases can occur at the end of each time box User Stories are only potentially shippable product increments but may not be coherent product increments coon Prioritising cof Reviewing A A A p Retrospection SN AN com gt Releasing Stories oy l l H 1 it The various events can be decoupled however such that they happen separately at different rhythms This creates a polyrhythmic cadence more like a Drum Circle where each drum represents a different event The rhythm is more complex than the single tick of a metronome and can be more varied Units of work can be larger Minimal Marketable Features MMEFs which while needing to be as small as possible are not constrained be being required to fit into a time box Instead a MMF is able to flow over a number of process events while it delivers a releasable coherent product increment Methods amp Tools Summer 2010 Page 10 Kanban Prioritising planning reviewing retrospection and releasing all still happen regularly but because they are de coupled they can happen independently at differing rates which ma
35. validation rules generate rich admin interfaces and decorate the output of the object properties with display rules so we could for example say that a field was a USPhoneNumber data type and it would validate that it was 10 numeric digits allow us to edit it using three text boxes and would display the number as xxx xxx xxxx even though it was stored as a single 10 digit string We looked carefully at a number of web frameworks available in various languages but at that time they were not sufficiently mature to solve the range of problems we were looking to handle and the effort to implement a facade between the models we wanted to create in our domain specific languages DSLs and the inputs required by the frameworks available looked like it would be greater than just writing an in house framework to interpret the models the way we wanted We also thought for some time about what kind of concrete syntax to use for the DSLs Rails was just starting to become popular so we looked seriously at internal DSLs within our host language at the time ColdFusion the first commercially successful dynamically typed scripting language available on the JVM providing some of the benefits that languages like Groovy and JRuby now offer but in 2002 However we were concerned about maintainability and what would happen if we wanted to evolve the grammar of our DSLs so we opted for external DSLs We looked briefly at leveraging tooling like openArchitectu
36. 5 Voodoo VoodooMock s expectation engine uses Scenario objects which contain a half textual half object oriented description of what all the stubs in the test are expected to verify and in what order A tester will spend most of his time writing these scenarios VoodooMock is called voodoo because it uses bad practices hacks and black magic to implement all of its features 1 e globals god objects void pointers and abusing the header inclusion order Testing code is allowed to contain hacks to make the test work but VoodooMock s approach isolates the hacks into the generated code and out of the test code Generation of the stub code also means that once a hack 1s used it is consistent across all stubs in the test suite A lot of hacks were designed in order to allow full support of inheritance and templates For example an inheriting class can be tested as a different unit than its ancestor which is stubbed A Short Tutorial The following example provides a quick tutorial of using VoodooMock The example contains two classes Number which is just an object wrapper for unsigned and Sum which performs addition on two Number s The contents of the file Number h ifndef _ NUMBER _H__ define _ NUMBER _H_ class Number public Number unsigned value _value value unsigned value const return _value private unsigned _value endif And the content of Sum h ifndef _ SUM H define _ SUM H
37. 7 http wwu methodsandtools com forms submt php 22 WalidateDocumentTitle 0 Methods Tools Subscription Form 23 Wait 15312 24 InputYalue 0 68 TEXT Name Name e e 25 Wait 7203 26 InputV alue 0 73 TEXT Email email methodsandtools com 27 Wait 7469 28 Input alue 78 SELECT ONE Country Switzerland 176 29 Wait 10672 30 InputValue 0 291 TEXT Copies La T mm 31 Wait 3516 32 InputValue 0 315 SELECT ONE Size 51 to 100 people 2 33 Wait 4375 34 InputValue 0 332 CHECKBOX Mini ON TRUE 35 Wait 3265 36 InputValue 0 338 CHECKBOX Web ON TRUET 37 Wait 2110 38 Input Yalue 0 334 CHECKBOX Mainframes ON TRUE 39 Wait 2761 40 SubmitClick 0 349 Submit Submit NAV 41 Wait 11719 42 ValidateSelectedText 0 56 0 Your subscription request has been sent to 43 our administrative team and will be processed as soon as possible 44 Recording stopped at lt 2010 06 10 15 34 47 gt Script C Program Files Software Research eValid Program Project Group eValid MT Subscription evs Figure 1 Functional test script created through navigation with element validation Point and click is the first and simplest way to create functional tests with eValid but the tool support structural algorithmic testing and full programmatic testing Thus eValid can automatically synchronize with
38. Allison wondered Much to her surprise Yves said Yes there is My partner introduced me to check out 13 years ago When we had a discussion that became too heated she left my house to go for a walk I was very frustrated with that at the time It took me a few years to understand I was not frustrated that she left the conversation I was frustrated that we did not restart the conversation when things cooled down Yves was now really in a flow A check out goes like this Whenever you feel you are not capable of adding something valuable you say I m checking out and you leave the room There could be all kinds of reasons for this like being ill or being too angry Allison added This would be good for those companies that focus on being present and not enough on being productive Yves agreed I prefer that everybody being present is a person I can count on over counting on everyone being present I like the visual management of being able to count on the people that are present After nipping from his drink Yves continued I use check out personally as a kind of personal time out you know the kind of time out I ask my Methods amp Tools Summer 2010 Page 44 Core Protocols kids to take when they behave badly I know coaches who use this when they feel that their body is not OK migraine etc In those companies where being present is more important than working I see people going to cigarette breaks or the healthie
39. For example CallOrCopyOfReturnVoid Data File write Y will also match the event Call to Copy of Data File write and Call to Copy of Copy of Data File write Almost every unit apart from creating objects and receiving them through calls also accept them as arguments to the interface it exports VoodooMock provides a feature to create stub objects inside the test suite without calling their normal constructor and without passing through the expectation engine and therefore no expectation for their construction is required It does so by creating another class alongside every stub class prefixed by Fake e g for a class called Connection another class called Fake Connection will be generated When constructing such an object the test code provides the textual name for the object Methods amp Tools Summer 2010 Page 70 Voodoo A Fake object can be passed to the unit whereever the original class is used implemented by derivation and without adding new members to allow copy construction When a Fake object is destroyed the destruction event still goes through the expectation engine and is therefore appropriate when handing over the ownership of an object to the unit since it s destruction is part of the unit s behavior If the unit does not own the object e g receives it by reference a second prefix FakeND is more useful the destruction event also does not in
40. METHODS amp TOOLS Practical knowledge for the software developer tester and project manager ISSN 1661 402X Summer 2010 Volume 19 number 1 www methodsandtools com Are Software Developers Worth More than Accountants Methods amp Tools is located in Switzerland a country famous for its chocolate watches and banks I was therefore participating to a banking IT conference last month The CIO of a very large private banks revealed that 15 of employees of his company were working for the IT department He described them as the mechanics supporting all the business And I thought this was nice Then a CEO of a retail bank came to present the results of a survey of Swiss bank top managers They were asked what would make their bank different or better than their competitors None of the answers mentioned IT And I thought this was not nice Thus came the question do software developers make more difference than accountants for their CEOs Are they just something you need to have but don t really contribute to the performance of the organization The software development function is separated from the other operational activities and developers are considered as a support function as accounting could be This comparison is not so awkward as accountants belong also mostly to the introverted psychological category like developers And accountants could also deliver information that could change the way a company works finding for instance wh
41. Time sec 17 093 14 673 233 001 67 047 13 703 eValid id eValid LoadTest Chart Options Go eValid LoadTest Chart WF Load Scenario L log ec Copyright 2008 Software Research Inc Command ID LCID O03 Fastest Elapsed Time 7 644 msecs Average Elapsed Time 10 600msecs Slowest Elapsed Time 16 938meecs A total of 5 playbacks was made LCID O0 41 LC IDEO02 LC IBD O003 LOIDFO004 LOIDEO0S Slowest Bar LCOIDFOOS 16 938 msecs assigned lt Fastest Bar LCID OOS 2 172 msecs Average GG40 msecs Standard deviation F929 Figure 3 Load testing results Web Site Analysis You can launch the web site analysis either in automatic or controlled interactive mode Many setting screens that allow you to control the analysis depth of pages links to follow or exclude etc manage the degree of analysis and your own definition of what is an old large or small page It took 30 minutes to analyze automatically the complete Methods amp Tools web site with the default analysis settings For a simple web site like waterfallalliance org it takes 20 seconds A 3D SiteMap shows inter relationships of all scanned pages Reports are generated in real time Additional Functions The eValid suite contains a dedicated test suite management engine This system organizes a suite of eValid tests into groups and complete projects when you locate test scripts in the same folder It launches and analyzes eValid test results and provi
42. able 2 tasks will consume 40 of time available each with 20 lost to context switching 3 tasks will consume 20 of time available each with 40 lost to context switching etc Performing tasks sequentially yields results sooner As the diagram below shows multi tasking A B and C on the top delivers A much later and even C slightly later than sequentially on the bottom Dr Eliyahu Goldratt introduced the idea of throughput accounting in his business novel The Goal 10 Throughput accounting suggests that the business goal is to make a profit and that this is determined by work in process operating expense and throughput Profit is increased by decreasing work in process decreasing operating expense and increasing throughput Any features we have developed but not yet released can be considered inventory Therefore as well as helping to improve cycle time and increase throughput limiting work in process also helps to increase profit by reducing inventory In his keynote at Agile2009 Alistair Cockburn also introduced the idea that for software development the unit of inventory is the unvalidated Methods amp Tools Summer 2010 Page 9 Kanban decision 11 By limiting WIP we are focussing on getting feedback on fewer decisions sooner Finally by having fewer work items in process then the team is able to focus more on the larger goals and less on individual tasks thus encouraging a swarming effect and enhancing teamw
43. ad home page test Seles E LoadTest Scenario Editor File Insert Create a New LeadTest Script evl or Edit An Existing LoadTest Script WEF Load Scenario AUTO Browser Launch Interval msec 1000 C Program Files Software Research eValid Prq LoadTest File Name TestID Project Folder ProjectID Working Folder Log Naming Mode LogID Group Folder GroupID Scenario Width 5 Additional Parameters foptional Data Substitution Pairs VAR value foptional User Identification foptional Load Type Repetition Count Serve Script File ript Fi Type FULL m E C fe Add Insert LoadTest Line to Script FULL FULL EE B s s_ bs Save amp Load evl Script for Execution Figure 2 Load testing scenario TER A Y eValid LoadTest Monitor Options Ga Script Specified Current Slowest Script Fastest Script Verage Total Script TOTALS Name Being Run WF Load Page evs WF Load Page evs WF Display Poll evs WF Display Poll evs WF Load Page evs Load ID LCID 001 LCID 002 LCID 003 LECID 004 LCID 005 Total Run Count 5 5 Methods amp Tools Summer 2010 Page 54 Run Count 5 5 Playback Time sec 4 484 3 109 16 938 16 625 3 812 Playback Time sec Z 0oL 2 013 7 641 11 297 2172 Script Playback Time sec 3 418 2 934 10 600 13 509 2 40 Playback
44. ad to reach advertiser web site More than 600 coding rules available Checkstyle PMD FindBugs Report Unit Test metrics Cobertura Clover Emma Project and Portfolio dashboards Drill down from portfolio to sources Replay the past and compare versions Sonar is the central place to manage source code quality Visit the web site http sonar codehaus org Powered by Sonarsource i http www sonarsource com Methods amp Tools Summer 2010 Page 23 Software Product Line The first serious attempt at formal code reuse took a component based approach We built a framework for basic content management and then added a number of modules for common functionality like e commerce email newsletters and event registration Each module supported all of the functionality required by all of the clients They used a set of configuration parameters to configure the functionality for any given project The configuration parameters were edited using a web based site builder wizard and stored in a database This worked well for the first few clients As we did more projects we found that each client wanted different customizations By the time we got to fifty projects using the module based approach each with their own distinct customization requirements the configuration options and the underlying code for the components had become unmaintainable The next step in the evolution was a rather clumsy concatenation based code generator Yo
45. agement While she ordered some more drinks Allison asked about emotions I spend eight hours a day at the office That is at least the same amount of time I spend with my family Some people claim we should leave our emotions outside the office and behave professionally I can t do this And when I try I lose all of my creativity Yves could not agree more You are right that is impossible to do For a long time I have been puzzled about using my emotions in a smart way inside the corporate world And then I learned about check in and a new world opened Let me now start with an example I m checking in I m glad you asked me to talk about the Core protocols I m mad sad afraid I might be in my bed late again I m sad I miss my family I m mad I forgot to call my kids today I min Yves turned to her and asked So how do you feel when you hear something like this Yves waited a minute or two to let her reflect then he continued Let me tell you about my first reaction My first reaction when I learned about this was Wow that is powerful My second This won t work with me for Allison nodded Yes t won t work in Yves interrupted her My team my company my country Give me any reason 1 why it won t work in your team your company your country I had them all Let me tell you about a chat I had with Michele At that time I was already convinced it would be a good way to communicate with peo
46. ain obstacle was that functional testers did not have programming skills or test automation knowledge To solve this the test automation suggested that the functional testers would create their test cases using pre defined words and they will translate this into automated scripts The entire team favorably accepted this approach We proceeded to create a Keyword dictionary The keywords were mutually defined by the automation experts and functional testers During the first phase the functional testers wrote their test cases using the keywords and the automation experts translated them into automation scripts At a later stage we developed an automated application that took care of the translation This enabled the functional testers to create and execute the automated tests and saved even more time The keyword dictionary combined with the automated translation application generated a fast return of investment This allowed us to position test automation as a basis of our testing strategy rather than a luxury Methods amp Tools Summer 2010 Page 15 Software Testing This was the beginning of Test Language Test Automation Let s review the way Test Automation is commonly approached The testing process includes a number of phases test planning test definition bug tracking and test closure activities The actual test execution phase is often a recursive repetitive and manual This phase usually described as a tedious and bor
47. and between business and IT Track changes to compare current baseline requirements against pre defined thresholds Business analysts can flag requirements exceeding change thresholds assign risk and take appropriate action for example doing this may show that a user story is too large as is and needs to become an epic with multiple user stories under it Defining capturing and managing requirements properly in this way can add tremendous value to business IT and to the ultimate success of the software application or service developed Improper RDM or merely choosing to place less importance on it can result in a cascade of negative effects that not only affect software in the development and testing stages but the business as a whole For example according to Gartner 40 percent of unplanned downtime is caused by application failures costing an average of 100k per hour for mission critical applications 2 A large portion of those failures are due to poor requirements introduced during the development phase The problems of poor RDM The unfortunate results of poorly defined and managed requirements have been known and even quantified for some time Defects are most often introduced early and found later in the application lifecycle This is in part because business analysts have historically worked in an ad hoc way using word processing and spreadsheet software Those were the only options available until recent RDM specific softwar
48. ange events sometimes known as kaizen When teams naturally refine and grow their capability they often discover that they consistently have free space on their Kanban Board This is a sign that they can retrospectively lower their WIP limits as a result of an improvement These two approaches can be related to the states described by Mihalyi Czikszentmihalyi in his book Flow The Psychology of Optimal Experience 13 Pre emptively reducing a WIP limit is equivalent to moving a team through a state of anxiety where the skills required are greater the current ability Retrospectively reducing a WIP limit 1s equivalent to moving a team through a state of boredom where the ability becomes greater that the skills required Both paths are valid and can be used in context High Anxiety Skills Boredom Low Ability righ Methods amp Tools Summer 2010 Page 12 Kanban Implications Viewing Kanban Systems from these aspects creates a meta language to help describe and think about any process Kanban is not a methodology but something which can be applied to an existing way of working to understand it from the perspectives of workflow visualisation work in process cadence and continuous improvement As a simple example it is possible to describe the typical Agile time box in terms of limiting work in process Don Reinertsen gave me the analogy of a bucket of water as being a container for work in process If the bu
49. at value through the system Making the expand collapse patterns explicit helps us to deliver the value more effectively across the whole value stream It could be argued that the value often goes through a typical waterfall workflow This usually has baggage associated with it however so instead we can generalise the following workflow Incubate gt Illustrate gt Instantiate gt Demonstrate gt Liquidate Incubation is when something is still an idea It may grow and evolve on its own but without significant investment Illustration is when the idea starts to take shape into something which can be described more concretely typically with user stories and examples or tests Instantiation is when the idea is built and tested Demonstration is when it is completed and ready to be accepted by the business Liquidation is when the idea is released and realising its value Another way of thinking about discovering a workflow is to view it as process archaeology A process often has many layers and by digging through those layers we can surface what is really going on This will typically involve talking to the team members about how they really work and it will often result in something other than what was expected as problems that were previously hidden are surfaced Common items to look for in a workflow include queues and batches and failure demand Queues and batches are points in the workflow where the work is being processed Qu
50. cket is being continuously filled with water then there are two approaches to avoiding the bucket from overflowing The first is the equivalent of a time box If we understand the rate at which the water fills the bucket then we can set a cadence to empty it before it overflows The second is the equivalent of setting explicit WIP limits If we have mechanism to signal when the bucket is nearly full then we use that to empty it before it overflows These aspects can be used as levers adjustable in either way to tune a process This is a different approach to describing a process in terms of practices which are more like knobs to be dialled up to ten or eleven The current configuration of the levers can be used to describe the current location of a team s process on its journey of continuous improvement a bit like a trail marker identifies a location on a forest path Having a wide range of configurations of processes using these aspects of a Kanban System means that we can employ different processes in different contexts We then work to improve those processes as we improve the underlying contexts Using a ski slope metaphor we can begin with a Nursery Slope process for an immature team or organisation which requires lots of safeguards in place due to low skill level and over time move the team towards an Off Piste process when the team or organisation are very mature and require much less safety due to their high skill level
51. d your team will build on these built in fixtures to automate your tests with your production code Methods amp Tools Summer 2010 Page 60 FitNesse Documentation The http fitnesse org site has an up to date user guide and many tutorials and screencasts to help you get started with FitNesse There are two excellent books to help your team design effective FitNesse tests FIT for Developing Software by Ward Cunningham and Rick Mugridge and Test Driven NET Development with FitNesse by Gojko Adzic Other websites such as http gojko net and Brett Schuchert http schuchert wikispaces com FitNesse have helpful tutorials videos and screencasts FitNesse has an active developer and user community which is vital for an open source tool If you have questions or issues you can search the archives on the Yahoo mailing list http tech groups yahoo com group fitnesse and post your questions if you don t find an answer You can rely on getting help from the community Learning Curve Learning to write test cases in the various formats such as ColumnFixture is fairly easy Learning how to design them well for efficiency and ease of maintenance takes more time If you don t have object oriented design skills pair with a programmer or other team member who does Apply good code design practices such as Don t Repeat Yourself to your FitNesse tests If you re not a programmer you ll also have to collaborate with a programmer
52. dea for a place for a BootCamp is a good idea Christophe Alignment check where are you compared to your goal I m at 7 out of 10 Yves I m at 6 out of 10 B n dicte I m at 2 out of 10 Christophe B n dicte as you are the lowest you start B n dicte I understood that almost all European BootCamp took place in Koningsteen Belgium Yves Yes B n dicte Is there an option to do that in another place Yves Yes there is We keep working with Koningsteen as it is a great environment where we know we can do everything we want We selected Belgium as it is rather central in Europe Will you tell me what other place you had in mind B n dicte Yes I was thinking about Domain de Soulignac en France Yves Will you tell me some more about the Domain B n dicte Yes At the heart of the Limousin Yves That looks like a great place I would love to try this location Christophe Alignment check I m at 5 B n dicte I was at 10 I have a new want I now want the same as Christophe wants I m at 5 Yves Ok let see when we can do this Do you want English and French speaking trainers B n dicte Yes some of the people I know can speak English but they would prefer a French speaking trainer Yves Then the first available option is September What week in September can we do this B n dicte I would prefer the second week of September Christophe Yves Yes that is possible Yves Cool we do the next Bo
53. deas Now Allison really was not happy Some not all of them He tried to ignore her mood and replied monotone No not all of them When I don t like an idea or don t know how to apply that I leave it out He paused That seemed to have calmed her down a bit Please say more Yves felt an example might do the trick For example your idea of Scrum I prefer not to link Scrum and the Core protocols Allison started to mirror Yves teasing style Why not they don t work together Yves was clearly amused by her remark Haha no they do I see them as different tools in my toolbox When I explain one I leave the other out as I think it will confuse my audience Methods amp Tools Summer 2010 Page 41 Core Protocols Allison felt both happy and sad Yves seemed to have an answer to everything She said as calmly as possible OK that s fair For Yves that was a sign to push her further Will you tell me why did you rate it a 6 Isn t that obvious I had 4 ideas 10 minus 4 is 6 she said surprised by his question That was what I was afraid of Yves quickly replied What did I do wrong Allison s voice sounded upset Yves ignored her emotion and told her The number you subtract should be about the value that your ideas have to you I can t do that Allison s voice now sounded shrill Yves Why not You could hardly hear her voice when she said That number is too high Not surprised b
54. den or appended The answer of course is it depends on the requirements But consider that the first alternative will not require changing the test when refactoring to use some other formatting engine which might decide to split the write to several smaller ones Finally reuse scenarios Make the good case the first test then only override it more than one way at the failure point to cover failures Split stories into simple smaller stories and reuse these building blocks to create your good cases Same as in software development Set Up VoodooMock uses a binary python module that wraps the Open C Core parser The official release includes this module in binary form for Python 2 6 under windows Other platforms will require building the module The VoodooMock distribution includes the sources for rebuilding it and makefiles for GCC and MinGW inside the archive named wrapocccore tbz2 Warning The OpenCCore parser still has many bugs An example VoodooMock generator command line invocation tools voodoo multi py input cpp output voodoo exclude cpp client Core h ignore bIN b ignore bOUT b ignore bINOUT b ignore bOPTIONAL b only if new The input argument points to the first directory to scan for header files The output argument points to a directory where the header files mirror tree will be created exclude excludes a file from being mirrored This
55. des a compact PASS FAIL report summary You can use eValid as an AJAX monitoring agent with its synchronization capabilities eValid offers also a test data generator All test results are usually stored in text files but you can also use a MySQL access to store them The tool proposes also a batch interface command line operation and an available C interfacer Methods amp Tools Summer 2010 Page 55 eValid Conclusion eValid is a software testing tool suite that allows testing both the functionality and the performance of a web site You can also do a site analysis The tool is quite intuitive and the training level needed for a first usage not important watching the short movies available that explain the basic functions This allows people without technical experience to build and run their own tests It is nevertheless a powerful tool that goes far beyond a simple point and click technology and you can spend time adjusting the settings and the scripts to your technical needs for more sophisticated testing especially for AJAX applications Methods amp Tools Summer 2010 Page 56 Hudson Hudson Your Escape from Integration Hell Dr Simon Wiest Dr Wiest Software Engineering http www simonwiest de Hudson is a popular web based continuous integration server written in Java Hudson is used in 17 000 server installations worldwide in small medium and large companies alike including eBay Hewlett Packard
56. developers for writing DSL models That way the programmer can help with the structuring of the models and deal with less sophisticated tooling while allowing the domain expert to focus on describing the business rules and validating that the models properly describe what they were trying to communicate Methods amp Tools Summer 2010 Page 28 Software Product Line Projectional Editing Recently there has been a fair bit of work in the field of projectional editors In 2005 Martin Fowler coined the term language workbench to describe an IDE designed specifically to support language oriented programming for the development of DSLs Both Intentional Software and JetBrains now offer editors that try to fulfill this promise I would argue that there is still work to be done before it s clear whether this will become a mainstream technology but I would thoroughly recommend downloading and trying out JetBrains MPS Meta Programming System to get an idea of the potential of this approach At a more pragmatic and immediate level it s worth remembering that you are not limited to just a single concrete syntax for displaying and editing your languages It would be quite possible to support a fluent interface to allow developers to quickly implement calls against your framework domain model to provide a forms based interface to allow casual domain experts to add their own rules and to provide some kind of graphical representation of your models to
57. e can create a pull system which balances capacity and demand through the value stream In a pull system work is processed through being signalled rather than being scheduled This is what avoids a build up of inventory and enables work to flow through the system as capacity allows Satoshi Kuroiwa a former Toyota manager used the analogy of a chain of paperclips in a talk at Agile Japan in 2009 Pushing the paperclips will inevitably cause them to pile up whereas pulling them will result in them moving smoothly Applying this to a software development workflow means that upstream work can be made available but it is the team members responsibility to decide when they are able to take it The act of taking or pulling the work is a signal for the more upstream work to be processed However when work is available but not being pulled then production upstream will gradually throttle down to avoid any pile up With a push system on the other hand work will be scheduled and handed downstream regardless of whether there is capacity to process it or not Work in Process WIP has an impact on productivity inventory and teamwork and by being aware of WIP and reducing and limiting it we can improve Kanban System Productivity can be measured in terms of cycle time and throughput of valuable units of work Cycle time is the length of time to complete a process and throughput is the amount of output from a process in a given period of time C
58. e is limited experience in how to create such high performance results oriented successful teams Luckily for us Jim amp Michele McCarthy created an experiential workshop in 1996 to learn about it Over the last 14 years they have recorded communication patterns they call these the Core Protocols that help create high performance teams Allison turned silent for a second but she kept looking at Yves Interest had sparked in her eyes Something else not so nice also That is quite a strong statement she merely said Yes it is Yves answered And I had my doubts when I first read about these patterns he quickly added So is it the silver bullet they claim it to be She might have been cynical but there was no trace of it in her voice Mmm Yves mumbled I don t believe in silver bullets but I do believe in tools and techniques that I can use to help teams When I first read about these patterns although I liked them I found all sorts of excuses not to use them he remembered While she looked away as if she was now in some other universe Allison said That reminds me of the people I encounter who are afraid to use or start using agile As this was exactly what he was trying to say Yves knew they were connected He continued When I realized that I said to myself it was time to get outside of my comfort zone As some of these patterns were so different from what I was used to I needed to have a safe place to exper
59. e tools helped them work more systematically Working ad hoc with tools not designed specifically for the job naturally leads to problems The National Institute of Standards and Technology NIST estimates that 70 percent of software defects are introduced in the requirements phase 3 The later defects are found in the application lifecycle the more expensive they are to fix This issue is compounded in agile because if each iteration is bogged down with defects from the start how are the teams meant to move forward and isn t one of the aims of agile to produce higher quality software Methods amp Tools Summer 2010 Page 33 Agile Requirements So what is the real cost of weak RDM to business According to voke Inc s recent Business Analyst Survey a software development project can cost anywhere between 1 million and 20 million 4 An average project typically has the following profile e People per project 75 e Project duration 17 2 months e Cost per project USD 3 2 million So based on an average project spend of USD 3 million and factoring in the estimated effect of poor RDM an average project could end up costing as much as USD 5 87 million nearly double its original cost Furthermore if we estimate that this happens in 5 out of 10 major projects per year that is an estimated total yearly cost of almost USD 30 million That kind of money does not merely affect IT and software development That level of unneeded
60. ed No no thinking in the same direction is not thinking the same he replied quickly Let me tell you a story to clarify this He knew this was hard to understand When I organized a BootCamp in Europe I arranged an interview with the trainers and a business magazine As I walked into the interview room I told Paul and Vickie the trainers that my most scary idea would be to ask Benny the reporter to join us on Friday when the team had to deliver their BootCamp results Halfway through the interview I got a phone call from the team that was out on an adventure Yves will you ask the reporter if he wants to join us on Friday That is an example of being in a state of shared vision This particular shared vision was created by working together over the course of three days Three days gee they must have been lucky Allison thought skeptically As if he knew what she was thinking Yves added I have seen examples of a shared vision state in all the BootCamps in which I have participated Creating a shared vision state in a repeatable way Allison could hardly believe what she was hearing Wow that sounds powerful Tell me how this is done Yves who knew how unrealistic this might sound to people who did not have the same experience felt it was time to get to more practical examples Patience my dear Watson Before I can do that we have to look at the basics The behavior patterns called Protocols of the Core
61. efects and delays appear That is why businesses are starting to take a look at applying RDM more systematically and thoroughly A different view of the application lifecycle Why wouldn t business focus on RDM throughout the application lifecycle Forward thinking organizations are already applying RDM across all phases of the application lifecycle But even more could Why aren t they First it 1s quite common in the industry to look at the application lifecycle management ALM process through only a technology and development lens This is seemingly where all of the action is Second there are resource investments required to implement strong RDM practices However those investments are nowhere near the costly consequences of weak RDM From my point of view the recipe to success means defining the right requirements to work on and selecting the right technology to achieve the businesses goals within the right timeframes However it doesn t need to be difficult With software solutions now on the market to help stakeholders manage requirements and many solutions providing hooks into other SDLC tools in particular aimed at bringing the business analyst the tester and the developer closer together it has never been easier to implement better RDM practices References 1 B Boehm and V Basil Software Defect Reduction Top 10 List IEEE Computer January 2001 2 Gartner From Concept to Production Software Changes and Confi
62. efer to an Agile team s task board or story board Finally it could be used to refer to the whole system within which an Agile team works In his book Toyota Production System 1 Tatichi Ohno says The two pillars of the Toyota production system are just in time and automation with a human touch or autonomation The tool used to operate the system is kanban With this perspective a Kanban System for Software Development refers to the whole system and not simply the tool or the board The community chose to name the systemic approach after the tool that inspired much of the thinking Viewing Kanban as a systemic approach leads to Systems Thinking John Seddon in his Vanguard Method 2 says that management thinking defines the system which defines performance In order to improve the system we should first understand the purpose of the System create measures which help to determine whether the system is meeting that purpose and then put a method in place to enable the system to meet that purpose Kanban is a way of creating a method and generating metrics in order to improve capability to meet a purpose The remainder of this article discusses five aspects of a Kanban System workflow visualisation work in process cadence and continuous improvement These aspects are not practices to be followed but key areas to consider when thinking about the method used to change and improve an organisations delivery capability Workfl
63. endieck who was listening into the conversation will you answer this one Mary Mary Yes I will The goal in Software Development is first of all to make all decision changeable Decoupled architecture test harnesses etc But when a decision is permanent it cannot be easily changed and when that decision is also critical to success you do not want to make it early instead you want the team members to decide when they will decide That means the teams comes to an agreement on when the last responsible moment is and then when that moment comes they make the critical difficult to change decision Yves relaxed I could not have said that better Remember that first meeting with these same 10 people imagine that I would have proposed my idea and that we had voted on this We would have won 25 minutes for 10 people That is 250 minutes Allison That is half a working day Yves Yes Imagine winning half a day in every meeting How do you feel about that Allison That would make me feel a lot better about meetings What about aligning people in meeting And getting to know each other in these meetings Yves I agree alignment is important for that you should use the alignment protocol Actually having your team taking decisions helps them much more for understanding the purpose of the team For getting to know each other the earlier check in is a lot better I had teams take five or six decisions in less then 10 minutes And
64. ersation Yves amused by her reaction clarifies Let me translate this BlahBlahBlah I would like you to hear my voice as for me it is important that you think I am important And blahblahblah I agree with everything that was said Yves looked at Allison and asked Is this a pattern or better an anti pattern you recognize She nodded Yves continued Imagine you have a meeting with 10 people Five of these people each spend five minutes talking like this usually in a group once a person talks like this a lot more people adopt the same behavior so it s probably more then five Methods amp Tools Summer 2010 Page 46 Core Protocols Allison calculated That is 25 minutes for 10 people That is what Yves wanted her to realize Now imagine that instead of this you quickly make decisions Would you not like this He did not wait for her to answer his rhetorical question Decider offers this possibility Let me give you an example of a Decider Christophe I propose that we publish our French customer documentation to our website at 12 00 1 2 3 Everyone shows his or her hand Christophe thumbs up Gino thumbs up Sylvia flat hand Rachel thumbs up Alistair thumbs up Linda thumbs down Christophe looks at the group and focuses on Linda Linda what would it take to get you in Linda If want to be sure we have enough time to remove the spelling mistakes Bernard found this morning Christophe does
65. es usually write this as ti TS ASSERT EOUALS S um number niimbero J result z 300 J This snippets actually calls Sum first constructing it over the two stub objects and then calling the result method and finally asserts the result The constructor Sum Sum first calls the value method of the object numberl which has the textual name Fake Number 1 that matches the first event in the only alive scenario object Therefore the return value is fetched from that event and the scenario object advances to the second event Sum Sum continues to call the method value of the second object matching the second event and completing the scenario Methods amp Tools Summer 2010 Page 67 Voodoo The last line of interest Scenario asserckinished gt This line verifies that the scenario object scenario has finished matching all of its events VoodooMock configuration file defines how this assertion is implemented which is usually just TS ASSERT Summary this example shows how to e Create stub objects without using the constructor e Create a scenario recording run it and verify it was complete e Assert the unit gave a correct result under that scenario Features Of The Expectation Engine This section describes the different capabilities of the VoodooMock expectation engine without giving any source code examples An expectation is one of the following events e Construction
66. eues are where work is building up because there is not enough capacity to process it and batches are where work is being held to be handed over and processed in a large volume Failure demand is where is work the result of not doing some or not doing something right Rather than optimising a value stream for failure demand the failure demand itself should be avoided It is important to remember that workflow stages are not equivalent to people or roles and that having transparency of stages in a workflow does not imply having silos or specialisation Instead by focussing on letting the work flow across the stages we can move towards a one piece flow where a multi skilled cross functional team can work as a single cell to progress the value through the system A generalised specialist approach means that team members can both focus on one particular stage while still being involved across the whole process in the same way the Type C development is described in the New New Product Development Game 3 _ Ld Incubate E ilustrate instantiate Ld Demonstrate Ld Liquidate Methods amp Tools Summer 2010 Page 4 Kanban Seapine Agile Expedition Click on ad to reach advertiser web site Agile methods can rocket along your software development if you know the tips tricks and traps It can be challenging territory unless you know the practical path to take Let Seapine be your Agile guide wit
67. expenditure affects every part of the business and the overall bottom line Superior RDM superior project results The pillars of good RDM Business analysts and software quality managers As we ve stated poor RDM introduces a wide range of negative effects to business and IT While defining and managing quality requirements and user stories early in the software development lifecycle helps verify that the final software or application product delivers what the business needs and customers want effectively and efficiently it also mitigates release date extensions and costly fixes later that may negatively impact resources and business critical functions Applying effective management of requirements used to be the realm of the business analyst However experience has shown that requirements are more accurately defined when a joint effort between business analysts and software quality managers exists With agile this even more true as in agile all stakeholders should be involved in the development of the user story so that it is properly estimated and defined so it can be auctioned by DEV and QA Here is a quick look at the general responsibilities of the different stakeholders involved in the life of a requirement user story Business analysts must properly e Write a succinct user story in the business language e Define unambiguous requirements e Establish the business value of each requirement e Quantify the risk associated with each
68. export test cases to and from an Excel spreadsheet which helps However an IDE plugin so that tests could be edited via Eclipse or other IDEs would be a big improvement Benefits Our team found early on that writing FitNesse tests forced testers programmers and customers collaborate more We expected it to provide a great safety net of regression tests which it does but we were surprised to find the greatest benefit was the increased communication during the development of a story or feature In the process of turning business examples into FitNesse tests we discovered disconnects in our understanding of what a story should deliver When this happens we can immediately get testers developers and customers together to clarify the desired system behavior Writing code test first meant that we didn t have many bugs in the traditional sense but the development team often missed or misunderstood requirements The Methods amp Tools Summer 2010 Page 63 FitNesse process of writing test cases in FitNesse helped us get quicker feedback and deliver the right business value Our FitNesse tests make superb documentation They include both narrative about the functionality they re testing and executable tests They have to keep passing so unlike the written documentation many teams have we re forced to keep them up to date When someone from customer support comes over to ask what results should come out from a given set of inpu
69. ften the error messages thrown are not very helpful in identifying what really went wrong In our case we did end up creating end user writable DSLs using a form based interface which along with visual modeling tools are often the easiest input mechanisms for casual modelers but it s worth considering whether you can get sufficient value just by creating DSLs that end users can read so they can validate that the program states what they were trying to express about their domain Often end user readability provides most of the benefits of a DSL for much less effort than creating a truly end user writable solution Editing Options There are lots of ways of editing DSLs You could use an XML concrete syntax and some kind of XML editor a visual modeling tool a forms based UI a simple text editor or using XText you could even generate a plugin for Eclipse to allow your modelers to use an IDE Of course with an internal DSL your modelers will probably just use their IDE or text editor of choice for their regular general purpose programming language editing It s important to think carefully about the kind of people who have to be able to write the models and the support they ll need in terms of editor features semantic checking and meaningful error messages Creating an editor that is usable by domain experts is usually more complex than creating one that a programmer could use One thing to consider is the possibility of pairing domain experts with
70. generation test automation approach that separates the task of automated test case implementation from the automation infrastructure Test Language is not a test automation approach Test Language is a comprehensive test approach that hands over the responsibility of automation plan design and execution to the functional testers by using KDT based solution Background Several years ago I was a Test Manager for a large organization in the defense industry The team was consisted of 10 test engineers 2 of which were test automation experts and the others were functional testers The test automation experts were focused on developing test automation scripts that covered some of the functional processes of the application It took me only few days to realize that things are not efficient The same tests that were executed automatically were also tested manually The functional testers had low confidence in test automation scripts since the test automation experts did not have the required knowledge about the application under test The test automation development could start only after the application was ready for testing and thus was relevant only for small part of the tests mainly regression test I presented the problem to the team After many discussions we came up with the idea of letting the functional testers create test automation scripts The idea may be simple but we faced a number of challenges in trying to implement it The m
71. gh which could be interesting Maps also introduce some different ideas What would a kanban board look like it showed the terrain of a project and where each piece of work was on that terrain The most common form kanban board is probably a relational one where the two axes show different types of information such as scope and status Most of Tufte s book is spent discussing ways of improving the way that data is presented specifically maximising data ink reducing chart junk and improving data density Data ink 1s the ink that actually represents data While kanban boards generally use more than just ink the principle holds true for making sure that as far as possible anything on the board should hold information The corollary to this is that anything which isn t data ink is chart junk Grids redundant data or decorations and embellishments for aesthetics may create noise which masks the real story Finally data density is the amount of data within the given space The eye can take in a high precision of detail so by maximising the data ink and being clever with multi functioning graphical elements it is possible to visualise many dimensions in a small space A kanban board is what Tufte would call a multi variant display with the variants typically being the usual project management details but also including the concerns of any member of a board s community of interest As a starter there are the popular iron triangle va
72. gile2010 agilealliance org Register now at http agile2010 agilealliance org register html Presented by Methods amp Tools Summer 2010 Page 35 Agile Requirements Everyone in the application lifecycle wins with strong RDM Positive results from strong RDM are not limited to business analyst s Concrete requirements definition and management help deliver a product that is more in line with business needs budgets and schedule It does this by helping everyone in the application lifecycle stay on task and add more value to the overall project e Business analysts can show stakeholders why certain requirements take precedence over others e Designers know exactly which application characteristics such as performance scalability and usability to emphasize and why e Coders understand the level of resources they should devote to developing specific functionalities e Software analysts can assign testing resources more efficiently based on requirements importance e Test planners can determine the level of test effort necessary for each requirement Plus they can determine if reducing or increasing test efforts is justified given the business value of each requirement If more focus on RDM is encouraged and implemented from the top down not only are projects more likely to meet intended business metrics but also all the players involved have a better understanding of what is required of them what they need to accomplish and
73. guration Management April 2008 Management 3 NIST 2002 RTI Project 7007 01 1 4 voke Inc s recent Business Analyst Survey Methods amp Tools Summer 2010 Page 38 Core Protocols The Core Protocols an Experience Report Yves Hanoulle www hanoulle be Somewhere in a bar at a European Agile conference Hello Yves Yves turned his head to the voice but did not answer back She continued I played your leadership game a few years ago Yves who had run the session at a dozen agile conferences frowned in an effort to remember her name At that moment you were about to leave for a McCarthy BootCamp You were both excited and afraid of doing so Yves kept silent for a second Will you spend some time with me and share your experience she asked firmly Yves replied Hi Allison glad to see you back I m delighted you remember that Yes I will She smiled After a little pause Yves continued The week after we talked I went to a Core Protocols BootCamp in the US Before I share my experiences of that week and of using the Core with teams in the five years since let me start with a little history of the Core Where you in the session yesterday about high performing teams Allison yes as a CEO I want to know how I can turn my company into a high performance company High performing teams have been a big buzzword in IT over the last 20 years he reminded her Although everybody talks about this ther
74. h the Seapine Agile Expedition a W EW Seapine econvmtagi f web based learning adventure that carries you from starting a backlog 2 J and running your first sprint all the Way to releasing your product 2 Seapine Software Methods amp Tools Summer 2010 Page 5 Kanban Visualisation Visualisation is the means by which we can understand the work and the workflow by using a kanban board to create a powerful visual management tool that shares a mental model which is visual interactive and persistent In a recent TED Talk 4 Tom Wujec explains how this works when he talks about three ways that the brain creates meaning Firstly visualisation creates a mental model because of the way that different areas of the brain process different visual inputs such as shape size and location Secondly interaction enriches the mental model further through engagement Finally persistence allows the mental model to be part of an augmented memory which can evolve over time This leads to the idea of boundary objects Brian Marick wrote an introductory paper 5 in which he talks about communities and practice and interest A community of practice is formed around a work discipline while a community of interest is formed around a common problem or concern Communities of interest are made up of members of different communities of practice A boundary object provides a means for communities of interest to communicate acros
75. h each requirement This phase also adds objectivity to the application lifecycle Too often individuals believe their requirement is most important due to a context skewed perception of that requirement Traceability deals with the association that exists between requirements and other entities in the lifecycle These relationships can exist on many levels in the context of requirements user stories e Requirement to requirement e Requirement to business process e Request to test e Requirement to defect Overall traceability between requirements and other project artifacts allows a business analyst to manage scope creep and verify all requirements have been met Change is a requirement alteration addition or deletion A change can occur at most anytime and for a multitude of reasons Some of the more common ones are listed here e Missed functionality A stakeholder working with an existing system could simply realize that it is missing a feature a new user story will likely be added to the backlog e New defects found A bug or more importantly the need to address the bug should also be considered a requirement e Incomplete understanding The business or IT realizes they do not understand their actual need fully It is common to show a stakeholder your working system to date only to have them realize what they asked for really is not what they want after all This is why active stakeholder participation and short iterations are v
76. he like Both functional and non functional requirements vary tremendously with the type of application or product being developed As we have already discussed they can take the form of traditional requirements specifications or more agile like user stories Similarly they can be defined and captured in simple text format or visualized more elaborately with pictures business process flows and even simulations It all depends on your organization s development method To visualize or not to visualize Whether a requirement is textual or needs to be visualized is a product of the requirement itself How do you know Here are some questions to ask e Will visualization facilitate more agile and rapid requirements definition or will it add time to the development process unnecessarily e Will requirements complexity multiple sub requirements for example result spider web in diagramming that over complicates definition e Will requirements be visualized by type For instance visualizing the user story and textualizing functional requirements associated with the user story e Will requirements be visualized by priority or risk High priority or high risk requirements may be visualized while low level requirements are not MKS Enterprise Agile Click on ad to reach advertiser web site A bigger whiteboard isn t the answer for scaling Agile Choose MKS Integrity to power your enterprise Agile transformation Get the whitepaper
77. ich consists of three elements autonomy mastery and purpose Autonomy or the desire to direct our own lives is achieved when team members can see what needs doing understand the working agreements and choose themselves what they should do Mastery or the urge to get better and better at something that matters is achieved through being able to interact with the kanban board to evolve and improve it Purpose or the yearning to do what we do in the service of something larger than ourselves is achieved when the persistence of the kanban board makes it clear what the value of the work is and why it is being done A kanban board is a visualisation multiple pieces of data In his classic book The Visual Display of Quantitative Information 7 Edward Tufte introduces a set of principles for the effective display of data and it is insightful to review some of these ideas Methods amp Tools Summer 2010 Page 6 Kanban Tufte talks about a number of different types of graphical designs Time series is probably the most common where time is along the horizontal axis and another data type along the vertical This is probably the least relevant design because a kanban board is typically a snapshot of the current status Similarly a space time narrative which tells a story in a spatial dimension over time may not be the most obvious choice It does raise the question of visualising the narrative of the work over time thou
78. ich products or customers are truly profitable In a book from Watts Humphrey he quotes Dick Garwin the designer of the hydrogen bomb saying You can get credit for something or get it done but not both Software developers may belong more to the second part of this alternative Despite all problems that impact our projects we deliver solutions that allows organizations do perform better but we don t get all the recognition that we deserve Some might be happy with our current lack of visibility but then we should not complain if we are often considered only as a cost variable that should be minimized and not elements that could increase revenues To achieve this objective it 1s important that developers get closer to their users and improve their knowledge of business Users don t want a cool Ruby on Rails Ajax apps they want solutions for their problems If we want more consideration from the management we have to express more our positive impact in organizations After all even some accountants managed to do this FATI Inside Aspects of Kanban Test Language Introduction to Keyword Driven Testing A High Volume Software Product Line Better requirements definition management is better for business The Core Protocols an Experience Report Tool eValid Tool Hudson Tool FitNesse Tool VoodooMock Mock Objects Framework for C Conference Jazoon Distribution Sponsor MKS Intelligent ALM Click on ad to reach advertise
79. ience them I was too scared to try them out in a Methods amp Tools Summer 2010 Page 39 Core Protocols team or even talk about them She smiled again as she teased him So that s why you did not want to answer my question back then She was right and he knew it Yes That s why I m really happy you have asked me this question again Let me see where should I start Yesterday Jeffrey said that teams needed a shared vision Do you agree with him she tried to link what she already knew and this new stuff Great question Yves felt the adrenaline and he continued Indeed a lot of management books talk about having a shared vision for a team Often people like Jeffrey make the mistake of thinking of such a vision as a vision or mission statement Surprised by his answer Allison asked You don t think the exercise where Jeffrey told us to create a vision statement helps to focus a team Yves remembered his resistance for the exercise That s correct for me a shared vision is about a state not a statement And having management creating a statement for a team is even worse Shared vision is a state not a statement she tasted the sentence in her head Yes it felt right Yves continued What I learned from BootCamp is that a true shared vision is the state where a team all thinks in a direction sharing a picture of a desired future People thinking the same don t you want diversity in your team she ask
80. ilar to what you see with the Behavior Driven Design frameworks like rspec GSpec and JBehave What We re Learnt In this section of the article I want to review some of the important concepts for working with domain specific modeling and software product lines and our experiences when working with them Internal vs External DSLs In the last few years there has been a lot of discussion about internal DSLs in languages like Ruby and Groovy and more recently in languages like Scala Boo and Clojure Of course this is nothing new Most Lisp programs are built up using DSLs defined using Macros but the concept of language oriented programming has been gaining wider attention recently Internal DSLs are domain specific languages which are implemented within an existing general purpose programming language gppl You add domain concepts to your program and your Methods amp Tools Summer 2010 Page 27 Software Product Line DSL models are part of your application code and are parsed directly by the gppl parser Internal DSLs are relatively easy to implement Often you ll create a fluent interface using a builder pattern on top of your domain model API so you can make statements like new meeting from 4 pm to 6 pm which are easier for business users to read and validate than traditional API calls Internal DSLs also provide access to native language constructs for mathematical operations and control flow constructs so if you do find a
81. ill advance to the next expectation This behavior is useful in test driven development first write a good scenario and when writing the bad cases use the good scenario but only override the failing event Always objects are lists of unordered expectations that can be called zero or more times e g gettimeofday and logging Several Always objects can coexist together with Scenario objects Scenario objects always takes precedence over Always objects When in conflict the last Methods amp Tools Summer 2010 Page 68 Voodoo Always object created take precedence over other Always objects If the expectation conflict is inside a single Always object the expectation last added to the object takes precedence This behavior provides a similar facility for good and bad scenarios create a single Always object for the good test and fail each call one by one in other tests ExpectationList is a container of expectations that is not connected to the expectation engine 1 e expectations stored in it will not be matched It allows creating subscenarios to be added into a Scenario or an Always as a group used for dividing scenario building into functions All three containers support simple editing Editing a scenario helps writing readable tests most of the tests will only describe the difference from one of the major testing scenarios The editing primitives include
82. in case the minimum required operating capabilities are not present License amp Pricing Commercial Prices are visible http www e valid com Products bundle pricelist 9 html Support User mailing list forum and blog Installation The installation runs smoothly through an InstallShield process After registering the license key s Help Manage License you can start working with the product Documentation The documentation user manuals tutorials movies demos etc is comprehensive and fully accessible from the tool To have a first glance at the tool features I will recommend looking at these online resources Tutorials http www e valid com Products Training 9 index html Videos http www e valid com Products Documentation 9 Movies inventory html Configuration eValid has a Settings panel that allows modifying general options and those dedicated to a specific feature record playback site analysis The user manual gives a detailed explanation of each configuration field The default configuration allows working well but there are many parameters that could change your assessment of the results especially in the site analysis area Features Architecturally eValid is an overload of the IE browser It adds functions to the browser by incorporating the entire browser as a support engine Functional Testing You can create a script simply recording your actions on the web page and adding validation action that
83. in his lively style 1 Do a lot of deliberate practices Kevlin added to make the task not to complete the task He compared this with a cello player that will exercise for hours just to perform rarely on stage The importance is not to realise things but to be confident when and how to use coding techniques 2 Learn to estimate This part deals with the difference between estimate target and commitment It is contributed by Giovanni Asproni a Methods amp Tools author For a more detailed discussion look at his article in Methods and Tools Fingers in the air a Gentle Introduction to Software Estimation http www methodsandtools com archive archive php id 79 3 Know your next commit It is a good thing to have a big picture of your current project as in I am working on this user story for my customer but developers should also be able to focus on the current task as in I am refactoring the CreateAccount code 4 Comment only what the code cannot say If a program is incorrect documentation matters little 5 Code in the language of the domain Use in your code names meaningful for domain like AccountNumber or CreateAccount for a bank 6 Prefer domain specific types to primitive types DistanceInMeters is more meaningful than integer 7 Resist the temptation of the singleton pattern You are never sure that there will always be only one instance of an object 8 Don t repeat yourself Duplication is waste Repeti
84. ing and can be carried out automatically To automate the execution phase you need to create test automation scripts that are usually implemented in commercial test automation tools such as HP s QTP IBM s Robot AutomatedQA s Test Complete MS VS 2010 team system and freeware tools such as Selenium etc Each test automation script represents a test case or complementary steps for manual test cases Test automation experts create the scripts after the completion of the manual test design Contrary what test tool vendors would have you believe test automation is expensive It does not replace the need for manual testing or enable you to down size your testing department Automated testing is an addition to your testing process According to Cem Kaner Improving the Maintainability of Automated Test Suites it can take between 3 to 10 times longer to develop verify and document an automated test case than to create and execute a manual test case This is especially true if you elect to use the record playback feature contained in most test tools as your primary automated testing methodology Sanity check Measure the success of your Testing Automation project Step 1 Measure how many man hours were invested in test automation in the past 6 months include Test Automation experts functional testers management overhead etc Mark this as A Step 2 Measure how many working hours would have needed in order to manually execute al
85. ing numbers 1 2 10 and 11 while when running automated tests more scenarios can be planned KDT allows functional testers to plan test automation before the application is ready This enables organizations to broaden the automated testing spectrum We recommend that new tests rather than translation of existing tests should be the focus of automated testing using KDT All new tests can be planned using the KDT approach We believe that this approach ease the KDT implementation process and greatly improve automated testing ROI Organization Structure and Responsibilities The organizational structure of KDT based organization is similar to traditional test automation based organizations It is consisted of Core Test Automation teams and Functional Testers Methods amp Tools Summer 2010 Page 20 Software Testing However the responsibilities are much different Automation Functiona Activity Experts Testers Keywords should be defined by functional testers under the supervision and control of the Test Automation Experts Develop Utility Functions Sequences are developed by functional Develop Sequences o testers in small scales organizations and User defined l for private use functions that will not be functions used by other testers Develop Test Cases t Execute Test Cases C Figure 3 KDT Responsibilities Matrix Define Keywords KDT Process The key factor of full
86. interfaces as possible to avoid this type of repetition VoodooMock addresses interception differently A pre build phase of the test suite build system the VoodooMock parser generates a parallel directory hierarchy of the project headers each replaced with an automatically generated stub for all the classes and functions of the original header the voodoo header The voodoo header contains ifdef directives to allow including the original header instead So by just defining some macros before the original code is included in the test the tester can select which classes are to be replaced by stubs The stubs in turn contain full implementation for forwarding all access to the expectation engine A drawback for this approach is that the build system must enable this pre build support and compile each test suite into a different binary file the stub and real class cannot coexist in the same binary having the same name and namespace A test harness that runs all these separate binaries is also recommended The VoodooMock project at sourceforge contains a sample harness written in python and a Jamrules file Jam is a Make like language as a reference However this approach eliminates the need for virtual interfaces or any other real code modifications e g no macros are needed One project using VoodooMock was a kernel mode driver where unnecessary virtual interfaces were unwelcome Methods amp Tools Summer 2010 Page 6
87. is useful when the original code contains include magic or when the OpenCCore parser crashes on a specific file exclude might be repeated as many times as necessary only if new will only regenerate stub header files if the modification time stamp on the original header file 1s newer similar to make A must when using a system that detects header file dependencies ignore is a list of regular expressions to erase from the code before parsing it Since the OpenCCore parser parses the files before preprocessing any macros or annotations must be removed before a valid C syntax remains The last thing to verify is that the directory voodoo precedes the directory cpp in the include path when building the tests Methods amp Tools Summer 2010 Page 72 Voodoo Conclusion A good unit test is one which reflects the requirements and is readable A bad unit test just reflects the code itself and is implemented in a 400 lines long test case functions VoodooMock s influence on unit testing mentality is similar to the influence script languages have on software development It solves the little problems so the coder can focus on progressing rapidly However without the commitment to produce high quality code script languages sometimes just help the coder accumulate a big pile of crap quite rapidly as well Using VoodooMock without this commitment for high quality tests has the same effects Its co
88. ital e Politics The political landscape within an organization is always dynamic When the balance of power shifts amongst stakeholders so may priorities This often motivates changes to requirements e Marketplace changes For instance a competitor releases a similar product which implements features your product does not Methods amp Tools Summer 2010 Page 37 Agile Requirements e Legislation changes New legislation may require new features or changes to existing features in your software The main role of requirements management is to control and manage the impact of changes to the defined operational need so that all stakeholders in the lifecycle have visibility into what alterations have been made Status tracking is made possible through traceability Having the link between requirements and other assets allows the business to get a better idea of the true quality of the application and its ability to go live Similarly comparing the number of requirement changes to baseline and tracking how many defects are associated with requirements shows the business analyst how accurate requirements were in the first place Too many changes or defects are an indication that the requirement may be inaccurate the sooner this is identified the better The phases of requirements definition and management may appear tedious However the fallout of omitting or glossing over them is infinitely more expensive to business and IT when d
89. ked up She came to the conference to get out of her comfort zone Yves seemed like a nice guy and he seemed to be determined to have her do this I m giving this conversation a 6 out of 10 What I like about it is you are taking time to talk to me you seem to have become even more passionate about the Core as I saw before you are making links between the Core and the agile stuff I know Allison felt it was going well To make it a 10 we should take time to talk about all the core protocols I want this conversation to be fun I want to see links with Scrum I don t like the military name BootCamp Yves interrupted her Protocol check Allison facial expression showed she never heard of that before Without missing a beat Yves continued In a Perfection Game you are only allowed to say what you want to have not what you don t want Damn I knew that Allison s mind raced fast OK let me rephrase that last sentence I want to understand why it s called a BootCamp Yves felt happy Cool you seem to get that one Any questions That remark annoyed Allison Aren t you going to reply to my remarks Yves realized that he had gone too fast No these are your ideas Even if I don t agree with something they are still true for you They help me when I create a new version of what I asked you to perfect In this case I will in the next parts of the conversation remember what you said and use some of your i
90. l tests that were executed automatically in the past 6 month Mark this as B If A gt B than most likely your Test Automation project is a failure candidate SpiraTest Click on ad to reach advertiser web site Used by over 600 customers worldwide SpiraTest End The Testing Chaos Why spend money on standalone requirements management bug tracking and testing tools Spiralest provides a complete Quality Assurance solution that manages your Requirements Test Cases Test Sets Bugs and Issues in one environment with complete traceability from inception to completion He ey Aje ay ree in gt Learn More Download Free Trial Methods amp Tools Summer 2010 Page 16 Software Testing Why Do Test Automation Projects Fail These are the common reasons for test automation failures 1 Process Test Automation requires changes in the Test process The changes apply to the a Test Design approaches Test Automation requires more specific design b Test Coverage Test Automation allows more scenarios to be tested on a specific function c Test Execution functions in the application that are tested automatically shouldn t be tested manually Many organizations fail to plan or implement the required changes 2 Maintenance Automated tests requires both functional maintenance updating the scripts after a functional change in the AUT and technical maintenance i e AUT UI changed from MFC to C
91. lass models GUI mock ups and assigning business rules The elaboration phase can also help to address known risk factors and establish validate the system architecture Methods amp Tools Summer 2010 Page 36 Agile Requirements Validation verifies that requirements are complete and testable The requirements document is checked for ambiguity conflicts and errors and so on and developers and testers should check the fit criterion associated with the user story Techniques used at this stage include discussions simulations and face to face meetings Acceptance is the final stage in the requirements definition lifecycle and occurs only when the requirements have been verified and accepted by all the stakeholders It is here that the business analysts create a baseline of the requirements and they are allocated to releases and iterations so that technical development can start and test planning begin Requirements management phases Requirements prioritization phase gives hierarchy to a project s requirements set Requirements should be prioritized based on customer need and business risk Establishing each functionality s relative importance enables the greatest product value to be delivered at the lowest cost Collaboration between the business and IT is key here IT does not always know which requirements are most important to the business and the business cannot always judge the cost and technical difficulty associated wit
92. ludes the original Sum h Sum h includes Number h and this is when the macro defined in the first line makes a difference Note the macro name is created from the relative path of the header file from the project root In this case the folder include is the prefix to the header file name The test starts with the following lines SCenario SCenario scenario lt lt new CallReturnValue lt unsigned gt Fake Number 1 value 100 lt lt new CallReturnValue lt unsigned gt Fake Number 2 value 200 This snippet creates a scenario object and fills it with the following two events First the method value of a stub object with the name Fake Number 1 will be called with no parameters It will return an unsigned with the value 100 Then the method value of a stub object with name Fake Number 2 will be called without parameters This time it will return 200 The next section explains in detail about the scenario object and what it can store The code continues FakeND_ Number numberl Fake Number 1 FakeND_ Number number2 Fake Number 2 The above snippet creates two Number objects bypassing the construction phase and naming them in the process More about the FakeND prefix in the next section Note that the objects are created after the story already references them The example continues Le S m number 5 mumberZ Jfresult t 300 J throw TestFailed But CFF test suit
93. m payment Well Designed Tests FitNesse provides features that enable you to design automated tests for ease of maintenance The include feature is one way you can extract duplicated test code and reuse it in several tests Variables can also be used so that when you need to make a change you can do it in one location and not have to change multiple test pages Here s an example We can define a variable whose contents are a test table define LoanSetup Loan Processing Fixture ltake loan in the amount of loanAmount with interest rate S interestRate frequency frequency and term S term year with loan origination date S date check periodic payment is periodicPaymentAmount We can use this variable in multiple tests substituting the desired values for loan amount interest rate and so on for each test For example define loanAmount 1000 00 define interestRate 6 0 define frequency Monthly define term 1 define date 09 31 2005 define periodicPaymentAmount 86 07 S LoanSetup When we run the test it is as readable as the test that doesn t use variables variable defined foanAmount 1000 00 variable defined interestRate 6 0 variable defined frequency Monthly variable defined term 1 variable defined date 09 31 2005 variable defined periodicPaymentAmount amp 6 07 Loan Processing Fixture take loan in the amount of 1000 00 with interest rate 6 0 f
94. med lt const Serializable gt First Object lt lt new Destruction The Date Fale y3 Each parameter verifier is strongly typed It will not match a different type Overloading is supported by expecting different parameter types Note when using default values for parameters the default values must also be verified EqualsValue verifies the parameter is equal to the value expected Like return values the issue of the scope for the stored value is addressed by providing multiple such verifiers e g EqualsReference EqualsAuto and so on The Ignore verifier just checks the type of the parameter but does not access it The Named verifier assumes the type provided is a stub class and verifies the name of the object There are more parameters verifiers and new ones are easily implemented Naming Object names help writing readable tests For example a stub file object called Log File and a second one called Data File Each stub class exports a method voodooInstanceName as a getter for the object name Whenever a stub object is copy constructed the new object will be named Copy of first objects name This is useful for covering exactly which object are copied and how many times In case where the tester wishes to ignore wither the object was copied or not VoodooMock provides a similar version for every expectation type that ignores the Copy of prefix or prefixes
95. mmon to see a mirroring test where each line in the scenario just rewrites a line of code As a personal advice VoodooMock is only one tool out of many I have written over the years to help me test code more efficiently I have found it rewarding to keep developing my working environments and coding tools Note that while VoodooMock is a complete package by itself I warmly recommend working on extending and adapting it to your needs My must have customization list includes stack trace on expectation verification failure redefine VOODOO TS ASSERT in VoodooConfiguration h a shortcut for running a single test and rerun all tests on each build Methods amp Tools Summer 2010 Page 73 Jazoon Jazoon Conference Reports Franco Martinig Martinig amp Associates http www martinig ch Methods amp Tools is the sponsor of a large number of software development conferences but I cannot find the time and budget to visit them This year I managed to find some time spend some time at Jazoon a major Java event located in Zurich Switzerland I will present below some of the interesting things that I heard 97 Things Every Programmer Should Know by Kevlin Henney Nothing beats experience in software development and usually you learn the important things the hard way This presentation is based on an O Reilly book with contribution from 73 different people and edited by Kevlin Henney http curbralan com He presented for us 17 of them
96. name control verify that the Methods amp Tools Summer 2010 Page 17 Software Testing value 3 appears in result field When performing an operation on a GUI item the following parameters should be specified Name of GUI item what operation to perform and the values Utility Functions Function a script that executes a certain functional operation that is hard non effective to implement as a Sequence For example wait X seconds retrieve data from DB etc Sequence a set of keywords that produces a business process such as create customer We recommend collecting frequently used functional processes such as login addition of new records to the system as a sequence instead of implementing them as items in test cases Parameters In most cases parameters should be defined for the created keywords The parameters are additional information required in order to generate the test conditions For example failed authentication by passing username with illegal password number for mathematical calculation etc Examples for sequence parameters create_customer FirstName LastName BirthDate email a Keyword Parameters When the user wants to create a new customer the following syntax is used create_customer Bob Dylan 1 1 2000 bobdylan gmail com Using default parameters Some of the keywords may contain dozens of parameters In order to simplify the test creation all parameters should contain defaul
97. need to express conditionals loops or mathematical operations you don t have to write a parser to support that it s available for free from the host language External DSLs require a little more work to implement You might create a simple DSL that is implemented using XML or put a little more effort into creating a custom textual DSL that is parsed either using a parser generated by ANTLR or perhaps using XText and XPand now part of the Eclipse Modeling Framework You could also create a visual external DSL using tools like those provided by the Eclipse Modeling Framework or MetaCase s MetaEdit External DSLs give you more control over your models Users cannot just add any arbitrary constructs from a gppl This is particularly useful for DSL evolution as with external DSLs it can be practical to apply model transformations to your existing model to upgrade existing models to work with a new grammar That isn t usually practical with internal DSLs End User Readable vs Writable A lot of discussion concerning DSLs is often about the practicalities of end user programming and creating DSLs that business users can write What is often forgotten is that depending on the use case you can often get most of the benefits of DSLs by creating languages that end users can read and validate even if they can t write them For example most internal DSLs would be difficult for end users to write They have to follow specific syntactic conventions and o
98. ng and overseeing changes and risk In its most effective use RDM is a continuous process that occurs throughout the application lifecycle Now how does this change when it comes to agile Well in my opinion the basics shouldn t change the only difference is that in agile this process is a lot more iterative probably has more stakeholders involved and the currency we will probably be speaking in is user stories and tasks and not requirements per se So keeping this in mind what is the difference between a requirement and a user story In my mind its all about structuring of the requirement as essentially both a requirement and a user story do the same thing they describe a specific condition or capability needed by a user to solve a problem or achieve an objective The difference between traditional requirements and user Stories 1s that in traditional waterfall environments requirements are normally broken down first into two blocks functional and non functional and then into a deeper layer of granularity layering business requirement with design specs etc normally in a hierarchical manner Conversely in agile these specifications are usually first wrote as user stories and then the non functional elements of the user story are captured as fit criterion At the heart of the user story approach are the usages of short and concise sentences which use the everyday language of the business user to describe the functionality that should
99. nto methods This implementation is faster and more suitable for crunching tests For more information refer to the VoodooMock documentation Methodology VoodooMock was design with the eXtreme Programming methodology in mind This section details how one XP team used it effectively Selecting a unit size is an art by itself Experiment with different unit sizes since there is no single answer to the unit size issue Making each class a unit provides excellent coverage with ease but will force testing wrapper and adapter classes and will not cover integration between classes Methods amp Tools Summer 2010 Page 71 Voodoo When writing a test suite use a setup and teardown routines to build and destroy the Fake dependencies and to create the normal Always object and it s expectations Scenarios tend to grow quite rapidly Split them into smaller subscenarios by using functions either return an ExpectationList from a function or append to an existing scenario Practicing this correctly creates readable tests Carefully consider if an expectation should be inside a Scenario object or an Always object As a rule of thumb global getters and locking should reside inside an Always and the core unit behavior should be a Scenario When in doubt prefer to use Always Consider the following case the unit writes a string to a file Should the test check only the file content or how many times it might have been overrid
100. ny of the terms projectional editing internal vs external domain specific languages etc don t make sense don t worry They are explained along with heuristics for working with them in the second half of the article The Problem Space We have found it useful to break down website development projects into three broad categories Generally if someone has less than 5 000 to spend on an entire website including design content and programming we advise them to use a standard piece of software such as Wordpress for content management or Yahoo stores for e commerce They may want something a little more custom but they simple don t have the budget to get it built At the other end of the spectrum if someone has over 50 000 to spend on a project web domain specific frameworks like Grails Rails or Django will definitely speed up development but you don t have to engineer all of the costs out of the project using a software product line based approach If it takes half a day instead of ten minutes to set up a base project along with a build script and a Continuous Integration server that s not generally a problem In the middle projects that cost from 5 000 to 50 000 need to leverage standard functionality wherever possible but in a way that allows for rich customization of the parts of the application that the client cares about We generally find that any given client will focus on customizing 10 15 of their application functionality S
101. o do more complex things All too often you will see a software product line which supports easy point and click selection of features but where making a change to a feature requires writing C code You want to have lots of small steps each of which give you a little more control rather than just dropping off the edge of a cliff when you hit the limitations of the expressiveness of your DSLs DSL evolution Finally think about how your DSLs may evolve over time Generally there are four stages that a DSL will go through To start with you might try to avoid having to change the DSL You simply do what you can with the expressiveness that it provides and then write custom code as necessary for any special cases After a while the custom code for the special cases gets repetitive and the pressure grows to allow your DSL to become more expressive You decide to allow changes to the grammar but only in a way that will preserve backward compatibility That works for so long but eventually you often find yourself needing to make a change that will not be backwards compatible A common approach to that solution is to start to version your language with all models having a version and automatically being run against the appropriate version of your DSL That works for a while but eventually you run into issues with old models needing new language features or with the overhead of having to maintain multiple versions of your DSLs If you have a large n
102. ome clients really care about how their discounting system works Others are really focused on the details of their registration process or the way that clients can navigate their products or the process of signing up for events So the goal for these semi custom applications is to be able to generate everything customize anything so we can deliver an acceptable solution based on industry best practices very quickly but can then work with the client to customize the parts of the application that they really care about extending or adapting the generated functionality At SystemsForge we specialize in developing these semi custom web applications We provide a white labeled service for ad agencies They sell the sites handle the project management design the look and feel and create the HTML CSS We do the programming to deliver the functionality required Most of the projects we deliver have programming costs of between 1 200 and 5 000 so we have to deliver them very efficiently Methods amp Tools Summer 2010 Page 22 Software Product Line Around twenty percent of the projects require more custom functionality and have programming costs of between 5 000 and 35 000 so we need to have a process that blends efficiency with extensibility Recent sample projects include simple content management systems e commerce stores for business to business and business to consumer clients event calendars newsletter systems scheduling solutions
103. optional properties deciding which of them to include or exclude for this particular project Product Properties v Title V Price vV Weight M Short Description MM Description M Cost M Shipping premium Figure 2 A simplified example of a configuration screen Methods amp Tools Summer 2010 Page 26 Software Product Line The configuration information was then used to passively generate a first cut of all of the necessary XML files to describe the solution selected We could then go in and manually edit the XML files to make changes like adding completely custom properties to the domain objects or changing the flow of the controller actions At first we envisioned support for active regeneration of the XML files storing the changes to the files separately and applying conditional model transforms to allow us to do things like automatically add new domain concepts or properties to applications after they had been developed and deployed Apart from the technical challenges of the problem we fairly quickly realized that our clients did not want their applications to change how they worked as part of an automated upgrade cycle so we decided to treat the software product line piece as simply a jump start for creating the models This still left us with the flexibility to upgrade the implementation of our models so at least for the simpler applications we could make substantial changes to the implementation framework without having to re
104. or Destruction of a stub class e Call to a stub object method e Call to a global function The expectation engine is responsible for storing running and verifying recordings of expectations Each event has a textual representation e g Construction of std list lt unsigned gt When an event occurs e g a stub class is constructed the engine searches for matching expectation in the alive Scenario and Always objects see next subsection In order to match the expectation textual representation must match the event textual representation plus the parameters must also pass their verification stored in the expectation see the Parameters subsection The features of the expectation engine are described in the following subsections Scenarios Scenario objects store expectations meant to run one by one and only once e g first create the file write to it then close it Before a Scenario object is destroyed one of the following methods must be called assertFinished will assert all the expectations were matched or assertNotFinished otherwise Several Scenario objects can coexist representing independent recordings of expectations If both Scenario objects currently point to two expectations matching the current event in both textual name and parameters verification the Scenario object constructed last takes precedence Only the return value from that Scenario object will be used and only it w
105. ork Limiting WIP like this can seem unusual for teams and there is often a worry that team members will be idle because they having no work to do but are unable to pull any new work The following guidelines in priority order can be useful to help in this situation 1 Work directly on existing work to progress it 2 Collaborate with team members on existing work to remove a bottleneck 3 Begin working on new work if capacity is available 4 Find some other useful work When team members have to find some other useful work then bubbles of slack are formed around the work This creates opportunities for improvement without needing to schedule them with techniques such as Gold Cards This can be work which won t create any work downstream but will improve future productivity and can be paused as soon as existing kanban slots become available Investigative work such as technology spikes refactoring or tool automation and personal development or innovation work are all activities which might help the team in the future Cadence Cadence is the mechanism that teams use to establish a reliable and dependable capability A consistent cadence demonstrates a predictable capacity and gives some confidence in coordinating the upcoming work when it is being triggered rather than scheduled Vanilla Agile time boxing is one specialised form of cadence It is a metronomic cadence with a single tick All the main process events are based around
106. otCamp from the 5 September 2010 till the 10th Methods amp Tools Summer 2010 Page 49 Core Protocols Alignment check B n dicte 10 Christophe 10 Yves 6 B n dicte I have what I want I m checking out Christophe Yves you wanted to know how many people where interested Yves Yes Christophe Well we have three people from my company plus me we have B n dicte and five of her friends How many people is the minimum you need for a BootCamp Yves Seven is the minimum number to learn about group dynamics in one week I have seen it work with less people but that where people that were already a tight team before Christophe We have nine people that should be enough Yves Yes And I know some more to contact Looks like we have a new BootCamp Alignment check Yves 10 Christophe 10 Yves I have what I want I m checking out Christophe Yes so do I thank you Yves You heard a meeting where people used the meeting protocol Will you tell me what you saw Allison Christophe started the meeting by doing a group checkin Then everyone stated what she wanted out of the meeting With a score from till 10 Nobody talked about time constrained Is that the moment to talk about Yves Yes after the check in that is the right moment It is one of the improvements important if you do the meeting over phone or chat People tend to not do it when face to face as all these meetings are on our calendars
107. ow Workflow is the understanding of how business or customer value travels through the Kanban System The Agile community recognised that software development is a knowledge creation activity which includes randomness and variation and the Inspect and Adapt mantra is the response which makes the impact visible such that the feedback can be used to learn and respond accordingly We can take this further by understanding the mathematics and science behind the randomness and variation and exploiting this to our advantage Recognising the workflow through an activity such as Value Stream Mapping can give us this additional transparency which we can use to influence our process Value Stream Mapping is so called because its focus is on understanding how units of value flow through a system For software development this can be generalised into how units of value expand into smaller units of work which then collapse back to deliver the original value Methods amp Tools Summer 2010 Page 3 Kanban For example a specific Benefit to a customer may expand into a number of Features which may expand into various User Stories which may then each expand into Tasks The Tasks subsequently collapse back together to realise the User Stories which realise the Features which ultimately realise the Benefit Understanding the workflow thus consists of knowing what we consider to be of value and what expand and collapse points there are to deliver th
108. people should know better what they needed to do To his surprise the holes were not filled well He cited a survey conducted by Jeff Sutherland finding that more than 50 of Scrum teams were not using the iterative incremental practice This is what Martin Fowler calls Flaccid Scrum http martinfowler com bliki FlaccidScrum html Ken Schwaber used the last 10 minutes of his reduced speech to present I will rather say advertise the new certifications Professional Scrum Developer proposed by Scrum org He mentioned several courses offered by a local partner This sadly makes me think that money could have been a major reason for him to split from the Scrum Alliance Java SE and SDK 7 Danny Coward presented the first keynote of the Jazoon conference He mentioned that we were close to the 15 anniversary of Java that was officially announced May 23 1995 On the historical side he also showed us a nice video of James Gosling demonstrating in 1992 a prototype running on what will become Java The interface looks very close to what you get now on an iPhone You can watch it on http www youtube com watch v Ahg8OB YixLO He discussed the current evolution of Java towards its version 7 There has been a lot of work on the modularity side removing as much as possible the dependencies between the Java modules Parallelism has also been improved and will now for instance be used by most of the garbage collector activity More than 100 languages
109. ple creating Change_customer_status keyword is a better approach than creating 2 special keywords for activate_customer and deactivate_customer Keyword Driven Testing KDT KDT is the mechanism used in order to implement test language Keyword Driven Testing can be divided into two main layers Infrastructure Layer KDT Engine a combination of Item Operation Utility Functions and User Defined Functions also called Sequence used as an engine that receives inputs keywords and performs operations on the application under test Logical Layer KDT Test Case used by manual testers and other subject matter experts to build and execute test scripts by using a pre defined keyword KDT Principles Simplicity of test case implementation and reviewing Functional testers should create the automated test cases directly in a simple non code elite language This eliminates the need for the time consuming two steps process in which testers create manual test cases and then converting them to automated scripts by the test automation team Web Performance Testing Click on ad to reach advertiser web site a gt s F r t J l r q r lest Your Web Applications with Real Browser Users H j Sr r pA ee LE OVVIA TG Methods amp Tools Summer 2010 Page 19 Software Testing Automation Infrastructure and Test Cases Coexistence The test automation infrastructure should be separated from the logical layer
110. ple it might even work with children but not yet with my children I considered them too young Michele McCarthy told me to try it and then we could talk again For her it had no sense that I would say No it does not work without trying it I m not sure what I thought at that moment not even sure if I wanted to try at that moment The very next day Joppe three years old came home with a self made card On that card were listed the four basic feelings Methods amp Tools Summer 2010 Page 43 Core Protocols mad glad sad afraid Joppe had learned something like check in at school That day I realized that I was blocking myself from using a powerful tool with my kids Since that moment I check in with my kids when I put them in bed Allison moved by the story wondered how it would have been to check in with her father Tell me about the format of the pattern The first part I m checking in Yves explained that sentence asks for attention telling you I m going to disclose my feelings please pay attention An alternative that is used in a team setting is Let s check in Here you check in but you also ask everyone else present to do the same Allison asked Why are only four feelings allowed I have more then four feelings Great question Yves answered You are correct only four feelings are allowed More complex feelings are actually a combination of these four Yes it is harder when
111. project to select a set of common features such as an events calendar a product catalog a shopping cart and a email newsletter system and then for each to select common sub features using a simple feature tree The feature tree supported essential features optional features and alternate features with both single and multiple select capabilities Each feature then added one or more essential or optional statements to the model So for example adding a product catalog feature would add a product domain object with an essential title property there had to be a title property in the generated application Adding that feature also added some optional statements such as properties for the product object that might be useful but would not always be required For example short description detailed description and price would be optional properties unless you added a cart feature in which case price would become an essential property Methods amp Tools Summer 2010 Page 25 Software Product Line 7 Core content management Versioning Auditing rollback O Email Newsletter List size f lt 500 subscribers O lt 1 000 subscribers O lt 5 000 subscribers O lt 15 000 subscribers O lt 50 000 subscribers G E commerce Goods types Digital downloads O Tangible goods Sipping Methods O Fed Ex A UPS g USPS G Custom Figure 1 A simplified example of a feature modeling screen The next step then was to configure the
112. r idea after the first proposal is accepted not when it s implemented Methods amp Tools Summer 2010 Page 47 Core Protocols Yves agreed exactly This has the advantage that proposals get accepted and we create a momentum Even if your new proposal is not accepted at least we have the first proposal that 1s accepted This creates a bias towards action If you vote thumbs down and you propose your own idea we might end up with pingpong proposals and nothing gets accepted Working in this way means that a team does not block itself from taking decisions even if they think they can come up with a better idea later It s ok to have better ideas later We will do a new decider and we ll switch to the new idea when people find it better In lean we want to defer decisions to the last responsible moment The problem I see with this is that for most teams it s hard to find that last responsible moment On top of that I see teams block them selves from taking decisions and actions by doing this So in reality they take no decision which is worse and which is also waste waste of time Using decider to quickly take actions with the possibility to re decide later when we have more information is for me in sync with take decision at the last responsible moment Allison What if the decision you have to take is a difficult or expensive one to change once it s made Yves whistles That is a great question Yves turned to Mary Popp
113. r long toilet visits to have a check out It s much nicer if people can do this officially Allison said But what 1f something has to be done Yves replied Well if people are able to do that they will If not forcing them to stay won t help it will actually make things worse as the people not checking out will limit the result of the people that would be able to do the work On top of that a five minute break can make people 35 times more productive than if they would not take that break It is a good practice when you check out that you mention when you intend to come back if you know When you check out you should leave the room immediately Like the law of two feet in Open Space technology Actually I think its law of two feet and check out are completely the same During one of my BootCamps I needed to finish a report about another training I did not want to miss anything so I wrote the paper in my team room That was a big mistake I should have checked out I was not productive for my team and I gave them the message that integrity was not important Allison looked astonished I m surprised to hear that I saw you leave multiple sessions this conference Yves Yes that was something I learned at that BootCamp I have been much more productive since then Allison wanted to get moving What other patterns are there to learn Yves Let s talk about ask for help In the daily standup of a Scrum we answer th
114. r support those that were described by the XML files and despite doing so much at runtime the system was still very performant and easy to work with In addition the entire framework was realized in under 6 000 lines of code so it was very easy to maintain Introducing the Software Product Line The problem with the domain specific framework was that if we wanted to build common functionality like registration or a simple product catalog or shopping cart it still felt very repetitive The good news was that we could describe the functionality very concisely using the DSLs The bad news was that even with concise languages it took a while to describe a rich complex e commerce system with products product categories product attributes discounts gift certificates and the many other domain objects required to fully describe such a system We really needed a more efficient way to reuse our models while still having the ability to customize them Here was where the software product line came in While the DSLs gave us unbounded variability allowing us to describe any collection of domain objects controllers and views we also needed some way to implement bounded variability a feature model allowing us to quickly and easily configure a first cut of the application which we could then customize from there In the end we implemented this using a website with a forms based interface The system allowed a non technical user to enter the name of a new
115. r web site Looking for measurable value from Application Lifecycle Management A major autmotive supplier cut a three year development cycle by a third A utilities company accelerated release management processes by 80 A global geo content provider increased its On Time measure from 70 to 93 You can achieve these kinds of results too When software is critical you need a smarter approach You need Intelligent ALM 1 800 613 7535 On demand Webinar www mks com alm webinar Mi IKK S Methods amp Tools Summer 2010 Page 2 Kanban Aspects of Kanban Karl Scotland http availagility co uk Introduction The Kanban software development community can be traced back to Agile2007 in Washington DC At that conference a number of people were talking about their different approaches to development that they were using Chris Matts was talking about Real Options and Feature Injection Arlo Belshee was talking about Naked Planning and David Anderson was talking about Kanban All three had some similarities which inspired a group of people to go away and experiment themselves and share their experiences The name which emerged as an identity for the group was Kanban Kanban is the Japanese word for visual card and can have a number of interpretations with respect to software development Firstly it could be used to refer to the index card commonly used by Agile teams Secondly it could be used to r
116. reWare s Xtext for Methods amp Tools Summer 2010 Page 24 Software Product Line textual DSLs or MetaCase MetaEdit primarily for visual DSLs We also considered writing a custom parser using ANTLR or even creating a forms based interface which would persist the models to a database which was what we had done in the past In the end we decided that the quickest win for us would be to start by using XML as a concrete syntax for the DSLs as it was very easy to parse transform and emit and we could easily create a more human readable representation of the model for viewing by business users and could eventually add a forms based interface for generating the XML if we needed to make the DSLs end user writable In short XML was a simple starting point a great transport mechanism and made it easy for us to implement the various projections of the language that we needed for different stakeholders The domain specific framework was a great start It used runtime interpretation of XML files to effectively pretend that a bunch of class files existed for describing the domain objects a service based interface to the model and the controller functionality They were also used by dynamic runtime templates to create a first cut of most of the view screens along with a passive generation option for screens that needed extensive customization It allowed for easy run time extension by just dropping in real class files with actual methods to overload o
117. ree questions The last one is are you blocked I tell the teams I m coaching it s really where do you need help Allison Does it really matter Most teams don t even bother about that last question Yves I m not surprised that most team members don t answer this question In school we learn to do everything on our own Working together in school is called cheating In the IT industry asking for help is even worse I think this comes because we feel we are paid because we are smart intelligent Somehow we think that being smart means not asking for help Well I ve got news for you That is not true Asking for help is really a sign of strength Allison That could be true but I have been working with a guy that was a total idiot and he kept asking for help and did not learn anything Yves agreed I guess that I do not want to ask for help as I don t want to look like this guy is another reason why people don t ask for help Guess what that guy is a real exception a lot more people make the opposite mistake The typical situation being a male driver preferring not to ask for help and continuing to drive even when he does not know where he is Rachel Davies told me recently she would also drive for 10 minutes before asking for help So it s not exclusive behavior for you men Allison said with a wink Did she also say why Yves answered Yes for her it was not so much that she thinks she will look foolish asking
118. requency Monthly and term 1 year with loan origination date 09 31 2005 ck bee pee O The Scenario Tables in Slim provide similar functionality to this technique Test automation projects often fail because tests are not designed for maintainability and the overhead to keep the tests up to date becomes overwhelming FitNesse s design friendly features help prevent this problem Methods amp Tools Summer 2010 Page 62 FitNesse Add Ons FitNesse provides a framework for using other test tools such as GUI drivers This allows greater flexibility while taking advantage of the ease of writing tests in the Wiki and FitNesse s excellent result reporting capabilities For example you can drive Selenium http seleniumhg org GUI tests from FitNesse test tables A tool called Selenesse http github com marisaseal selenesse provides a bridge that makes this easy for both Java and Net environments SWAT http ulti swat wikispaces com is another example of a GUI test driver that integrates well with FitNesse Many teams build their own custom tools using FitNesse or Slim as a base Drawbacks Open source tools are only as good as their developer and user communities With any open source tool there may not be a reliable schedule of releases with new features FitNesse has generally enjoyed frequent releases and improvements My team suffered some from a backward compatibility issued in a recent release Overall however
119. resentation of the improvements that will be available with Maven 3 currently in its final beta testing period The new version will be faster and have a smaller footprint due to a codebase reduced by 30 The software has been transformed in a code library that allows a better integration with third party tools An important improvement is the possibility to define your configuration in different languages ruby groovy scala clojure with polyglot maven http polyglot sonatype org He also presented the last version of m2eclipse http m2eclipse sonatype org that he likes for its ability to visualize dependencies and to provide tools for an easier refactoring Slides of all the presentations of Jazoon are available on the conference web site http jazoon com Videos will be published late on the excellent Parleys web site http parleys com Methods amp Tools Summer 2010 Page 77 Classified Advertising Load Tester 4 The easiest fastest most complete load testing software available Spot performance problems in your operating system or application server quickly and cut your load testing time by up to 80 Our automated record and configuration process means no complicated hand coding and no scripting languages to Learn http www webperformance com Advertising for a new Web development tool Looking to recruit software developers Promoting a conference Or a book Organizing software development training THiS clas
120. riants of scope time resource and quality Other common variants are things like priority status issues risks constraints dependencies and assumptions More recently teams have been talking in terms of variants such as capacity and demand not to mention value and other economic aspects To visualise all these variants we can use a number of techniques Properties such as size colour format location and alignment can all create multi functioning graphical elements to achieve a high data density while for a physical board material and texture can add further depth The following examples are from a Visual Management workshop run by Xavier Quesada Allue 8 at Agile2009 They show different solutions to the same problem using a variety of styles techniques and materials GreenHopper for Kanban Click on ad to reach advertiser web site Flexibility supports your team be i they Scrum Scrumban or Kanban E Share burndown charts on digital wallboards keeping distributed teams on the same page Rapidly estimate your backlog prioritise stories and schedule sprints Manage WIP through identification Truly agile of bottlenecks and spare capacity project management Get started today with a FREE 30 day trial Build better software Faster WATLASSIAN Methods amp Tools Summer 2010 Page 7 Kanban Work In Process Work in Process WIP and the way it is limited is the means by which w
121. riting mock objects for C unit tests Similar to other frameworks VoodooMock provides an expectation storage and verification engine But unlike other frameworks VoodooMock also automates the generation of stubs and rerouting calls to the stubs without requiring any macros or unnecessary interfaces VoodooMock is available under the GPL and is successfully deployed in at least three production projects Web Site http sourceforge net projects voodoo mock Version Tested 0 3 System Requirements Python 2 5 or higher License and Pricing GPL Support Through the SourceForge project homepage Installation just unzip Documentation contained inside the package Configuration works out of the box Introduction When writing unit tests based on mock objects there are two main implementation details to address Interception or how method calls are forwarded to the mock object and the Expectation engine or how to store and verify expected events Other frameworks do not handle interception The test writer usually implements interception by using an abstract class inheritance interface class and a factory even when there is only one class that inherits the interface The factory is replaced at the unit test with a stub that returns a stub object instead The stub object forwards the calls to an expectation engine All this code is written manually It also has a demoralizing effect of testing everything through as much existing
122. s their different practices Marick lists several properties of a boundary object which can be useful to bear in mind when building a kanban board it should be a common point of reference for the community of interest represent different meaning to different members of the community and help translation between the meanings support coordination and alignment of the work within the community be a plastic working agreement which evolves as the community learns and address different concerns of the community members simultaneously A kanban board can be considered to be a boundary object when it is a social artefact which is a focal point for a team By visualising a team s work it becomes a common point of reference The representation of the work and its status enables communication and coordination between all team members as well as visualising the workflow and policies that are the team s working agreements The kanban board should be able to evolve with workflow and policies over time Thus a kanban board represents the shared mental model which is created collectively and collaboratively and helps clarify the meaning of what the board is representing Another relevant set of ideas to visual management are those raised by Dan Pink when he talks about the surprising science of motivation In his book Drive 6 he says that rather than the carrot and stick approach of extrinsic motivation a better approach is intrinsic motivation wh
123. sified section is waiting for you at the price of US 30 each line Reach more than 50 000 web savvy software developers and project managers worldwide with a classified advertisement in Methods amp Tools Without counting the 1000s that download the issue each month without being registered and the 60 000 visitors month of our web sites To advertise in this section or to place a page ad simply http www methodsandtools com advertise php METHODS amp TOOLS is published by Martinig amp Associates Rue des Marronniers 25 CH 1800 Vevey Switzerland Tel 41 21 922 13 00 Fax 41 21 921 2353 www martinig ch Editor Franco Martinig ISSN 1661 402 Free subscription on http www methodsandtools com forms submt php The content of this publication cannot be reproduced without prior written consent of the publisher Copyright 2010 Martinig amp Associates Methods amp Tools Summer 2010 Page 78
124. t values The tester should be able to change each one of the default parameters according to the context of the test For example if the tester would like to create new customer that is older the 100 years only the birth date will be changed and all other parameters will remain the same Obviously a specific change will not affect the default parameters being used for other tests Define the parameter and set default value Keyword can be a sequence name of a GUI object Item or utility function Define the parameter and set default value Call a function that runs the application a Type Keyword Operation Parameters poai T and set default value 1 ates m E Fites AP Patient manager Define the parameter 2 uem Username Setvalue Username Bobs and set default value Ee el CT eee eee After OK i Perform and operation on a GUI item Figure 1 Login sequence Methods amp Tools Summer 2010 Page 18 Software Testing Leave the default parameter Type Keyword Operation Parameters Username Bobs 1 smne en Teens lia Password 1234 changed for the Name Davidl tes Bithdate 01 01 1980 successfull Figure 2 Create Patient Test Case Run the Login sequence Verify that the patient was created It is extremely important to plan the keywords well and to optimize the amount of keywords by creating multi function keywords for exam
125. then they go off and continue making software Imagine what this does to your productivity And moral as most software developers hate unproductive meetings Allison asks Meetings are the cornerstone in my company can you give some more advice about optimizing our meetings Yves I m about to have a meeting with Christophe and B n dicte to organize the next BootCamp If you want you can observe the meeting The next passages are the notes that Allison took while observing the meeting Christophe starts the meeting Christophe Let s check in I m glad that we have this meeting to decide about a next European BootCamp I m sad we do this over the phone I m glad I hear your voice I m in Methods amp Tools Summer 2010 Page 48 Core Protocols B n dicte Yves Welcome Yves I m glad we talk I m glad to meet B n dicte I m afraid to have such an important meeting over the phone I m glad to know that the core will help us I m glad Christophe keeps pushing me for a next BootCamp I m glad sad afraid my priorities were elsewhere before I m in Christophe B nedicte Welcome B n dicte I m glad I finally meet you I m glad I see things moving I m in Yves Christophe Welcome Christophe We disclose what we want I want to know when the next European BootCamp will take place Yves I want to understand how many people are really interested in a next European BootCamp B n dicte I want to know if my i
126. tion can be very easy but the maintenance is more difficult as functions can be performed either at the client flex or server level Architecture rules have to be defined very well and synchronization between the server and the client is not easy to maintain Flex 4 solves part of these problems but the proposed life cycle Photoshop Catalyst Flex does not work well when you have go backwards and redo some things In the tools that you can use to link Java and Flex he recommends Granite Value of Objects Kevlin Henney presented a lively talk about the concepts of object and value in software development Kevlin is a lively and wise presenter so don t miss this guy if you have the chance to be at a conference where he speaks His talk was a kind of philosophical musing even if he was always firmly rooted in programming It is difficult for me to summarize all the ideas that were discussed but here are some nice quotes excerpted from this presentation I hope to be precise but all misunderstanding are my own responsibility As a profession software development do a mess of words Tf you are using java util date you must be tired of life Typing is not the bottleneck in software development Every time a mock returns a mock a fairy dies Don t confuse the ideas of the programming language with the essence of what you are trying to express Maven 3 0 Matthew McCullough http www ambientideas com made a very pump up p
127. tion in process calls for automation Repetition in logic calls for abstraction 9 Beware of the share On contrast with the previous item sharing code libraries creates dependencies for code that could evolve separately and that are just temporally coinciding Methods amp Tools Summer 2010 Page 74 Jazoon 10 The road to performance is littered with dirty code bones Sometimes you just get better performance with less and cleaner code 11 The longevity of interim solutions Try to avoid them or take time to clean them after implementation 12 The Boy Scout rule You should leave the world just a little better than you find it and improve in little increments 13 Two wrongs can make a right and are difficult to fix Sometimes a bug is corrected by another bug further in the code When you try to fix the second the first one is revealed but difficult to detect It could be easier to leave things as they are 14 Read code We love to write code but when it comes to reading it we usually shy away Reading code help us improve our writing abilities and increase our knowledge of programming styles 15 Write test for people Your tests are targeted at the person that is trying to understand your code Tests are here to document the code and tell what it means to be right for the code 16 Don t be cute with your test data Because somebody else could see it o 17 Ubuntu coding for your friends This is not a reference to
128. ts in production we don t get into a philosophical discussion over how the code works or scratch our heads trying to remember We can prove how the code works with a passing FitNesse test Maybe this isn t how the business really wants the code to work and in that case they can write a story to change it This saves lots of time and makes us look smart The Drawbacks section in this review is longer than the Benefits section but for our team the benefits far outweigh the drawbacks As I wrote this article one of our FitNesse suites caught a regression bug 20 minutes after a code change was checked in We d have found the regression manually at some point but it may have taken up to 24 hours The fast feedback helps us maintain a sustainable pace and ensure we can deliver high quality code to production anytime Advertisement Testing Television Click on ad to reach advertiser web site Testing Television http www testingtv com Testing Television is a directory of videos interviews and tutorials focused on all software testing and software quality assurance related activities unit functional performance amp load testing code analysis test driven development TDD continuous integration etc Methods amp Tools Summer 2010 Page 64 Voodoo VoodooMock Mock Objects Framework for C Shlomo Matichin VoodooMock is a mock object framework that fully automates the repetitive tasks associated with w
129. u would fill out forms to enter metadata describing the domain and those would drive a generator which would generate the appropriate functionality by concatenating strings to build the runtime scripts It had the benefit of moving some of the configuration from runtime to generation time but the concatenating scripts were difficult to maintain because you couldn t easily see the kind of code that the concatenators would generate just by looking at them At this point we took some time off to research methodologies for reuse learning about best practices in code generation domain specific modeling and software product lines We were then able to revisit the problem space using a more sophisticated set of approaches to the problem A Domain Specific Framework From the many applications we had built by this time we had a very good idea of what we wanted our languages to look like for describing any given application We described most applications in terms of the model business objects with properties relationships validation rules administrative rules and default values the controllers controllers with actions that allowed us to describe lists detail screens import and export functions and a number of other common capabilities the views which allowed us again to declaratively describe at least a first cut of the functionality required for most screens and custom data types a cross cutting concern that allowed us to set sensible default
130. umber of models at this point it s worth looking at the possibility of applying model transformations to automatically upgrade old models to work with the new version of your language Not all grammatical changes to a language allow for automated transformations but at very least you should be able to automate some of the model transformations and provide an efficient UI for human intervention in the case of models that need to be upgraded by hand Model transformation is typically easier to apply to external DSLs but if you find yourself with a lot of internal DSL statements and need to apply model transforms consider the possibility of writing a script that will walk the in memory runtime model and generate a set of models in a new external DSL that fully describes the current state of the model In that way you can refactor to external DSLs and then apply your model transformations to them more easily Conclusion This problem domain has ended up being a really interesting space for examining best practices for developing software more efficiently On the one hand the very constrained price points we deal with mean that we have to get every last bit of efficiency out of our software product line On the other hand continued investment in the software product line over a number of years has allowed us to investigate a wide range of approaches and to get some real world experience of the relative benefits of different approaches for different classes
131. useful new features arrive regularly We sometimes run into issues where we set up FitNesse in a new environment without any error message or clue as to what is wrong For example the tests often hang with no feedback if the classpath as defined in the path variable is invalid We ve worked around these issues by trial and error and assume it has something to do with the architecture but it can be frustrating We had a hard time integrating FitNesse into our Hudson continuous integration and build process but the user and development community helped us find a solution There s now a Hudson plug in for FitNesse You may want to make sure FitNesse will work and play well with your CI before committing to using it long term FitNesse is unique as far as I know in using a Wiki for creating and maintaining test cases and the Wiki can also be used as a knowledgebase and repository for story and theme requirements The fact that anyone can contribute to the wiki is both a plus and a minus It s a great collaboration tool but it can easily go out of control My team has had trouble keeping our wiki organized well enough so that we can easily find information and tests when we need it You ll need to budget time and perhaps have a technical writer help organize and maintain the FitNesse pages and hierarchy It can also be tedious to create and maintain test cases on the wiki using the wiki markup FitNesse provides the ability to import and
132. via the built in Plugin Manager Hudson Manage Hudson Manage Plugins Hudson Hudson Artifact Size View Hudson ACME com Server 7 1a amp T This is the development server of department 4BC 123 4 running on Ubuntu Linux 9 04 JDK 1 6 0 Oracle 10i EIRE For questions concerning the system setup please contact Hubert J Farnsworth Build History J Alle Artifact Size View Edit View Delete View 5 Job Last Success 12 min 1 1 day 12 hr 4 Last Failure N A 1 day 12 hr 5 Last Duration 31 ms 0 31 sec Artifact Size Not recorded Not recorded Q a wW ue apache commons io 9 min 20 sec 2 NZA 1 min 25 sec Not recorded amp Project Relationship W rm freestyler 7 days 13 hr 10 N A 1 7 sec 7 MB on ee 5 W mi alottr 6 days 14 hr 11 N A 0 51 sec 2 MB Build Queue am 2 z fi ttr No build aff queue wv W glottr2 6 days 15 hr 1 N A 0 18 sec Not recorded Build Executor Status W pey greetr 6 days 14 hr 2 N A 0 31 sec 0 bytes eC Status S lt ange eA z iF Q irs greetr2 5 days 20 hr 42 5 days 19 hr 43 6 sec 0 bytes amp 5 y 3 Icon rc Legend for all B for failures A for just latest builds ted May 24 2010 12 34 58 PM Hudson ver 1 358 Figure 2 A typical Hudson Dashboard Documentation Very useful documentation is placed right into the application as context sensitive help There s
133. vices virtualization and cloud computing VMWare Amazon EC2 user directories e g LDAP ActiveDirectory issue trackers e g JIRA Bugzilla Mantis and much more At current pace the Hudson community releases 1 2 new plugins and 3 5 updates of existing ones per week The source code of these plugins is available to serve as a starting point for own customizations In fact many Hudson heavy users came for a shrink wrapped ready to use product but stayed for a highly customizable build automation platform Building a Test Drive Project You understand Hudson best by seeing it in live action Thus for a simple five step test drive of Hudson you could build any Open Source project that hosts its source code publicly accessible We will use Apache Commons IO in the following example 1 First go to Hudson Manage Hudson gt Configure System In Section JDK add a new Java Development Kit In section Maven add a new Maven installation Click on Save at the bottom of the page 2 Then go to Hudson gt New Job enter apache commons io as job name and choose Build a maven2 project Click on OK to proceed with the job configuration page 3 On the job configuration page in section Source Code Management choose Subversion and enter http svn apache org repos asf commons proper io trunk in field Repository URL Click on Save at the bottom of the page 4 Click on the
134. voke the expectation engine Externals Stubbing OS provided global function presents two new problems First the OpenCCore parser the C parser used by VoodooMock can not handle OS level header files which usually contain compiler specific macros But even worse the include file hierarchy is never trivial e g windows h includes other files which actually define the system calls VoodooMock has a feature specifically designed for this case provide an alternative header to parse and generate stubs according to The fake header file then always includes the original and implements the stubs in another names pace named External For example the alternative header file for windows h might look like this HANDLE WINAPI CreateFileA __in LPCTSTR lpFileName in DWORD dwDesiredAccess _in DWORD dwShareMode 2 ine OPE LPSOECURITY ATIRIBUTES LpSseCcurreyALTC re LDUres 1m DWORD dwCreatitonDisposition __ in DWORD dwFlagsAndAttributes __in_opt HANDLE hTemplateFile S BOOL WINAPI CloseHandle __in HANDLE hObject P3 And the real code must be modified from using CloseHandle to External CloseHandle Now the only thing that remains is to define External as a macro that expands to an empty string when compiling the real product Programmable Mock Objects VoodooMock has a second implementation to every stubbed class that allows complete interception of all events i
135. which is the test cases This allows testers to create automated test cases at an early stage in the development life cycle before the application is ready and even before the automation infrastructure is developed Plan and control In order to maximize the benefit from KDT a plan used to assess the on going effectiveness of the automation program What to Automate Test Language should focus on testing new features rather than on regression testing which is the common practice in traditional test automation In traditional test automation implementations automation scripts cannot be created before the application is ready for testing As a result sanity and regression tests are the main areas which are automated This approach usually leads to parallel executions both manually and automatically of the same tests In addition tests written for manual execution are phrased in a way that does not take into account the strengths of automation scripting The main gap between the two approaches 1s e Detail level Test Automation requires more details for example after log in the automated script should define what is expected to happened while in many manual scripts this 1s left for the tester intuition e Coverage When performing test automation more test cases can be created For example when testing a certain numeric field that get values in the range of 1 10 usually boundary analysis technique will be used to test the follow
136. who can write the necessary fixtures which take the test inputs pass them to the production code and send the results back to FitNesse for comparison with expected results Writing fixtures is fairly straightforward for programmers as they will do this in the same language in which they write production code For our team it usually takes two to four hours to write a new FitNesse fixture Occasionally it can be tricky to come up with a fixture for a complex testing scenario Examples There s a wide variety of formats for FitNesse tests both tabular and scenario style Our tests mainly extend the ColumnFixture Here s a simple example of from the FitNesse user guide eg Division Sometimes a tabular format doesn t reflect the business example well so there are other options Here is an example from our own tests using the DoFixture The test takes out a loan with a given amount interest rate payment frequency term and start date A payment is received and processed then the test checks the interest and principal applied and the remaining balance This mimics the actual business flow Slim scenario tables are similar to the Fit DoFixture Methods amp Tools Summer 2010 Page 61 FitNesse Test RESULTS history com eplan domain loan Test loan payment amount settle a loan payment verify interest principal and balance Loan Aiea i Fixture O E Caa O A E receive payment T E SSCS nN Sree ee settle and confir
137. why Which ultimately leads to a team that is armed with the information it needs to develop software that successfully lines up with business and user expectations So what is the industry waiting for It is time to get a handle on the intricacies of requirements definition management and implement them Understanding the phases of RDM Successful RDM implementation is a phased approach For business to really get the most out of employing stronger requirements definition management practices it 1s important to understand and utilize the specific phases of each With a working knowledge of each of these phases it is quite easy to implement more effective RDM throughout the application lifecycle Requirements development phases Elicitation is the stage where business analysts gather the requirements sometimes called trawling and deliver them to the product backlog for assessment Requirements elicitation practices typically include JAD joint application development techniques such as interviews questionnaires user observation workshops brainstorming use cases role playing and prototyping and in agile especially this process will involve many contributors Elaboration stage adds more depth to the meaning of each requirement or user story maybe breaking it down from epic to user story to task or to technical details Methods used by the business analyst in this stage include developing use cases in rich text creating flow diagrams c
138. work the applications manually Latest Focus Recently we have decided to make some substantial changes to the software product line The overall structure of the system is working well but details of the implementation are starting to become problematic Firstly we re refactoring to use a third party web framework Grails While it doesn t map perfectly to all of our DSLs we have now reached the point where Grails is sufficiently mature and the complexity of implementing some of the domain concepts we would like to express in our own system is sufficiently high that it makes more sense to implement a thin productivity layer using our software product line than to try to maintain a deeper stack in house We have also continued to research DSL evolution One of the big unsolved problems is that as your understanding of the domain grows you often want to refactor the grammar of your DSLs Sometimes those changes will not be backwards compatible so eventually you need to have an approach to handling DSL evolution whether it be versioning or automated model migrations Finally we have also been investigating various test frameworks for describing acceptance tests for the applications so we can automatically generate acceptance tests from our requirements We have been working on the DSLs we use to express our requirements stories and scenarios and the goal is to be able to generate acceptance tests directly from the scenarios in a way that is sim
139. xecute FitNesse tests via the browser Tests and suites may also be run from the command line with a RESTful syntax or from a JUnit test Configuration FitNesse comes with its own version control and test history functionality so it can be used stand alone Everyone on the team can use a single FitNesse server or each team member can import tests into their local environment work on them and export changes and new tests back to the main server You may also choose to integrate FitNesse with your existing version control so that tests can be tagged along with the code that they test Each team member can have their own independent FitNesse environment and check new and updated tests into the source code control system My team checks our tests into Subversion and we run our FitNesse regression suites from our Hudson version control so that we get regular speedy feedback and take advantage of Hudson s test reporting features FitNesse tests may be run on top of either Fit using additional fixtures in FitLibrary or Slim Both currently come with FitNesse although Fit may not be bundled with FitNesse in future versions and you ll have to download it separately Each has its own set of test fixtures built in with a lot of similarity between the two sets of fixtures For example the ScriptTable in Slim and the DoFixture in FitLibrary can both be used to create flow tests that are more readable to the business You can use either or both an
140. y provide more freedom in creating a natural process ieee OO OY ae i a ieee a OF Aaea eleasing A cadence is usually harmonic in that there is a neat overlap between the different rhythms and generally keeps a regular time signature to create consistency However it does not have to be and a look at some definitions of cadence from dictionary com can show why e In music the ending of a phrase perceived as a rhythmic or melodic articulation or a harmonic change or all of these in a larger sense a cadence may be a demarcation of a half phrase of a section of music or of an entire movement e Music A progression of chords moving to a harmonic close point of rest or sense of resolution e The flow or rhythm of events esp the pattern in which something is experienced the frenetic cadence of modern life Thus cadence is what gives a team a feeling of demarcation progression resolution or flow It is a pattern which allows the team to know what they are doing and when it will be done For very small or mature teams this cadence could by complex arrhythmic or syncopated However it is enough to allow a team to make reliable commitments because recognising their cadence allows them to understand their capability or capacity The appropriate cadence for a team will be influenced by their transaction and coordination costs Transaction costs are those associated with performing an activity For example the cost
141. y achieving the benefit of Keyword Driven approach is by full integration throughout the entire test process The following diagram shows the KDT process Testers Test Automation Team Figure 4 Keyword Driven Testing Process Methods amp Tools Summer 2010 Page 21 Software Product Line A High Volume Software Product Line Peter Bell peter pbell com SystemsForge http systemsforge com Software product lines are designed to promote the efficient reuse of artifacts between projects Domain specific modeling allows for the faster development of custom applications within a particular domain Each provides powerful techniques for developing applications more efficiently but together they provide a particularly effective toolkit for the faster development of custom applications In this article I ll review an internal software product line that I have been involved with developing for a number of years designed to rapidly build semi custom web applications The article starts off with a review of our experiences and design choices It then continues with the conclusions we have drawn from our experiences which hopefully will be of some use to anyone considering leveraging domain specific languages and or software product line engineering on their projects to allow them to deliver applications more quickly and cost effectively The experience report assumes a certain familiarity with domain specific modeling concepts but if a
142. y her answer he asked So you are telling me you can t give me a low number A little louder she said Yes Clearly amused Yves asked again Why not Why not Is he laughing with me I avoid humiliating him and he laughs with me Allison was really confused now I liked the conversation so far giving a low number would give the wrong impression Aha Yves slapped his hand on the table That is another misconception about the Perfection Game The Perfection Game is not an evaluation It s a feedback tool A feedback tool to communicate ideas Surprised she said So you won t feel bad when I give you a low number Yves smiled That s correct Please tell me what your ideas are worth to you I hope he means it she thought as she said Then I give this conversation a 2 out of 10 Yves smile doubled Wow that s nice Allison turned away you see you feel hurt No Yves said firmly I said that is nice Allison replied Yeah right we both know that was sarcasm Yves refuted No it was not I m really happy you gave me ideas that for you are worth 8 out of 10 Allison looked at him as if he was from Mars Boy you really are strange Yves agreed Thank you Let me go over the format As you noticed there are three major parts in a Perfection Game a score from to 10 things you like what you liked about the thing you are perfecting 1mprovements Allison Why is perfect a goal
143. ycle time and throughput are both improved by decreasing WIP A simple example of this effect is CPU load where application performance goes down as CPU load increases Methods amp Tools Summer 2010 Page 8 Kanban The effect can be explained by looking at Little s Law for Queuing Theory Cycle Time Number of Things in Process Average Completion Rate Little s Law tells us that to improve cycle time there are two options reduce the number of things in process or improve the average completion rate Of the two reducing the number of things in process is the easier and once that is under control then the more challenging changes to improve completion rate can be applied A further understanding can come from Traffic Flow Theory Flow Speed Density Traffic jams occur as traffic density increases and traffic speed decreases However when traffic density decreases speed only increases to a point which should be the speed limit As a result there is a point at which decreasing WIP below a certain density will reduce throughput Another factor in improving cycle time and throughput is that of multitasking Reducing multitasking is beneficial for two primary reasons Time is lost to context switching per task so fewer tasks means less time lost Gerald Weinberg in his book Quality Software Management Systems Thinking 9 suggests that 20 time is lost per additional task Thus 1 task can consume 100 of time avail
144. you are limited to only four feelings You won t hear me say the Core Protocols are easy They are simple not easy Allison tried if she could fit her complex emotions into these four basic emotions That last sentence I m in tells the people that I m finished Yves added The response to 1 99 this is Welcome Welcome That makes me think of AA or therapeutic groups I saw in movies she complained Yves looked at her and said Get over that When you do this you will realize that it feels really nice to be welcome in a group I guess that is why they do that in these groups Allison wondered Isn t it scary to do this at work Yves honestly told her Yes it is scary to check in at work especially as a coach with a new team and yet the only advice I can give is to try it Allison still not convinced The format seems rather rigid Do I have to use it like that Yves reminded her about a rule that works great for all agile methodologies and tools I advise people to start using these patterns as described then when you are good at it you can be more flexible When things get tough as they always do you should be stricter again You could feel Allison was already more convinced as she asked When do you check in That s easy Yves replied Every time you feel the need In a well running team people check in multiple times a day If there is a check in is there also a check out

Download Pdf Manuals

image

Related Search

Related Contents

Philips LX3500D System  MANUALE UTENTE - Icon Heath & Fitness  AC Line Filters Installation Instructions  Hitachi 50PD960DTA User's Manual  90X 操作説明書 - FAST CORPORATION[株式会社ファースト]    LP755 User Guide - Projector Central  Elpro 455D Radio Modem user manual  2012活動報告書  Samsung 64" Plasma SyncMaster P64FP PH64KRPMBF/EN Bruksanvisning  

Copyright © All rights reserved.
Failed to retrieve file