2. | What is Quality assurance|
Quality assurance (QA) is any systematic process of determining
whether a product or service meets specified requirements.
QA establishes and maintains set requirements for developing or
manufacturing reliable products. A quality assurance system is meant
to increase customer confidence and a company's credibility, while also
improving work processes and efficiency, and it enables a company to
better compete with others.
3. Why we need QA?
To eliminate the bugs, we need the process of QA.
If bugs are not eliminated in the initial phase then it could cost even a
billion.
Let me explain you with some most expensive software errors in history.
4. Most expensive software errors in history -
1. The Mariner 1 Spacecraft, 1962
The first entry in our rundown goes right back to the sixties.
Before the summer of love or the invention of the lava lamp, NASA launched a data-
to fly past Venus. It did not go to plan.
The Mariner 1 space probe barely made it out of Cape Canaveral before the rocket veered
Worried that the rocket was heading towards a crash-landing on earth, NASA engineers
and the craft was obliterated about 290 seconds after launch.
An investigation revealed the cause to be a very simple software error. A hyphen was
meant that incorrect guidance signals were sent to the spacecraft. The overall cost of the
be more than $18 million at the time (about $169 million in today’s world).
5. 2. Bitcoin Hack, Mt. Gox, 2011
Mt. Gox was the biggest bitcoin exchange in the world in the 2010s, until they were hit by
proved fatal.
The glitch led to the exchange creating transactions that could never be fully redeemed,
bitcoins.
But Mt. Gox’s woes didn’t end there. In 2014, they lost more than 850,000 bitcoins
the time) in a hacking incident. Around 200,000 bitcoins were recovered, but the financial
the exchange ended up declaring bankruptcy.
6. 3. EDS Child Support System, 2004
Back in 2004, the UK government introduced a new and complex system to manage the
Agency (CSA). The contract was awarded to IT services company Electronic Data Systems
CS2, and there were problems as soon as it went live.
A leaked internal memo at the time revealed that the system was “badly designed, badly
The agency reported that CS2 “had over 1,000 reported problems, of which 400 had no
“around 3,000 IT incidents a week”. The system was budgeted to cost around £450 million,
estimated £768 million altogether. EDS, a Texas-based contractor, also announced a $153
financial results.
To look through similar mistakes, Please visit - https://raygun.com/blog/costly-software-
7.
8.
9. To eliminate these bugs, companies have implemented several checks in testing so that client doesn’t suffers at all.
Today’s software industry is emphasizing on QA.
Let us go through some best QA practices that today’s companies are implementing –
1. Maintaining a Dedicated Software Security Testing Team
First and foremost, organizations that have the resources should maintain a dedicated software security
testing team committed to performing the range of penetration tests necessary to fortify the software in
order to discover potential vulnerabilities.
Preferably, they should be familiar with relevant OWASP critical security risks profiles and ISO security
standards, not to mention undergo regular, rigorous security training.
2. Use Development Practices That Are Test-Oriented
It is self-defeating and grossly inadequate to wait until the QA stage to test software under development.
Rather, testing should be ingrained from the beginning of the development process, using test-oriented
development practices such as Test-drive Development (TDD), pair-programing, and unit-testing.
10. a. Test-Drive Development (TDD)
This practice adopts a test-first approach whereby test are written before the actual code for the software being
implemented. A new feature starts with an automated test case that will initially fail.
Subsequently, the code is written to ensure the functionality passes the test. TDD is known to have positive effects
on productivity, code quality, simplification, and executable documentation.
b. Pair Programming
When it comes to testing scrutiny, two heads are better than one. This is a form of extreme programming where
two engineers are paired to work collaboratively on a single computer. At any point, one writes the code while
other makes suggestions.
3. Ensure All Tests Are Integrated in CI/CD Pipeline
The era of the DevOps methodology has arrived, and any software testing team worth its salt needs to have an
automated CI/CD pipeline. Besides, manual QA processes are error prone. Therefore, it doesn't make sense to
neglect a crucial aspect of modern quality assurance testing.
Employing testing automation as part of the CD/CI setup is essential to make certain only bug-free code is
deployed into the production system.
11. With the use of modern
techniques, frequency of bugs
can be reduced to a greater
extent at an initial phase.
12. 4.Adopt Tests Written for Maximum Coverage code testing
Different types of testing are adopted by QA teams for different scenarios. However, the overarching objective
should be to make sure that the tests are written extend to the maximum coverage possible, if 100% isn't
exactly practical.
To make the products requirements are testable, test cases should be designed to cover them also for
adequate analysis.
5. Understand Product Objectives in Order to Design Effective Test Strategies
To be able to interrogate and test a system effectively, testers must understand the product from a business
standpoint, and not only see it from a technical perspective.
When testers are armed with only the knowledge of the scope of their tests, they usually can't see the forest for
the trees. To successful test software, it isn't enough to have a narrow mindset fixated on technical functionality.
13. In order to improvise the testing process companies are using some testing frameworks, these
frameworks provide better testing approach as well as enhanced efficiency.
They are listed below –
1. BDD (Behavior-Driven Development)
Behaviour-driven development is an approach to development that improves communicationbetween business andtechnical teams to create
software with business value.
“BDD isaprocess designed toaidthemanagementandthedeliveryofsoftware developmentprojects byimprovingcommunication between
engineersandbusiness professionals. Insodoing,BDD ensuresalldevelopment projectsremainfocused ondeliveringwhatthe business actually
needswhilemeetingallrequirementsof theuser.”
Key benefits of BDD
• All development workcan be traced back directly to business objectives.
• Software development meets user need. Satisfied users = good business.
• Efficient prioritization – business-critical features are delivered first.
• All parties havea sharedunderstanding of the project and can be involved in the communication.
14. 2. TDD (Test-Driven development)
This has already been discussed in best practices.
3. Acceptance Test-Driven Development (ATDD)
Unlike TDD, which is generally thought of as an engineering practice, ATDD is a
team effort: it brings different players in the software development process—
testers, engineers, business stakeholders—together to collaborate. The result of
said collaboration are the requirements for the application, expressed in a format
understandable by everyone, which are then turned into automated acceptance tests.
Acceptance test-driven development has a similar workflow to that of TDD, since it
consists of creating tests before writing the production code. Unlike TDD, which
relies on unit tests, ATDD tests are acceptance tests. The tests are born from
specifications that arise from discussions involving developers, testers and
business stakeholders or clients.
15.
16. Conclusion -
To deliver a seamless project to the client, QA is a mandate. Its quite complex and
expensive to fix the issues on production environment as compared to dev environment.
As of current scenario, we are moving towards digitalization that includes websites,
mobile applications etc. and these apps are necessary for the growth of any organization.
So, delivering a bugless application is the most elementary aspect of client satisfaction
and retention.
In broader terms, a bug can hamper you economically.
*****