Project Insight Community
Sign in | Help
in
 

IT Project Management Software & Efficiency Solutions

August 2011 - Posts

  • The Cycle of Life: Software Testing

    Context
    From the initial days of Information Technology (IT), practitioners have always recognized the need to establish and apply a suite of industry recognized best practices. One of these best practices is used to develop and maintain computer applications – it is called the cycle of life for software. A number of lifecycles have been developed to address specific disciplines within this cycle of life – examples include Project Management Lifecycle (PMLC), Software Development Lifecycle (SDLC), and Software Testing Lifecycle (STLC).   In all cases, these lifecycles are made up of a number of phases, each containing a predefined set of deliverables.

    Software Testing Lifecycle (STLC)
    The STLC is used by application development and maintenance teams to test and verify the functionality of an IT application or system – the intent is to ensure a certain degree of quality has been incorporated into the application being delivered.  It is used across an organization and is applied from the inception of a project (development or maintenance) through a successful implementation of the required solution.  Though a multitude of STLC’s exist, they are commonly based on a phased approach, pre-defined deliverables, and standard naming conventions. The STLC traditionally executes in parallel and concurrently with a software development lifecycle (SDLC).   The following provides an overview of the phases within a traditional Software Testing Lifecycle.

    Systems Analysis
    The Systems Analysis phase is the first phase to be performed within an STLC. It is initiated in conjunction with a project being authorized or approved. Its purpose is to ensure proper and effective planning is applied to the strategic and user acceptance testing effort and activity that will be performed on the application prior to it being placed in the production environment. This includes defining the user acceptance criteria and conditions the user community will apply to assess the functionality being delivered.

    Design
    The purpose of the Design phase within the STLC is to

    1. Ensure proper and effective planning is applied to define the system integration and unit testing efforts to be performed on the application
    2. Establish the pre-defined testing criteria and conditions that will be used to evaluate the system integration and unit testing results

    Build
    The Build phase is an iterative process within the STLC. Its purpose is to ensure all the technical code that has been developed reflects the pre-defined unit testing criteria established during the Design phase - the following steps are applied

    1. Apply and execute the pre-defined unit testing criteria (defined in the Design phase) against the technical code that have been created 
    2. Identify and document unit testing deviations (expected results versus actual results)
    3. Communicate unit testing deviations to the development team
    4. Retest revised technical code against the unit testing criteria
    5. Confirm that all the pre-defined unit testing criteria have been satisfied
    6. Promote the authorized technical code from the unit test environment to the system integration test environment

    Test
    Like the Build phase, the Test phase is an iterative process within the STLC. Its purpose is to ensure all the technical code that has been developed reflects the pre-defined system integration testing criteria established during the Design phase – the following steps are applied 

    1. Apply and execute the pre-defined system integration testing criteria against the technical code that have been created
    2. Identify and document system integration testing deviations 
    3. Communicate system integration testing deviations to development team 
    4. Retest revised technical code against system integration testing criteria 
    5. Confirm that all the pre-defined system integration testing criteria have been satisfied 
    6. Promote the authorized technical code from the system integration test environment to the user acceptance test environment

    Release
    Just like the Build and Test phases, the Release phase is also an iterative process within the STLC. Its purpose is to ensure that what has been developed meets the user acceptance testing criteria established during the Systems Analysis phase – the following steps are applied  

    1. Apply and execute the pre-defined user acceptance testing criteria against the technical code that has been generated
    2. Identify and document user acceptance testing deviations 
    3. Communicate user acceptance testing deviations to development team
    4. Retest revised technical code against the user acceptance criteria
    5. Confirm that all the pre-defined user acceptance testing criteria have been satisfied
    6. Promote the authorized technical code from the user acceptance test environment to the production environment

    The STLC can be applied by development teams to create applications – it can be applied by support teams to maintain applications.

    Cameron Watson


    Cameron Watson is the President of QAIassist. QAIassist helps organizations increase and optimze their IT delivery and support efficiency. QAIassist's Integrated Methodology incorporates the disciplines and deliverables required for organizations to consistently deliver quality applications on time and within budget.

  • IT Methodology – How much is too much ?

    In a recent scan through Google I came across a number of the articles comparing the “waterfall” delivery approach to the “agile” delivery approach. Paraphrasing, the one article described “agile” as a fad – the other article praised “agile” as the next best thing since sliced bread.  The more I read of these articles, the more obvious it became that something in the IT lore had been lost somewhere along the way – the industry as a whole appears to be in a conscious effort to forget what was learned yesterday only to reinvent it again tomorrow. What seems to have been lost in both articles is the reality that the whole “waterfall/agile” discussion/debate has been going on for over 50 years.

    Though proponents of these (“waterfall” versus “agile”) delivery approaches differ in perspective, the ardent advocates of each frequently fail to recognize the whole “waterfall/agile” debate is merely an extension of the ever present and necessary exercise every organization undergoes to assess and verify the value and contributions of their IT assets (staff, hardware, software).  Put another way, the discussion gets down to determining how much formality and structure an organization requires to ensure its IT assets are effectively contributing value to the delivery of its products, services and internal operations. We need look no further than a couple of examples. Citing NASA of the 1960’s, the Apollo missions required a great deal of rigor to send the first space craft to the moon – a formal methodology  was mandatory to ensure the astronauts were able to reach their destination and arrive home safely. Citing the teens of the early 1980’s when building games on their newly purchased Commodore 64’s - functionality was created without restriction – to them, formal methodology was a derogatory term viewed as a harness encumbering their creativity and productivity. Though we may have recently been lulled into believing the fundamental question is about "waterfall" versus "agile" we somehow have forgotten that these discussions (structure versus non-structure) have existed and been ongoing between IT practitioners since the inception of IT.

    At the risk of stating the obvious, it is important that IT users and practitioners always remember there is a difference in the term” IT methodology” and how it can be applied. In one sense, “IT Methodology” is a “noun" - a path that can be used to get from a starting point to a destination (road from Boston to New York) - the road is constant and unchanging (in this context “IT Methodologies” include RUP, PMI, QAIassist, etc). In another sense, “IT Methodology” is used as a "verb" - how a project team uses the path (noun) to get to its destination (delivery approaches include waterfall, agile, spiral, RAD, etc).

    For the sake of the IT industry, I can appreciate and promote the need to have an ongoing debate/discussion on the merits (pro's and con's) for each of the various delivery approaches (verb - waterfall, agile, RAD, spiral), however, the reality is that if one (waterfall, agile. etc) of these delivery approaches was ever proven to be more beneficial and successful than any of the other delivery approaches it would be being utilized by every project manager on every project by every organization. That stated, we must not ever forget that each and every one of these delivery approaches as its own merits but must remain subservient to the business and the business need (applying waterfall or agile for the sake of applying waterfall or agile must always remain a non starter).

    Reflecting back on the early days of my IT career, I remember the various organizations I had the privilege to work for. On the one hand there was the "structured organization" that required a formal and structured delivery approach (ie documentation, formality, formal deliverables, etc) - a formal repeatable IT methodology (noun) was required and relied upon to consistently deliver quality applications on time and budget, it was a predictable repeatable process in and of itself. On another hand, there was the "let’s get the application out the door yesterday organization" that had a need to complete applications to meet the timeliness to market expectations on an ongoing basis (ie no time to complete documentation, no deliverables, no ongoing application support, no formal testing). My point is not to promote which of these delivery approaches or organizations was more successful, but rather, that every organization has various business needs and those needs (as part of the culture) will influence and define what delivery approach (waterfall, agile, RAD, etc) can and should be used and whether or not a formal “IT methodology” (noun - RUP, PMI, QAIassist, etc) would bring additional increases to the IT value equation.

    All that said, I am hoping this article can provide users and IT practitioners a context and backdrop they can reference to continue discussing how IT tools, techniques and practices can best be leveraged to deliver increasing IT value to our ever growing client base.

    Cameron Watson


    Cameron Watson is the President of QAIassist. QAIassist helps organizations increase and optimze their IT delivery and support efficiency. QAIassist's Integrated Methodology incorporates the disciplines and deliverables required for organizations to consistently deliver quality applications on time and within budget.

Copyright Project Insight & Metafuse, Inc., 2010. All rights reserved.