0% found this document useful (0 votes)
13 views3 pages

Essential Software Testing Strategies

The document outlines a comprehensive software testing philosophy emphasizing the importance of a well-defined test strategy and process in app development. It discusses key practices such as writing detailed test cases, creating CI/CD pipelines, and utilizing automation effectively to enhance testing efficiency and product quality. Additionally, it highlights the significance of analytics and monitoring tools in understanding user behavior and improving testing outcomes.

Uploaded by

Sumayya Rani
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views3 pages

Essential Software Testing Strategies

The document outlines a comprehensive software testing philosophy emphasizing the importance of a well-defined test strategy and process in app development. It discusses key practices such as writing detailed test cases, creating CI/CD pipelines, and utilizing automation effectively to enhance testing efficiency and product quality. Additionally, it highlights the significance of analytics and monitoring tools in understanding user behavior and improving testing outcomes.

Uploaded by

Sumayya Rani
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Software Testing Philosophy

App development and release are different from any desktop and web development
in all aspects of software development phases.
While starting any project need to ensure the following things which I have learned
while working on different projects.

1. Create Test Strategy / Test Plan


Test strategy is the most important part of the test lifecycle. Generally, we think
without this also we can do our testing, so the answer is yes but it will in an ad-hoc
manner there will be chances to release a product with issues.
So now questions arise that how and what to write in the Test Strategy document.
sometimes it's very confusing whether we need to write a Test Plan or Test strategy
documents. so the answer is it's up to you and what your project demands? but let
me give you some clues.
If Project is large and a different team is working on components like UI and UX,
different microservices, Databases and so on.
For such type of project, we can create a Master Test Plan which will include details
about the project, about the different components, team details, infrastructure
details including tools and technologies, release plan, Define Development Process,
Test summary report, release notes, risk analysis, and mitigation and so on…
Now we can create a Test strategy for each service/component that how are we
going to test this component which may have UI, a microservices both.
While creating a Test Strategy, we should not focus on a format that is available on
different available sites. Each and every project is different from each other,
business requirement is different, technology is different, we can not use the same
testing approach for all projects. So better approach is to understand your project in
detail, list down what at all type of testing is required and how are we going to test it
and just list down all types of testing, list down the owners, Test coverage, let
individual people be accountable for different stages of testing.
Involve high-level management into your test plan /Test Strategy and let them
review and incorporate if have any feedback from them. Ultimately a better Test
strategy and execution-only can ensure a better quality product that can sustain in
the market.

2. Writing Test Cases


Most of the time we think writing manual test cases are boring and a waste of time.
But guys honestly telling you it takes some time but it's helping you more.
 Help us to understand the requirement.
 Can track testing based on execution results.
 Lable your test cases based on “Smoke”, “Regression” and “Sanity”.
 Never perform ad-hoc based testing, mostly Alpha, Beta or any Verification
testing which verify the product build, always create a test suite based on the
label and execute test cases one by one. If a test is automated, run it once and
produce the result. because due to ad-hoc testing we miss major scenarios or we
assume that it will work.

3. Defining Process & Execution
Each and every task require some planning and execution with proper tracking and
regular feedback. So before starting any project we need some defined process like
the current trend is following the Scrum framework.
 Use any tool like JIRA/ Favro for User Story Backlog.
 Create Sprint Board.
 Define each User Story in detail with acceptance criteria.
 Do estimation for each User Story/Task to track our work.
 Estimation does not give a guarantee to complete any task in a given time. It just
helps management to make a decision and do further planning.
 Plan for BugBash during major releases or releasing any critical features. It
helps a lot get more issues and stabilize the product. Involve dev, other teams
QA, Alpha Tester, Managers, Business Analyst and business people who give us
requirement.

4. Resolve bottleneck
Before starting any project need to identify bottleneck and challenges and resolve it
ASAP. Challenges could be technical, access permission, S/W & H/W, Human
resources.
 Escalating challenges to higher authority let them aware of what risk is involved.
 Track challenges using a sheet and mark resolve based on the outcome.

5. Create CI/CD Pipelines
Continuous Integration and Continuous delivery help the product to reach the
market fast. Developers merge their code from feature into dev branch which
triggers CI pipeline to run unit and integration test ensure the build is ready to test.
We can automate the complete process after running the Unit/Integration test. We
can run further if we have any API/Service test the next E2E UI test cases which will
ensure complete testing on staging/Test environment.
Further, we can perform manual testing on staging and merge into the master
branch and deploy changes on a pre-production environment where alpha /Beta
tester can do manual/use automation script to re-verify. We can not ignore manual
testing even though we have very stable and robust automation scripts that have
more coverage.

6. Pair Testing
We can try pair testing with developers for complex and more technical scenarios
where the dev has to give you more time to understand scenarios and the technology
side. In such a situation both can sit together and do testing, if found any bugs
during testing developer will fix them instantly, merge and deploy code. Again we
can resume testing together. But this approach is not required for straightforward
scenarios.

7. Create Automation
Automation saves repetitive tasks which we do on daily basis by any QA. Automation
gives early feedback to developers, reducing the release cycle gives better ROI.
We should automate test cases very wisely, never do automation just to sake that we
should have automation in the project. based on my thoughts we should consider a
few below steps.
 Automation test execution should save >80 % time compared to manual
execution.
 Don’t automate scenarios that required manual intervention or additional setup
required for each test case.
 Avoid automating cosmetic types of UI scenarios.
 Automate all the possible functional test cases include positive and negative
