Saturday, June 30, 2018

Agile Testing


How does testing happen in Agile environment?

James Lyndsay in his white paper in workroom-productions.com explained the process of testing on Agile Projects.
There are many agile methodologies used in testing, however, they are not unique and original. The effectiveness of a methodology does not depend on individual elements but depends on a combination of elements that are combined into a framework.

Automated testing is at the heart of agility

Automated testing is fundamental in agile testing and without them; the project cannot be called agile. Thus, the popular tests on an agile platform are automated. This type of testing focuses on automated verification to enable agile software development.

Comprehensive testing, but not by testers: Coders and not testers write for Automated Unit Tests. In Test Driven Development, once the test is written, they are executed so as they fail as a control. Then they are executed once again after coding to demonstrate that the previously failing tests now passes. Though slow, it generates accurate results.

Refactoring: With an aim to improve system flexibility, the system is re-structured without any changes to its functions. These changes should not be visible to testers, just to confirm that the system works as before.

Continuous Integration: Codes are being built regularly either hourly or daily. It continuously implements quality control processes to ensure quality software. This in turn saves the delivery time of software as opposed to traditional testing where testing is done when the product is developed.

Why do organisations prefer Agile methodology over Waterfall or any other methodologies? 

Transparency Get an opportunity for client throughout the project and see work in progress by adding new changes.
Early and predictable delivery
Predictable cost and schedule
Allow changes for in an each iteration
Focusing on client business value and deliver product with an importance to business

What are the key benefits for a team that follows Agile methodology

Stakeholder Engagement
Agile provides multiple opportunities for stakeholder and team engagement – before, during, and after each Sprint. By involving the client in every step of the project, there is a high degree of collaboration between the client and project team, providing more opportunities for the team to truly understand the client’s vision. Delivering working software early and frequently increases stakeholders’ trust in the team’s ability to deliver high-quality working software and encourages them to be more deeply engaged in the project.

Transparency
An Agile approach provides a unique opportunity for clients to be involved throughout the project, from prioritizing features to iteration planning and review sessions to frequent software builds containing new features. However, this also requires clients to understand that they are seeing a work in progress in exchange for this added benefit of transparency.

Early and Predictable Delivery
By using time-boxed, fixed schedule Sprints of 1-4 weeks, new features are delivered quickly and frequently, with a high level of predictability. This also provides the opportunity to release or beta test the software earlier than planned if there is sufficient business value.

Predictable Costs and Schedule
Because each Sprint is a fixed duration, the cost is predictable and limited to the amount of work that can be performed by the team in the fixed-schedule time box. Combined with the estimates provided to the client prior to each Sprint, the client can more readily understand the approximate cost of each feature, which improves decision making about the priority of features and the need for additional iterations.

Allows for Change
While the team needs to stay focused on delivering an agreed-to subset of the product’s features during each iteration, there is an opportunity to constantly refine and reprioritize the overall product backlog. New or changed backlog items can be planned for the next iteration, providing the opportunity to introduce changes within a few weeks.

Focuses on Business Value
By allowing the client to determine the priority of features, the team understands what’s most important to the client’s business, and can deliver the features that provide the most business value.

Focuses on Users
Agile commonly uses user stories with business-focused acceptance criteria to define product features. By focusing features on the needs of real users, each feature incrementally delivers value, not just an IT component. This also provides the opportunity to beta test software after each Sprint, gaining valuable feedback early in the project and providing the ability to make changes as needed.

Improves Quality
By breaking down the project into manageable units, the project team can focus on high-quality development, testing, and collaboration. Also, by producing frequent builds and conducting testing and reviews during each iteration, quality is improved by finding and fixing defects quickly and identifying expectation mismatches early.

Why do organisations need a separate testing team and what are the key roles for a tester?

It is very difficult for a developer to find out the defects in their own product so crack the errors or loop holes in the software, It is crucial to have independent  testing team . Imagine, a developer never want to break is own system. He will test his system in safe way. He will not  test application from end user perspective. So its quite possible there may be some severe defects available in software. Dedicated testing team takes the role of real user and try to break the system from different viewpoints. This is the main reason organizations need dedicated software testing team.

