The Trends in the software testing and maintenance will be different than what is today. Testing needs to be more effective and efficient so that it keeps in pace with or support the changing trends in software development .Software development is a muddled process, recognized by a phrase "code and fix". There is no predetermined plan while writing a software code and the design of the system is paved together from many short term decisions. It works well if the system is small but become difficult to add new features when the system grows. It is difficult to fix the bugs as they become increasingly Bugs become increasingly common .Such systems have long test which leads to chaotic schedules as testing and debugging is impossible to schedule.
"Agile methodologies were developed as a response to these methodologies. The new methodology is combination of no process and too much process, providing just enough process to gain a reasonable payoff thus agile methods have some significant changes in emphasis from engineering methods. A major difference is that they are emphasizing a smaller amount of documentation for a given task. Agile methods are code oriented and follow a route that the key part of documentations is source code. Usually software development life cycle methodologies are either iterative and become more complex and cannot easily adapt to the continuous and number of changes that occur".( New Software Development Methodology , Martin Fowler ) Agile methodology was developed to respond to changes quickly and smoothly. The iterative methodologies tend to remove the disadvantage of sequential models; they still are based on the traditional waterfall approach. Agile methodology is a collection of values, principles, and practices that incorporates iterative development, test, and feedback into a new style of development. Agile methods are adaptive rather than predictive. The agile methods are open to change. They try to be processes that adapt and thrive on change, even to the point of changing themselves. Agile methods are people-oriented rather than process-oriented. Agile methods believe that the skill of the development team is most important, so the role of a process is to support the development team in their work. The major reason for the failure in the application of traditional software development methodologies was because of the waterfall model.
Background
The term was coined in the year 2001 when Agile Manifesto was formulated. Edmunds introduced an adaptive software development process in (1974). Agile Software development is defined as easily moved, light, nimble, and active software processes. Agile processes are not only present in the software development but also in the mainstream business literature in 1991 in the form of agile manufacturing. (http://en.wikipedia.org/wiki/Agile_software_development)
Agile testing - Bugs
An agile development project may have it own set of bugs which can be introduced in the system when a code is enhanced by the developers .While a code or program is changed new bugs can be introduced or the previous code can be broken .New defects can come into existence whenever there is any change in the software program .
Procedure to test in Agile Development Method
The effective way to test a code is making sure the test is covered properly or test effort is automated .But there can be few issues while testing that is due to lack of documentation .At the same time since the communication is close between the team members the clarity of understanding is better among the developers of the system .
Whenever the code is changed regression testing is done .The right mix or combination of people executing the test cases ,automated scripts is required while test coverage .Exploratory Testing may also be encouraged. It is important that testing is sufficiently done and all the scenarios tested to ensure that the delivered product meets the end user`s requirements.
The objectives of the Project should be clear to the entire team. Each Software delivery should be tested thoroughly before it is released. The timelines being short requires that the person testing the software has sufficient knowledge about the system and its objectives
Potential benefits
Agile methodology has an adaptive team which is able to respond to the changing requirements.
The team does not have to invest time and effort and finally find that by the time they delivered the product, the requirement of the customer has changed.
Face to face communication and continuous inputs from customer representative leaves no space for guesswork.
The documentation is crisp and to the point to save time.
The end result is the high quality software in least possible time duration and satisfied customer.
In short you can get development started fast, but with the requirement that the project scope statement is "flexible" and not fully defined. Hence this can be one of the major causes of scope creep if not managed properly.
Disadvantages of Agile Methodology
In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
Lack of emphasis on necessary designing and documentation.
If the customer representative is not clear what final outcome that they want the project can easily get taken off track.
Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
Flavors of Agile Development
Under this broad umbrella sits many approaches such as Extreme Programming, Scrum, Lean Development, etc. Each of these more particular approaches has its own ideas, communities and leaders. Extreme Programming is one of the most widely used approaches.
XP (Extreme Programming)
Usually the whole system is designed at the start of the project but in Extreme Programming the preliminary design work is compact to solving the simple tasks that have already been identified. There is a direct communication between the developers and the customers to understand the initial requirements. The project starts with a simple task and they get feedback by testing as soon as the software is developed and completed .The customers receive the system quickly and the requirements are refined or added based on customer feedback. Thus the requirements under go evolution over a period of time and there is a quick response from the developers to the changes. The code is written by the developers to fulfill the specific engineering task which is considered as the real design effort. A group of user stories is capable of describing the system as a whole. The developer's refractor the previous code iteration to establish the design needed to implement the functionality. Developers work in pairs during the Extreme Programming development life cycle. One developer writes the code for a particular attribute, and the second developer reviews the code to ensure that it uses simple solutions and adheres to best design values and coding practices. Extreme Programming is software that addresses risk at all levels of the development process which includes risks like to-do list slips; termination of the project, high number of defects, misunderstood requirements makes agile methodologies an interesting alternative for decision makers.(Testing Methodologies, http://xprogramming.com/xpmag/whatisxp)
Scrum
Scrum is an agile process that can be used to manage and control complex software and product development using iterative, incremental practices. Scrum has been used from simple projects to changing the way entire enterprises do their business. Scrum significantly increases productivity and reduces time to benefits while facilitating adaptive, empirical systems development.
Crystal
Crystal introduces the importance of people and communications, and adjusting the techniques used in a project to the characteristics of that particular project. While other software development methods, particularly other agile methods, do stress the importance of people, the Crystal family uses a focus on people and communications as its organizing principle, and most of the properties and techniques are based on strengthening that process. This technique short focuses mainly on Crystal Clear, which is planned for small teams working on low criticality projects. (Kent J. McDonald, http://www.projectconnections.com/templates/detail/agile-techniques-crystal.html)
Context Driven Testing
Context-driven testing is a paradigm for developing and debugging software that takes into account the ways in which the programs will be used or are expected to be used in the real world. In order to successfully conduct this type of testing, software developers must identify the intended market and evaluate the environments in which people are likely to employ the product. Advantages of context-driven testing include enhanced user-friendliness of the end product, optimized functionality for intended users and adaptability of the product to changing markets and social values. The context-driven methodology does not necessarily work well in all situations. Other approaches might prove better for developers who are under the direct supervision and control of an autocratic boss who takes responsibility for the results of work done. Context-driven testing would prove superfluous in stable environments where conditions rarely or never change. ( http://searchsoftwarequality.techtarget.com/sDefinition/0,,sid92_gci1242064,00.html)
Lean Development
Lean development is change tolerant software. The objective of Lean Development is to build software with one-third the human effort, one-third the development hours and one-third the investment.
The principles of Lean Development are as follows:
The highest priority of the customer is to satisfy the customer.
Provide the best value for money.
If the customer is active development is successful.
Every Lean Development project is a team effort.
Everything can be changed
Area, not point, solutions.
Complete, don't erect.
An 80 percent solution today instead of 100 percent solution tomorrow.
Simplicity is essential.
Needs established technology.
Product growth is most essential
Lean development should never be pushed beyond limits.
Unified Process
Rational Unified Process (RUP) is an object-oriented and Web-enabled program development methodology. According to "Rational developers of Rational Rose and the Unified Modeling Language, RUP is like an online guide which provides detailed guidelines, templates, and examples for all aspects and stages of program development. RUP and similar products such as Object-Oriented Software Process , and the OPEN Process are comprehensive software engineering tools that combine the procedural aspects of development" such as defined stages, techniques, and practices with other components of development such as documents, models, manuals and code within a unifying framework.
RUP consists of four phases of development, each is organized into a number of separate iterations that must clearly agree to the defined criteria before the next level is undertaken: in the starting phase, developers define the scope of the project and its business case; in the elaboration phase, developers analyze the project's needs in greater detail and define its architectural foundation; in the construction phase, developers create the application design and source code; and in the transition phase, developers deliver the system to users. RUP provides a prototype at the completion of each iteration. (http://searchsoftwarequality.techtarget.com/sDefinition/0,,sid92_gci810206,00.html )
Conclusion
In the present global venture solution there are complications because of the rapid changes in the business needs. The so-called agile methodologies which are adaptable to change, people-oriented, speedy and responsive are well suit to the software development projects. However, company needs to consider which agile methods are beneficial for the company or some specific projects. The company can select different agile methods for different projects or just customize any features that match the condition of the company and the projects. There are number of things to bear in mind before using agile methods. Agile methods need more discipline and the light weight of agile methods is added advantage. Agile methods are basically people-oriented, it's important that a team is started ready to work in an agile way. Many organizations realized the noteworthy benefits from implementing agile methods and their trivial development processes. Significant reductions in application development costs and improvements in application quality have been revealed.