scenarios.
 Lable automated test cases like “Regression”,” Smoke” .
 Group them based on feature so we can filter tests based on feature and run on
demand.
 Add E2E scenarios, instead of piece by piece scenarios. Its unnecessary increase
no of test cases and its execution time.

8. Watch your analytics and monitoring Tools, Obsessively
Use logging and monitoring tools like Barito/Kibana to see logs for our services or
portal its help to find issue easily.

Clevertap tools help to find analyse users’ data and its behaviour. its help in the
following way.
 Give analytics about devices which is being used by Users to access there are
apps.
 Help in Automation to figure what type of devices should be procured.
 Helps business people to predict which feature is being used most and which are
least.
One more tool is called Litmus which is being used to control app/application
behaviour.
We can segment a group of users to see a particular feature of app behaviour. Means
launching for a group of people and getting feedback instead of launching RTM(for
the whole market). Even we can set feature toggle to turn on/off for users.

Lessons Learned
 Never make assumptions in testing even in your life and relationship as well,
always get confirmed
 Use Simulator but verify once in devices (App can be crashed on the device only
and that also can be on a specific device)
 Never do any testing on an ad-hoc basis, can go ad-hoc basis in case of bug bash.
 Do Testing in Iteration, means spending time and completing one full round of
testing, giving pause then again coming back after a few hours or the next day
then again performing one full round of testing. This time gap gives us time to
think in a new direction, thoughts process. If we continuously work for an hour
our minds get tired and think in a limited direction it's not able to do any out of
box thinking. so give a pause!
 Never hesitate to report issues, definitely re-verify twice
 Always do negative testing, some of the examples like stopping the third party
services and checking how the system behaves. Stop dependent services,
databases, messaging services and check the system behaviour.
 For Mobile apps, always test on small/big and low/high-resolution devices. You
can catch a lot of bugs. We can not buy all devices so at least buy low /high and
for the middle one can use a simulator but in the case of Android buy low/high
for the major android manufacturers in the market.
 We can get more bugs just comparing the same feature in the Android /iOS, the
reason behind people being different who have developed apps for this platform.
Chances are there that they did not capture requirements clearly or they have
implemented something different. Better Ask QA team to do an internal bug bash
on different devices for just 1 hour

Common questions

Powered by AI

Pair Testing enhances the testing process by combining the perspectives of developers and testers. It is particularly useful for complicated, technical scenarios where understanding is crucial from both a development and testing viewpoint. This collaborative approach not only speeds up issue detection but also ensures that any bugs found can be quickly addressed by the developer present. This synergy reduces delays in troubleshooting and enhances overall software quality .

Iterative testing, which involves testing in rounds with deliberate breaks, aids in discovering additional issues by allowing test teams to approach the testing process with fresh perspectives. The breaks prevent cognitive fatigue and enable testers to develop new insights or catch errors that might have been overlooked during uninterrupted sessions. This iterative approach enhances out-of-the-box thinking and thorough exploration of potential problem areas .

Testing mobile applications on various devices is crucial because it helps identify issues related to device-specific characteristics such as resolution, screen size, and hardware differences. Different devices from various manufacturers may present unique behaviors due to diverse designs and implementations. Testing on a range of low to high-resolution devices ensures compatibility and functionality across different user environments, reducing device-specific bugs .

A Test Strategy document for a large project should include details about the project, different components, and team information. Additionally, it should cover infrastructure details including tools and technologies, a release plan, and the development process. Moreover, the document should have a test summary report, release notes, risk analysis, and mitigation plans. For each specific service or component, it should outline how testing will be conducted, focusing on the unique aspects of the service, such as UI or microservices .

Creating detailed manual test cases is important because they help understand the project requirements thoroughly and allow tracking of testing progress based on execution results. Manual test cases also ensure more comprehensive testing coverage, preventing major scenarios from being overlooked due to assumptions typically made in ad-hoc testing practices .

Analytics and monitoring tools like Barito/Kibana provide significant insights into software services by allowing easy issue identification through logging. Such tools also facilitate automation strategies by indicating the types of devices that should be used in testing, based on user data analysis. Additionally, they help business people predict the popularity of specific features, aiding in strategic planning and market segmentation .

Regular negative testing significantly enhances the quality assurance process by simulating potential real-world failures. This involves intentionally stopping third-party services or databases to assess system robustness and behavior under failure conditions. Conducting such tests enables teams to identify potential vulnerabilities and robustness issues, leading to more resilient software designs and implementations .

Ad-hoc testing can lead to missed testing scenarios and assumptions about functionality that might result in undiscovered issues. These potential drawbacks can be mitigated by structured testing approaches such as developing test plans, executing predefined test suites, and labeling test cases by categories like "Smoke," "Regression," or "Sanity." This approach helps ensure comprehensive coverage and tracking of test progress and outcomes .

Continuous Integration (CI) and Continuous Delivery (CD) pipelines facilitate rapid development and deployment by automatically running unit and integration tests upon code merging. They speed up the release cycle by ensuring builds are ready for manual and automated tests without delays. The benefits include early bug detection, reduced manual intervention in testing phases, and the ability to push stable over-the-air updates quickly, supporting faster time-to-market .

Effective test automation involves selecting test cases that save over 80% of the time compared to manual testing. Automation should target functional scenarios that can run independently without requiring manual interventions. It is advised to avoid automating cosmetic UI tests or those requiring complex setups. Instead, focus should be on automating comprehensive end-to-end (E2E) scenarios for regression and key functional paths. Tests should be labeled and organized by feature to enable efficient on-demand execution .

You might also like