Testers plays vital role in software development process. These are the roles and responsibilities  testers can perform :-

Testers can contribute to test planning, test design , requirement  Analysis and design specifications.
Identify and prepare test conditions , test cases and test data.
Review test cases and test data.
Test execution  and defect logs.
Creating reports and defect management.

What is release note?
Release notes are communication documents shared with customers and clients of an organization detailing the changes or enhancement made to the features of service or product the company provides. Thus this communication document is usually circulated only after the product or service is thoroughly tested and approved against the specification provided by the development team.


When do you do impact analysis and how does it help improve the quality of software developed?
According to ISTQB, impact analysis is an estimation of consequences a change has on all levels of testing and development documentation, including registering them in corresponding requests. This definition draws our attention to a more practical side of impact analysis - changes should always be documented.

By understanding what impact analysis really is, we can now understand when it should be used. Impact analysis should be employed in the following situations:

Changes are introduced to requirements
Request for product changes is submitted
New, planned functionality introduced
Existing modules and product features are changed

 Impact analysis helps us in the following way:

How the changes will affect existing modules and features, and what those affected modules are.
Determine new test cases required for testing new modules or features.
Examine how the testing process will be affected by the changes and whether existing process should be corrected.
Determine, what effect these changes will have on the budget


Can you list few common challenges faced by software testers in general?

There are many issues that testers have to deal with. Listed a few here:

1. Subject awareness: A major challenge in the domain of testing in general is the lack of skilled testers. Software testing can only achieve its intended purpose when testers are aware of their customer’s business. In order to understand this, one must have good knowledge of Customer’s business domain.  Poor domain knowledge of testers can end up in ineffective Test Scenarios, test scripts and post implementation defects.

2. Time:  Time has always been a limiting factor for Software testers and is challenging especially when it comes to execution of Regression tests.  During testing phase, testers are asked to perform multiple rounds of Regression tests and the time taken for these regression test cases could range from 100s to 1000s depending on the size of the application.  The best way to finish within the deadline and manage several rounds of regression testing is by automating regression tests that are not subject to direct change as part of the current release.

3. Test Estimation: There are many established Test Estimation methods.  Deriving accurate test estimates is a vital factor for successful Software Testing Phase.  Good Test Estimates will include an estimate time for all the activities performed during Software Test Life Cycle irrespective of the size of the task.

4. Test Data setup: Test Data setup will be more difficult when data setup deals with mainframe or multiple applications or databases. Test Data creation for Load or performance testing would involve writing scripts or SQL Procedures.

5. Setting up Test environment: In most of the bigger organizations, Test environment setup is done by Operations / Technical support team.  However in smaller or midsized companies, Test environment setup could seem extremely difficult.  Environment setup is one the tasks that necessitates knowledge of various software and testers find it most challenging.

6. Unavailability of the best Tools:  Project budget availability and funding affects availability of right tools.  Usage of right tools can aid testers in cutting short the time required to perform their tasks.

7. Team at different locations:  If Business Analysts and development teams are located in locations other than the time zone of testing team, the testers might have to extend their working hours to get clarifications or attend meetings.  Difference in time zone could result in longer wait time and general delays.


What is Risk Based Testing?
Risk based testing is prioritizing the feature's, modules and functions of the Application under Test based on impact and likelihood of failures. It involves assessing the risk based on the complexity, business criticality, usage frequency, visible areas, Defect prone areas, etc.


How to overcome the challenge of not having input documentation for testing?
Without having documented requirements will be a challenge for the testing team to test the software. But there are cases were the documented software requirement is too little or not clear. In those cases, we can test the system with our knowledge on the domain. Also we can approach the Customer or Business analyst to know the functionality and later we can document our understanding get it verified by the BA/customer and continue with the testing and these are few ways we can overcome the challenge of not having documented input requirements.


How do you plan your test case execution?
First and foremost make the understanding clear of what to be tested and document your understanding. Testing team should give their input to the test manager in the effort required for testing the software. Once the test plan prepared, reviewed and approved the testing team should come out with the detailed test condition and test cases for the software to be tested. Then start executing the test cases by giving high priority to defect prone or critical functionality.

No comments:

Post a Comment