Software testing methodologies.

This page is under construction.
Coming Soon.
Software testing methodologies

under construction

we are moving from
Software testing methodologies.
Below are just some personal notes on the topic.
Information is not complete, verified and systematised. Some references will be provided in future

"You can fool all the people some of the time, and some of the people all the time, but you cannot fool all the people all the time."
—Abraham Lincoln

Test Methodologies: classification of the ways we are going to approach testing from it’s effectiveness side. This classification will include descriptions of some popular testing methodologies.

The purpose of any testing methodology is to use a certain approach for software testing. This approach has some selected methods and techniques that will be used for software testing and solving all upcoming problems.

Any testing methodology must describe the production, execution, and maintenance of the test suite. Test methodology must be adjusted for the potential users of the test suite.

I will try to give an overview and describe all new/well known software testing methodologies. I will attempt to introduce guidelines for choosing correct methodology. All definitions will be taken from accepted and identified sources.

methodology defined the way to select test cases and analyze test results.
Formal Specification based
White-box testing techniques are also called structural testing techniques, whereas black-box testing techniques are called functional testing techniques.
Evaluation-Oriented methodology (Lifecycle Validation, Verification, and Testing)
  • white box or structured testing methodology
  • Black box or functional methodology
  • Grey (gray) box methodology
  • Agile testing methodology
  • Rapid software testing by James Bach, a complete testing methodology designed for a world of barely sufficient resources, information, and time.
  • Mutation testing - A testing methodology in which two or more program mutations are executed using the same test cases to evaluate the ability of the test cases to detect differences in the mutations.
  • Orthogonal array methodology
  • Decision table–based and category partition–based testing methodology.
  • Conformance Testing Methodology.
  • Pareto testing methodology.
  • In the BIT [Built-in Testing] methodology.
  • The CPM is a systematic, specification-based methodology that uses an informal functional specification to produce formal test specification. [T. J. Ostrand and M. J. Balcer. The Category-Partition Method for Specifying and Generating Functional Tests. Communications of the ACM, June 1988,]
  • Category Partition: The category partition methodology requires a test engineer to divide the functional specification into independent functional units that can be tested separately [SOFTWARE TESTING AND QUALITY ASSURANCE Theory and Practice. by KSHIRASAGAR NAIK and PRIYADARSHI TRIPATHY, 2008]
  • Orthogonal defect classification (ODC) methodology [R. Chillarege, I. S. Bhandari, J. K. Chaar, M. J. Halliday, D. S. Moebus, B. K. Ray, and M. Y. Wong. Orthogonal Defect Classification—A Concept for In-Process Measurement. IEEE Transactions on Software Engineering, November 1992,]

    Test Driven Development: Testing methodology associated with Agile Programming in which every chunk of code is covered by unit tests, which must all pass all the time, in an effort to eliminate unit-level and regression bugs during development. Practitioners of TDD write a lot of tests, i.e. an equal number of lines of test code to the size of the production code.

    metamorphic testing methodology for service-oriented software applications

    Software testing methodologies and techniques.
    There is no formally recognized list of all successful testing methodologies.
    Testing methodologies:
    1. structured testing methodology also known as basis path testing
    Category Partition testing: testing methodology that requires to divide the functional specification into independent functional units that can be tested separately.
    Six Sigma
    Developed by Motorola. Uses statistical tools and the DMAIC (Define, Measure, Analyze,
    Implement, Control) process to measure and improves processes.
    Analytical Problem Solving Very critical for testers because problem decomposition and root cause analysis are key to driving quality upstream.

    Test Methodology : It is the way we are going to handle a project. It is nothing but a tactic we are following during a project cycle.

    The term "methodology" became popular in information systems in the early 1970's, initially as a response to the question, "What is it?" Milt Bryce first applied the term to systems development in 1971, to describe his Information Systems Engineering process.
    Bryce referred to "methodology" as a process which ends with the delivery of a product or a completely defined result.
    at MBA define a methodology as, "a process which ends with the delivery of a product or a completely defined result." Under this perspective, a methodology defines the "5-W's"; it defines WHO, is to perform WHAT work, WHEN, WHERE, and WHY
    As opposed to the "5-W's" interpretation by MBA, a methodology supported by the software design people defines HOW a particular task is to be performed. For example, the forte of design techniques such as "object oriented programming," "structured programming," or "information engineering" is on HOW to accomplish specific activities of work. From this context, the term "methodology" is a misnomer which should be replaced by the term "technique," a more apt description.
    A true methodology addresses the effectiveness side of the equation (Who, What, When, Where, Why), and a technique addresses the efficiency side (How to). Whereas a methodology defines the work environment, the technique defines how the work is to be performed. The two are obviously complementary and one does not eliminate the need for the other. But comparing one with another is like comparing apples with oranges, they are simply not the same.
    by Tim Bryce
    The author, Tim Bryce, can be reached through his company's web site at: Comments and questions are welcome.

    Testing methodology is a general documented procedure followed during software development life cycle of the specific project by the development and the testing teams. This defined methodology will specify the general testing techniques for projects. These methodologies might be customized for example from a spiral, V - type or extreme testing methodology.

    Models vs. Methodologies: The process of gathering and analyzing an application's requirements, and incorporating them into a program design, is a complex one and the industry currently supports many methodologies that define formal procedures specifying how to go about it. One characteristic of UML - in fact, the one that enables the widespread industry support that the language enjoys - is that it is methodology-independent. Regardless of the methodology that you use to perform your analysis and design, you can use UML to express the results. And, using XMI (XML Metadata Interchange, another OMG standard), you can transfer your UML model from one tool into a repository, or into another tool for refinement or the next step in your chosen development process. These are the benefits of standardization! [OMG Object Management Group]

    Software Development (design) methodologies
  • Chaos software development
  • Most design methodologies are based on the top-down approach.
  • waterfall model from 1970
    One of the earliest models in which phases are executed sequentially so that each stage will start only when all tasks identified in the previous stage are completed.
  • incremental model
    A software development model in which individual modules of the system are developed at different times and integrated at different time intervals depending on their completion.
  • iterative model
    A software development model in which developed modules are reviewed and new functionality is added to improve the system. (RAD, Spiral, RUP,Agile)
    RUP (Rational Unified Process) is a framework for constructing methodologies for individual projects.
  • TDD [test-driven development] methodology.
    Test first Software development methodology in which the programmers write unit tests before the code.
  • V-model - A software development model in which testing activities are performed in parallel with development activities.
  • Component assembly development model
  • Extreme programming (XP) is one of the most popular and well-known approaches in the family of agile methods.
  • OO (object-oriented) design methodology.
  • Lean Development Methodology - developed by Taiichi Ohno of the Toyota, based on the following seven principles: eliminate waste, amplify learning, decide as late as possible, deliver as fast as possible, empower the team, build integrity, and see the whole.
  • The Six Sigma methodology, consisting of the five steps define, measure, analyze, design, and verify.
  • Total quality control is a system for integrating the quality development, maintenance, and improvement efforts developed and published [Total Quality Control, by Armand V. Feigenbaum, 1951]
  • Shewhart cycle - a continuous improvement cycle known as plan, do, check, and act (PDCA). also known as the Deming cycle.
  • Scrum is an iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development.[WIKI]
  • Structured Design Methodology: partitions the system under design at the very top level into various self operational subsystems.
    There are 4 major steps in the methodology:
    1. Restate the problem in a data flow diagram
    2. Identify the output and input data elements
    3. First-level factoring
    4. Factoring of all output, input, and transform branches
  • Incremental
  • Top down
  • Bottom up
  • Sandwich
  • Big bang

    ****************************************************Agile methodology
    Placing people over processes is a priority declared in the agile manifesto.
    Manifesto (from the agile website): • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan
    (Agile manifesto has 12 principles)
    Agile life cycle has 6 phases’ (iteration 1, iteration 0, construction, release, production, retirement.)

    Agile development model - A software development model that uses both iterative and incremental methods to develop software (XP, Scrum, crystal clear (light), adaptive software development, lean development, Feature driven development (FDD)- is suitable for very large projects, Dynamic systems development method (DSDM)

  • Extreme Programming
    An agile development methodology that focuses on small development teams with as few members as possible and follows twelve practices for effective development.
  • scrum
    An agile software development methodology that employs iterative and incremental development by using the time boxed approach and laying importance on teamwork.
  • Crystal Clear (light ) is an agile methodology for projects with small teams, less than about 10 people in size.
  • Adaptive Software Development
    Adaptive Software Development is a variation of the agile methodology that is normally used to develop large and complex software systems. It advocates incremental development of software through constant iterations and by developing prototypes when it is necessary.
  • Lean Software Development
    A software development methodology based on the Lean manufacturing methodology that enables developers to develop robust software applications at low cost.
    Kanban is a lean approach to agile software development. (Visualize the workflow; Limit WIP [work in progress]; Measure the time to complete one item;)
  • Feature Driven Development
    Feature Driven Development an iterative and incremental software development methodology that is typically used for large software projects.
    Feature Driven Development (FDD) is an iterative and incremental software development process. It is one of a number of agile methods for developing software and forms part of the Agile Alliance. FDD blends a number of industry-recognized best practices into a cohesive whole. [Wiki]
  • Dynamic Systems Development Methodology
    A software development methodology based on the Rapid Application Development (RAD) model.

    In the BIT [Built-in Testing] methodology, testability is incorporated into software components, so that testing and maintenance can be self-contained.

    eXtreme Programming (XP) software development methodology. In the XP methodology, the customer closely interacts with the software development group and conducts acceptance tests during each development iteration [K. Beck and C. Andres. Extreme Programming Explained: Embrace Change, 2nd ed. Addison-Wesley, Reading, MA, 2004.].

    On this site you can find information about software testingand automated software testing tools, recommendations forsoftware testing training course, list of books about softwaretesting with recommendations and books suggested for softwaretesting certification, online software testing quiz, interviewquestions for software testers, software testing dictionary,samples of software testing documentation including test casetemplate, jokes about software testing and testers, software testing techniques and more ...

  • eXtreme software testing    Main Page

    Copyright © 2009  All Rights Reserved.