eXtreme Testing (XT)

 
icon for podpress  Extreme_Testing: Play Now | Play in Popup | Download (42)

The content about xtreme that i have stumbled across focuses and emphasizes only on the software development process with little or no emphasis of how a team fits into an programming project or how the process needs to be tailored to accommodate teams and the activities initiated by them to test software.I have also attempted to outline methodologies that can be adopted for teams to undertake the principles of programming when the corresponding development is undertaken using conventional software development paradigms.

derives from the concepts outlined for programming () and distributed programming () and tailored to be applicable to onshore-offshore model of software development, single & multi vendor model of software development. This approach retains the classical concepts of Programming like simplicity, discipline, communication, quality, and flexibility

Introduction

(XT) derives from the and agile development methodology and implements its core practices like communication, simplicity, feedback and courage. The following section outlines how most of the 12 practices of can be applied to conventional software methodology namely,

  • Planning Game
  • Small Releases
  • Metaphor
  • Simple Design
  • ,
  • Refactoring
  • Collective Ownership
  • Continuous Integration
  • 40-hour Week
  • On-Site Customer
  • Coding Standards

The principals from above will be adopted into on a strict need to have basis and should be aggressively tailored to appreciate the fact that the process was initially designed for software development by keeping as a back end activity.

The methodologies of (XT) which will be detailed in later sections will appreciate the core problem areas that current methodology addresses namely,

quick and lean response to changing customer requirements from a perspective. How an (XT) flavor can be added as a plug-in to a conventional development project.

Practices

The following are the practices from Programming that are adopted for .

1. Planning Game

The “planning game” concept of typical Distributed Programming () address the following key decisions:

What will be accomplished by the due date?

What to do next?

The (XT) approach will also answer these 2 questions. The tailored form of it being:

What deliverables will be tested by the due date?

What deliverables will be accepted into QA?

Conventional works in iterations of 2 weeks. Where the planning game is re-envisioned and re-factored at the end of every 2 weeks. The 2 key planning steps involved in the planning game are:

1.QA Test planning:

What modules would be tested over the next 2 weeks? This forms a very critical part of steering of the QA activities since QA provides a customer commitment to provide complete test results of a named list of modules. The number of modules to be incorporated in a 2 week burst has to be kept at an optimum since the XT model of would aggressively test the modules in QA. Hence, the number of bugs reported for the module would be higher in the 2 week burst and if QA test more than an optimum number of modules the development team may be bogged down by defects reported and fail to make a defect fix delivery for all the modules.

* The core of this activity lies in the fact that

All modules that can be tested in parallel SHALL NOT be accepted into QA even if a build is available for deployment

The focus of (XT) is to aggressively test a select list of modules in a burst and NOT lukewarm of multiple modules

    Advantages of this model of planning

The number of defects reported at any given point will cluster around a select list of modules.

The tracking of bugs is less tedious.

The development team can focus on the clean-up of a restricted number of modules.

The modules that will be tested are prioritized by the customer.

The customer perceived value addition in terms of a bug free roll-out of his high priority modules will be enhanced.

The completeness of is inherently transparent to the customer since the team is entirely focused on a select list of high priority modules.

2.Iteration Planning

This is the stage of planning where the QA team gets an alignment with customer regarding the next modules that needs to go into QA on a priority basis. Depending on the extent of bug fixes delivered and tested in the previous 2 week burst the QA team can factor what number of modules can be accepted into QA and still retain team focus on of the new modules and re- of builds.

The advantage of this type of planning from conventional test execution planning is that in conventional planning, periods and dates are tagged to modules to move into QA at the envisioning and planning phase. The is no room to accommodate scenarios where extensive cycle times are required or where the number of bug fixes are high which would require increased regression efforts. The end result of such planning is an overlap of the QA efforts in new modules and regression of old modules. This often results in mayhem with respect to tracking and closure.

In iteration planning of (XT) QA can take a call to ramp down the number of new modules hitting QA at the end of every 2 weeks. Thus they can retain their focus and efforts on select modules thus ensuring better delivery.

2.Simple Design

This feature of has been tailored to suit efforts by laying emphasis on the design of test plans for a module to be tested to be kept simple. This would be the guiding principle of the entire test planning phase where the inclusion of a test case into a test plan will be on a strict “need to” basis. Rather than design and document n number of test cases for a scenario (which does not aid anyway) the team would study and arrive at a complete list of all possible scenarios for a module (this could be a derivative of use cases if implemented for the project). This activity shall be the precursor to writing test cases. From the list of these possible scenarios, the team would then identify scenarios that that be clubbed and tested in one shot. The team would then proceed to write the minimum number of test cases for each of such “clubbed scenarios”.The alternative approach for simplifying test design phase of (XT) for project which neither implement use cases nor do scenario based is outlined below:

