The Agile methodology or model develops clear visibility of accomplishing working features way ahead in the project’s life cycle, hence allows:
-Measurement of progress and quality
-Track the feedback and adaption during agile development
The benefit is such that the results are derived earlier than expected; risks are mitigated and thus allowing flexibility for change.
Agile Testing is a software testing practice which adapts and follows the agile methodology and considers the development as its customer for testing.
Agile Tester Skills
Agile tester plays major role in automation of agile software under development. Apart from testing skills, an agile tester must possess specific skills mandatory for performing his duties in the Agile test environment, such as:
- Have deep understanding of the domain, features, development process, design, delivery and deployment
- Must have skills to understand several stories or features at one time
- Knowledge on various license or freeware automation tools which suits the business requirement under development
Core Values that forms the Basis for Agile
The thumb rules that govern the agile testing at base level are:
Communication –Communication of Requirements among Developers and testers via quick and small team meetings
Simplicity – Providing simple solutions to things taken first and then move forward with enhancing the features
Feedback- Based on core insight knowledge of the customer, the feedbacks are taken from customer on frequent basis
Iterations- The system is broken down to smaller modules which are accomplished within iterations on which the customer has better control
Automation Test Strategy
Automating the Test in agile development is very critical decision as agile development is time and iteration based accomplishment which requires decision against specific questions like: When, how and how much to automate? Although Automation continues to follow its base-lined waterfall model but best practices are required to run it in Agile environment.
Initiate Automation First than Manual test?
There are always certain test cases or features which are never prone to defects hence can be directly automated. But before this, a quick level of adhoc / exploratory testing will satisfy the stability of the features hence decision will be taken early to automate them.
Progress Automation with Caution: what to automate- Black box(UI) or White Box?
Automation becomes prone to vulnerability if the importance and usability of the functionality is not identified. Because of frequent changes in the UI design, the idea of automating it could be tedious. Hence for minimal maintenance the white box testing or changes are less fragile and should be automated first with regular coordination with developers where the frequent changes of vulnerable UI can be handled later on.
Automation Start: Coverage based Automation
With effective development practices in place, the automation can generate good results. As the features are delivered under each iteration, the code coverage based automation focuses on building the step by step functional coverage to trace the functional areas which are still pending or remain uncovered. Possibility exists that with the help from developer and customer, tester can develop their own tool to meet the business requirements else if the suitable tool exists in the market which meets the business requirement demands then its wisely taken.
TDD- Development Reliability and Automation benefit
Test Driven Development is one of the initial reliable forms of unit testing practice used by developers which helps them develop production code through rapid iterations. Testers can also follow and create their automation tests in similar manner that it becomes the base for the source code development and hence the following actions can be taken care:
-Code designing at high or low level
-Writing automated unit test cases
-Executing the unit test cases to ensure that they fail
-Re-executing the unit test cases to make sure this time they pass
-Restructure or organize the production code so that it runs better
-Work in coordination with development team to chose right scenarios and implement the same for lower code maintenance and sustainability
TDD helps automation tester verify its own code to make it defect free, robust and reliable
Automation Code coverage review like Manual test cases
The way testers get their test cases reviewed from Developers or business analysts, similarly the Automation code coverage against the features developed in agile iterations also needs to be verified so that:
- Detect issues early
- Preventing the Defect(s) repeated history as the defects cycles are reduced
- It helps in reducing the development and test cycle
- Build strong product/feature knowledge for better stability and design
- Helps make the automation code reliable and robust
What should not be automated:
One time tasks and the exploratory test cases, which probably will never be executed, should not be automated for e.g., configuration and deployment action. Automation of such test cases generally does not get attention or paid off well.
With the above briefs, eventually its clear that automation test in agile environment is very much decision based activity which requires immediate attention towards: What to automate and what to not, which tool should be used, prioritizing the stable and unstable features, code review, communication and feedback. Not only this, I personally think that one of the major breakthrough would be, much improved customized frameworks as more and more coordination will exists between developers and testers to achieve each agile iterations and deliver low risk, high quality products.