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
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.