## 4.2.7  Assuring Quality of ABAP Code
This is an overview of ABAP quality tools that help you to keep your custom code clean and performant.
The two most important quality tools for your custom ABAP code are:
- ABAP Unit for dynamic tests
- ABAP Test Cockpit (ATC) for static code analysis
## ABAP Unit
Writing ABAP Unit tests is the way to provide high-quality software, which can be easily evolved over time without introducing regressions. In methodologies, like extreme programming and test-driven development, the role of unit testing is even more important.
ABAP unit is the state-of-the-art unit testing framework for ABAP . It's embedded into the ABAP programming language, which supports you in writing unit tests. In the ABAP Development Tools for Eclipse (ADT), you have various possibilities to execute the unit tests and to evaluate the results concerning functional correctness and code coverage.
We recommend measuring the test coverage of all objects in a transport before releasing the transport. A high coverage (above 80%, for example) and a wide variety of test methods help to identify issues and make the code more robust.
For more information, see Unit Testing with ABAP Unit.
## ABAP Test Cockpit (ATC)
ATC is the tool of choice for all kinds of static code analysis in ABAP . As an ABAP developer, you can use ATC in the ABAP Development Tools for Eclipse to find potential bugs already during the development phase.
In particular, you can check ABAP development objects for many types of problems, including syntax errors, potential problems in performance, suboptimal or potentially faulty programming, adherence to standards, errors in ABAP Unit testing, among others.
For more information, see Checking Quality of ABAP Code with ATC.
## ATC Check Variant
The basic configuration of the ATC is the so-called ATC check variant, which includes the set of checks that should be executed. The default variant is set to ABAP\_CLOUD\_DEVELOPMENT\_DEFAULT. It includes all recommended checks to fulfill the ABAP cloud code quality standard incl. the execution of ABAP Unit tests.
You can create a copy of this variant and add additional checks. You can also add custom created checks to your variant.
For more information, see Working with ATC Checks.
## Transports
The basic quality gate is the release of transport tasks and transport requests.
For findings with priority level 1 and 2, the release of tasks and requests is blocked by the system in the default setting. For findings with priority level 3, the developer only gets a notification. This default setting can be individually sharpened based on your needs.
For more information, see Working with ATC During Transport Release.
## Test Runs
You can either set up scheduled automated test runs for the ATC, or trigger it manually via ADT.
For more information, see Working with ATC During Development.
## ATC Exemptions
Sometimes ATC findings can't be corrected. For example, it's possible that a correction is planned for an upcoming development cycle or only a test program is affected. It could also happen, that checks return false positives.
In this case, you can still process the issue by requesting an exemption. Once approved, it masks an ATC error or warning message. The finding then isn't displayed as an open issue in the ATC results anymore.
In the ABAP environment, exemptions are transportable objects of the type CHKE. The full workflow for the request and approval of exemption is integrated in ADT.
For more information, see: Working with ATC Exemptions.
## ABAP Test Cockpit Configurator App
You can use the ATC Configuration app to set up the default variant. You can also change the priorities of check messages, set priority levels that block or interrupt transport releases, and set the handling of pseudo comments and pragmas.
For more information, see ABAP Test Cockpit Configurator.