Agile testing is a software testing practice which emphasizes testing from the perspective of customers who will utilize the system. Agile testing does not rigidly follow the pre-defined testing procedures, but rather focuses on testing iteratively against newly developed code until quality is achieved from an end customer's perspective.
The Agile Software Development primarily focuses on an iterative method of development and delivery. The developers and end users communicate closely and the software is built. A working piece of software is delivered in a short span of time and based on the feedback more features and capabilities are added. The focus is on satisfying the customer by delivering working software quickly with minimum features and then improvising on it based on the feedback. The customer is thus closely involved in the Software Design and Development Process. The delivery timelines are short and the new code is built on the previous one. Despite this, high quality of the product cannot be comprised.
Almost all the other software development life cycles either follow a sequential model (eg waterfall model) or an iterative model. But for processes which are a little more complex these models find it difficult to tackle the changes which are large in number and continuous.
Agile model was basically made in order to counter these changes effectively and smoothly. This method is a collection of values, principles and practices that tests and provide the feedback to convert it into a new style of development.
Development life cycle:
The Testing Strategy and Approach in Agile Development could be very different from traditional bureaucratic methods. In fact it could vary with project needs and the project team. In many scenarios, it may make sense to not have a separate testing team.
The above statement should be understood carefully. By not having a testing team we do not consider testing to be any less important. In fact testing can done more effectively in short turn around times, by people who know the system and its objectives very well.
For example in certain teams Business Analysts could be doing a few rounds of testing each time the software version is released. Business Analysts understand the Business Requirements of the Software and test it to verify if it meets the requirements.
Developers may test the software. They tend to understand the system better and can verify the test results in a better way. Testing for AGILE Software Development requires innovative thinking and the right mix of people should be chosen for doing the testing.
Technically the agile methods implement a iterative and incremental development phase in the project. This me the developers have higher control over the design/code that is under development. This can be helpful in maintaining a confident mindset among the team members. Also the smaller units of development can bring in the much needed modularity in the product, making it more reusable than the traditional methods can offer.
Although nothing is typical about any Agile Development Project and each project may have its own set of complexities, by the very nature of the paradigm bugs may be introduced in the system when a piece of code is modified/enhanced/changed by one or more Developers.
Whenever a piece of code is changed it is possible that bugs have been introduced to it or previously working code is now broken. New bugs/defects can be introduced at every change or old bugs/defects may be reopened.
Agile testing is used to test the design in the early stages of SDLC life cycle. Rad is informal name given to agile.
Anytime applying agile testing methodology, the testers (developers) ensure that the whole process of testing (development) is broke into as small steps as possible and just a small unit of code is tested (developed) in each of this steps. The team of testers (developers) is communicating consistently the results of their work, and change the short term strategy and even the development plan on the go, based on the results of agile testing. Agile methodology encourages flexible and rapid response to change which should lead to a better end result.
The agile methods help in churning out workable code at every stage of development. So marketing of a product can be really effective as the updates to the software/product can come in handy in promotions. The Inspect and adapt approach that agile implements can help the product developers to change/add new functionalities over the previously developed layers. This adaptive approach again can help in keeping the product up-to-date in the market.
The adaptive nature of the development teams play a major role if we have to successfully implement a agile method of testing for the project.
While asking these sort of agile testing interview questions, employers try to recognize if you really understand the benefits of this methodology and can see a practical application of it in various areas of business. To state that this methodology can be, and maybe even should be, applied in all the instances and test cases where we have insufficient entry data, or work in an unknown area, or simply work within a small team, or where many unpredictable variables take place is a good wer. It is in fact used quite commonly in bio-medicine, biochemistry or physics. Anyway, it could be used in many other areas.
A specification defining requirements for portability of applications in binary forms across different system platforms and environments.
The agile methods of testing can be a very good way of developing a project which has to have a periodic deliverable and which has a very few members in the team with fixed resources. In such scenarios, the Agile methods can help to get the maximum efficiency and stability in the products under development. In such cases the requirements are not so varied and remain quite constant.
On the other hand, if we consider a very large organization which is developing a software or any other product which has lot of modules and lot of functional requirements (business logics) then agile methods may just prove to be a hurdle in the development of different modules. So it is not a good idea to adopt agile testing methods in large projects with a wider scope of operations.
When adopting agile methods for testing, we ensure that the tests are done over every simple and small unit of code that is being developed. This type of testing has lot of advantages in the management and technical aspects of the project. With greater control over the progress that is being made in the development and a demonstratable code at hand every time, the agile methods of testing can prove very useful. The requirements if complex, can be easily matched up at every stage of development by having agile methods of testing over units of code. This will avoid the possibilities of facing requirement conformance mismatches.