1.List out the comprehensive set of functionalities that can/ need to be tested as part of the module under test.

2.Begin writing the first test case.

3.Analyze if the test case written address some supporting functionality/ dependency/ requirement.

4.If yes, analyze if the test case completely address the supporting functionality/ dependency/ requirement.

5.IF it addresses it completely knock off that requirement from the set of functionalities that you need to test since it has already been covered and a further test case would be superfluous.

6.IF it addresses it only partially THEN attempt to re-work the scope of the written test case to encompass this requirement too. IF you succeed then execute step ‘e’. ELSE continue writing test cases.

7.After completion of writing all test cases re-analyze the test cases written in the light of steps ‘b’ to ‘f’.

3.Pair

This concept has been derived from the classical concept of “”. Pair is however, not a mandatory requirement to implement (XT). The concept of pair can be adopted when the team is extremely focused on a very few modules in parallel, that too extremely aggressively. The test pair formed should then resort to classical concepts like “exploratory ” and “intuitive ” since 2 resources are deployed for 1 module the productivity of bugs reported to efforts should not be compromised.

This scenario is applicable to a highly mature team of tenured testers who have a comprehensive grasp of the system functionalities and can perform real time prioritizing of the test cases planned to be executed by spotting the defect density in a module and zeroing in on those functionalities early in the cycle.

The benefits of pair are:

Early reporting of a large number of defects.

Enhance the customer perception that the test team is highly efficient in spotting defects.

The paired team has to be dismantled as soon as the defect reporting stage reaches its “critical mass”. This methodology therefore assumes importance when fresh modules get deployed into QA. This would not be necessary for regression efforts where the number of bug fixes delivered is less.

4.Metaphor

This is an approach where the team evolves a common and complete understanding of what the system is intended to do at a macro level and what each piece of it coming into QA during a 2 week burst is supposed to address. The implementation of this concept is done through brain storming sessions prior to starting a 2 week burst where the team will review and strategize the activities planned for the week to arrive at a common understanding of the modules coming in and how it integrates to the already certified modules. This can help test teams evolve their understanding of the system and will help at advanced stages like end-to-end or clean pass .

5.Refactoring

This is a critical concept of (XT) where the initial test design documents, test strategy documents and test plans are treated as “live documents” and the team is free to enhance their test suite, augment the test coverage in real time during test execution or during the look ahead meeting they would have every 2 weeks to evolve the common metaphor (discussed in the above segment). These documents can then be updated on a “need to” basis. This flexibility would allow the teams to actively document their test efficiency improvements during the entire lifecycle of the project.

6.Collective Ownership

Collective ownership of all QA deliverables is a mandatory part of (XT). This means that all artifacts and plans can be reviewed and changes proposed at any point of time.

The benefits of implementing collective ownership:

The QA deliverables get the attention of the entire team.

Cross dependencies and redundancies of test strategies and test cases can be caught by any member of this team.

The probability of code segments and snippets of automation scripts developed being re-used is greatly enhanced.

The activities will hence become further lean and the bulk of test cases and LOC’s involved in automation scripts would be reduced because of extensive re-use or re-scoping them to be used for multiple scenarios. This involves test cases and automation scripts used across modules being re-scoped or re-used to produce a lean mode of operation.

Collective ownership will ensure that there is cross expertise in the team. This would help is de-risking the project by being heavily reliant on a single person to ensure delivery.

7.Continuous Integration

Continuous integration requests will be done for to the development team. This is so that instead of individual components till the fag end of or till end-to-end the QA team will be new modules by integrating them into the bug free modules already existing in QA. The benefit of this mode of operation is that integration does not become a one shot activity where multiple interfaces can fail OR integration leads to collateral damage on a large scale. This could make the task of defect analysis extremely tedious. Hence the focus in is on a continuous bottom up integration in QA. This would ensure that during end-to-end the entire system as a whole can be tested without being bogged down by minor interfacing issues being raised and fixed at the end of the effort.

8.40-Hour Week

This is a mandate of Programming () that is retained as is in (XT). Since teams adopting would endure long periods of concentrated efforts it is mandatory that they are not to work overtime. It is deemed in this paper that the necessity of adhering to this and the impact of not adhering to it need not be explained.

teams are in it to win, not to die”

technorati tags:

If you enjoyed this post, make sure you subscribe to my RSS feed!

Related posts