1What makes QA a crucial part of software development?
Why not just skip it?

The main objective of QA testing is to verify the software being developed operates correctly in all circumstances.

QA seems to be the stepchild in software development: valuable, but frequently neglected, not given proper care and attention. QA is too often both underappreciated and undervalued; whereas, at IT Craft, we treat it as one of the most important parts of every project. It makes no difference whether it is mobile or web development, e-commerce store or e-learning system, manual or automation test: without proper attention to the QA process during each project flow, there are myriad risks to jeopardize its success.

The QA process helps:

– deliver the project on time

Fixing bugs reported during the earliest stages costs far less (requires less time than when end-users are already working with the software.)

– ensure quality software

Using load testing during the development flow during the early stages of software development gives the ability to define the bottlenecks in the system and reinvestigate the system’s architecture and even reconsider the technology stack that is used.

– ensure the security of the software

The probability of damaging your reputation is reduced by having a quality product, for example, avoiding having a vulnerability slip past a firewall to a live server and causing user data loss.

QA process

1How do bugs affect the app costs?

As mentioned above, the earlier the team finds a bug, the less it costs to fix: fewer people spend their time on it and it has less impact on code already checked in.

Requirements – only time to formulate it anew.

Coding – when a developer detects a bug, it is corrected immediately by the developer: one person’s time only.

Code integration – when part of the checked-in code or system configuration is buggy and does not work, it requires participation of several developers and an administration engineer to fix/debug it.

Testing – when most bugs are found is at the testing stage. It requires coordination between development team, QA team, project managers and administration engineers.

The QA team examines the software for defects. They document all steps for bug reproduction, prioritize bugs and then submit their findings to developers. After bug fixing, QA team re-tests software in order to verify improved source-code. Cost = ?X

The effort on this testing stage can be optimized when using automated testing. Here is also to note, that test automation not only helps cover more source code with tests but also avoid older bugs with regular regression testing.

After release – when a user detects a bug and contacts support, the costs at this stage escalate substantially. The bug is forwarded to QA engineers who try to reproduce it in order to describe the problem to the developers who, in turn, correct the bug. QA engineers notify the PM who notifies the customer to log the bug into their system and give it priority status. This is the most-consuming—and by far the most-costly—step as it requires considerable time and effort from several parties. Additionally, bug fixes might impact other parts of the software.

Cost of software bug

  • 100$If found in
    ‘Requirements phase’
  • 1,500$If found in
    ‘Testing phase’
  • 10,000$If found
    ‘After release’

1What is the general workflow used by our QA team on a project?

Test Planning and Control

– Identifying objectives for testing

– Scheduling test analysis and design activities

– Schedule test implementation, execution, and evaluation

– Define specification of test activities

– Assign resources for the different defined activities

– Define the amount, level of detail, structure, automation testing tools, and templates for test documentation

– Determine selection metrics for monitoring and controlling test preparation and execution, and defect resolution

– Compare actual progress against the planned one

Planning is documented in a test plan. It is a continuous activity and performed throughout the life cycle of the software.

Test Analysis and Design

– Reviewing test basis

– Evaluating testability of the test basis and test objects

– Identifying and prioritizing test conditions

– Designing and prioritizing high-level test cases

– Designing test environment setup and identifying required infrastructure and tools

Test Implementation and Execution

– Finalizing, implementing and prioritizing test cases

– Developing and prioritizing test procedures, creating test data and, optionally, writing automated test scripts

– Creating test suites

– Executing test procedures

– Logging outcome of test execution

– Comparing actual results with expected results

– Reporting discrepancies, if any, and analyzing them in order to establish their cause

– Conducting regression testing

Evaluating Exit Criteria and Reporting

– Checking test logs against exit criteria specified in the test planning

– Assessing if more tests are needed or if exit criteria should be changed

– Writing a test summary report

Test Closure Activities

– Checking which planned deliverables have been delivered

– Documenting system acceptance

– Finalizing and archiving testware, test environment, and test infrastructure

bugs affect the app cost

1What kind of testing do IT Craft teams apply for their QA workflow?

Although, no software is 100% bug free, most bugs can be eliminated when applying an Agile approach for development and QA-like acceptance criteria, test-driven development, and unit testing.

Unit Testing

Unit testing is a component (modular) testing functionality check for defects in parts of available software being developed and can be tested separately (program modules, objects, classes, functions, etc.).

System Testing

The main goal of system testing is to check both functional and non-functional requirements of the software being developed as a whole. This type of testing identifies defects such as incorrect use of system resources, unintended combinations of user-level data, incompatibility with the environment, unintended use cases, missing or incorrect functionality, UX usability, etc.

Release Testing

It is not only important to make sure that software being developed meets all technical requirements, it is also essential to ensure it meets users’ needs and fulfills its role in their specific operation environment. Therefore, it is important to conduct operational testing as the final validation step. In addition, the operating environment tests make it possible to reveal non-functional problems, such as conflict with other systems related to the business or in software and electronic environments.

Acceptance Testing

Formal testing process verifies compliance with system requirements and is aimed at determining whether the software being developed meets the acceptance criteria.

1What tools and Java libraries are used for QA testing (and for automation of testing, too)?

  • Selenide
  • Assertj
  • Rest-assured
  • Allure report
  • Fiddler
  • JMeter
  • Selenium IDE
  • Selenium Web Driver
  • WAPT
  • XENU
  • WebDeveloper toolbar
  • Tamper Chrome

Conclusion

QA is a complex approach aimed to ensure the software will run smoothly under specified (also, extreme) conditions. Although it might look expensive to spend part of the software budget on testing instead of other activities, e.g., development and release of new features, QA guarantees delivering a higher quality of software product, thus saving money and strengthening a company’s reputation.