/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\page testing-and-debugging.html
\title Testing and Debugging
\brief Writing unit tests and debugging with Qt

Qt provides various functionality to help you develop high quality code. There
are features that assist in debugging to track down bugs, and testing facilities
that help to keep the bugs out.

\section1 Unit Testing

Qt facilitates the creation of unit tests to test interfaces such as classes,
functions, or whole libraries.

\list
\li \l {Qt Test Overview}{Qt Test} (also known as \e testlib) - a framework for unit tests of C++ code
\li \l {Qt Quick Test} - a framework for unit tests of QML code
\endlist

\section2 Autotests

Qt itself has a significant number of unit tests written with the Qt Test and Qt
Quick Test frameworks (\e autotests). These autotests are available for study in
the \c tests/auto directories of the source code of each Qt module. The
autotests are an important part of the continuous quality assurance in the
development of Qt.

\section1 Testing with Qt Creator

Qt Creator's full debugging workflow supports debugging both C++ and QML code
as well as the ability to profile code.

For more information, consult the \l{Qt Creator Manual}:
\list
\li \l{Qt Creator: Debugging}{Debugging}
\li \l{Qt Creator: Analyzing Code}{Analyzing Code}
\endlist

\section1 Debugging Techniques

These pages contain suggestions for debugging under various circumstances:
\list
\li \l {Debugging Techniques} - for C++ code
\li \l {Debugging QML Applications}
\li \l {Debugging Plugins}
\endlist
*/
