Software Testing India – How AGILE Testing helps in building better Software Products
What Exactly is Agile Testing
Technology and methodologies on the Internet are changing rapidly.
Trends in recent years have been for software to move to much larger venues in the web, cloud and mobile applications. One way to handle software development in an ever changing environment is by imbibing Agile methodologies as part of development process.
Agile testing comes from the same philosophy as Agile Methodology and stresses on testing practices which emphasizes individuals and actions over processes and tools. Software products become more valuable than the documentation. Clients become included in the process of creating and testing software.
An organization known as the Agile Manifesto at www.manifesto.org further defined the concepts of Agile Testing.
It took the philosophy created by Martin Fowler, a British software engineer, expanded it and organized it into a process with nine to twelve parts. Martin Fowler called it a “detailed process with a strong emphasis on planning inspired by other engineering disciplines”. Over time the “waterfall” method in practice resulted in a massive bureaucracy that slowed down product development and release.
Agile methodologies came about as a solution to lessen the bureaucracy.
In the Agile methods, the work cycle becomes abbreviated.
Instead of phases and schedules, it has cadence points which result in completed product increments. Less documentation becomes required with a focus on code and whether the product piece works. Specification becomes by example with tests for software products based on real examples–a product piece in hand functioning.
Every two weeks, the direction of a project receives a review making it easy to steer in other directions as conditions change. Quality becomes part of development and becomes everyone‘s responsibility
By incrementing, inspecting and adapting development cost and time to market becomes reduced.
Continual planning of the release optimizes value and maximizes team ability to compete in the marketplace. Included in the process are business people who have a sense of what users need and want.
Change becomes welcomed, constant necessary cooperation fosters communication between differing disciplines and adaptability becomes the norm.
A typical agile methodology work flow reads like this:
- Understand the Context of the Project and its Vision
- Identify Reasoning Behind Testing Performance
- Identify Testing Performance Value
- Test Environment Configured
- Coordinate Identified Tasks
- Execute Tasks
- Report and Analyze Results
- Consider Performance Criteria and Revisit Top 3 Criteria for Adjusting Product Increment
- Re-prioritize Tasks
Why Agile Testing is Relevant to Product Development Start-ups
Problems with managing large software systems sequentially becomes large by the time developers and testers deliver the product the business environment and needs may have dramatically changed.
Fierce competition, customer and client disappointment in a product means teams must regroup to fix the product after they have moved on to other projects. Lost time, increased cost, and company reputations become tarnished especially if the product did not come in on time.
Consumers and clients demand more and demand seamless integration of services.
Devices used for software application access have multiplied. Business, government, education and other leading institutions require software to transact daily activities.
The Internet environment itself requires integrated approaches for product release and on-going testing. Web applications became rich and dynamic. Connections to legacy software needed creative solutions. A rapid pace means no time for fixing bugs due to poor coding after product release.
Challenges That Agile Principles Place on Traditional Testing
Traditional testing runs by schedules while Agile Principles state the product increment must work before the next step. Agile requires an entirely different set up. Traditional testing thrives on specifications and documentation demands with little change. Agile thrives on change, little documentation and collaboration.
Testing processes are not necessarily a must in Agile Testing since negation of a test is possible to keep the process simple. Traditional testing demands test after test until reports reach goals.
Traditional testing creates tendencies for groups to isolate since within that group they understand the challenges and the problems encountered in the process. Communications in traditional methods emphasize extensive communication within the group itself but not to other groups.
Agile methods require extensive communication between the groups. Agile is not predictive but adaptive. Progress is only made when the issues and problems are talked about and solved.
Traditional testing because of its sequential nature has lags of time where one team is waiting on another for information, reports or product piece. Agile methods allow many pieces of the product to be worked on at once.
Traditional methods get some quality information during the creation phase of the process, but by and large the most relevant information comes after the release with the client and customer feedback.
If the software works in each increment and then as a whole is the criteria used in Agile Testing. Internet protocols and processes are in constant flux. Recommendations by IEEE and other leading authorities at leading software engineering conferences has been for Agile Methodology, and Agile Testing to shorten time lines.
Moving toward Agile Testing means a shift in thinking and a change in the engineering business culture to reach its fullest success.
Advantages to changing to Agile methods are:
- Testing becomes parallel to the development of an activity so less time taken for testing.
- Iterative and incremental product features may give benefits early in the development.
- Integrated testing in the lifecycle of the product means inspection and adaptation as a product develops.
- Increased visibility of the product owner and product team allows identification of issues early and responding to issues quicker.
Disadvantages of the philosophy are:
- New team members coming on board in the middle of the project or later may find that the small amount of documentation does not give enough information for their full understanding.
- Allowing innovation can result in excellent products, but the flexibility must be balanced with the client and profit needs. Products can always become improved. Prioritize the improvements otherwise an everlasting project may develop. Goals on delivering a product must be placed in a reasonable time frame.
A study performed by Dr. David Rico on what the ROI (return on investment) between the Agile testing and traditional method gave some eye opening statistics. Data from 69 scholarly studies were gathered and analyzed.
The formats of study varied from cases, surveys, experiments and simulations giving a full view with several perspectives on what Agile Testing is capable of in creating in work environments. Data reported 97% better productivity, 50 % better quality, 29% better cost, 91% better scheduling than CMMI (capability maturity model integration) and 400% better customer satisfaction.
Some traditional methods scored higher in the analysis, but had the advantage of removing defects before testing to minimize total lifecycle costs. This study’s structure highly rewarded software development that resulted in high quality with low density defects.
Other items for awareness sake are these studies showed Agile methods use by small and medium sized projects. A study for Agile methods used in large organizations needs to be made. Many large organizations such as NASA and Lockheed use Agile.
Agile Testing Methodologies–How Does It Work Actually
Agile Testing has flavors. The method for a particular route of software development must be chosen carefully. Two flavors frequently used by companies is Scrum, and Extreme Programming.
A SCRUM framework emphasizes holistic, flexible strategies where development teams work as units on a common goal. Planning and managing a project is decided by a project’s operation properties and certainties.
Its three core components are product owner who is responsible for the delivery and functionality of each iteration, development team manages and organizes work in a cycle and ScrumMaster who removes all obstacles to progress, sets up Sprint meetings, and sets up the teams.
Phases of SCRUM are as follows:
- Test Design gathers user stories written by the product owner.
- Short Stories describe functionalities of system under a test and then tests cases are developed based on the user stories with oversight from business analysts and customers.
- Test Execution involves testing carried out in the lab with tester and developer partnered.
- Defects are recorded, discussed and tracked in daily meeting. Then retests are set up to fix issues.
- Test Automation utilizes open source or paid tools to accomplish goals.
- Managing is the Sprint (cycle of work) meeting at the start of the project that decides scope, reviews logs on product, makes estimates and makes assignments. Daily meetings are 15 minutes where which tasks for the next 24 hours will be done, review the last 24 hours tasks and remove all obstacles.
Extreme Programming advocate short development cycles on products that focus on improving the product itself or increasing productivity. It works well in environments where clients have constant change.
Six phases exist:
- Planning identifies sponsors and stakeholders. It checks infrastructure needs, checks security information and obtains service level agreements.
- Analysis gathers stories, prioritizes it, uses the information to make estimates. It then defines the time span needed to accomplish the goal. It makes resource plans for development and QA teams.
- Design is the breakdown of the tasks needed, how tasks are tested and the regression automation framework.
- Execution is the work of coding, unit testing, test scenarios, defect reports. It involves the conversion of manual test cases to automation regression test cases. Two reviews exist of mid iteration and end of iteration.
- Wrapping means granting small releases, regression testing, demos and reviews.
New stories are written to address the needs found from the reviews. Process improvements are made based on the end of iteration review comments.
- Closure launches the pilot program, develops training, and starts production. A SLA guarantee assurance is made with a review of SOA strategy along with production support.
Since the development of the Agile Manifesto principles many hybridizations of the process have appeared. Essentially that is the beauty of the process, it is adaptable to a company’s needs as long as an environment of communication and collaboration is the present business culture.
Some Key Challenges in Front of Agile Tester
Agile Testing leaves the tester some intriguing challenges to solve. No traditional style of business or detailed specification documents exist though much of the information is in the conversations from the meeting notes.
Early and continuous testing means codes are not always complete so results may not be what is expected. Acceptance tests cases become part of the requirements analysis process. The software is not fully developed, but the analysis is performed regardless. Every build has an automated unit test which has to be created by the development team.
Regression testing requirements have increased over traditional methods. There will not be test automation support despite the multiple codes. Consistency in regression coverage may suffer. Developing a wider variety of skills will help a test. Having domain knowledge about the system, understanding the technology, and having technical competency will lessen the challenges.
Testing discovers information. Information communicated to the developers becomes used to improve the product. The goal of testing products and services is for increasing the productivity of a company. Testing must transform into “engineering productivity” approaches.
At the heart of all the technology are people with dreams and ideas. Without them, none of the Internet would work. Good practices come about from software testing professionals’ desire to bridge gaps between business, technology, clients and consumers. With more Agile like hybrid methodologies, testing becomes a design criteria; a method to improve productivity and product.
A culture develops of constant continuous improvement in all business areas results. Solutions are found when all possibilities are considered.
Changing the world with technology has become such a normal occurrence that often it is forgotten what incredible rapid phenomena that is.
Software testing by Agile philosophy is a sign that a business and its professionals care to do their work through honest communication with integrity and ethics.