Skip to content

Commit

Permalink
Update documentation (#934)
Browse files Browse the repository at this point in the history
  • Loading branch information
omalyshe authored Oct 7, 2022
1 parent b2b28c5 commit 7673da2
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
1 change: 1 addition & 0 deletions doc/index/toctree.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
/main/intro/notation
/main/intro/intro_os
/main/intro/Benefits
/main/intro/testing_approach


.. toctree::
Expand Down
3 changes: 1 addition & 2 deletions doc/main/_templates/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@
var wapLocalCode = 'us-en'; // Dynamically set per localized site, see mapping table for values
var wapSection = "oneapi-tbb"; // WAP team will give you a unique section for your site
// Load TMS
if(document.location.href.contains("oneapi-src.github.io")){
(function () {
var url = 'https://www.intel.com/content/dam/www/global/wap/tms-loader.js'; // WAP file URL
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = url;
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
}
</script>
<link href="{{ pathto("_static/style.css", True) }}" rel="stylesheet" type="text/css">
{% endblock %}
31 changes: 31 additions & 0 deletions doc/main/intro/testing_approach.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
.. _testing_approach:

Testing Approach
================

You can face four main hazard types in the libraries for parallelism:

* Interface correspondence to specification
* Memory errors
* Data race
* Race conditions and deadlocks

|short_name| testing approach is designed to provide high coverage of these error types.
All types of errors are covered with unit testing and review.

Code coverage metrics are tracked to ensure high code coverage with tests. Uncovered branches are analyzed manually.
Memory errors and data races are additionally covered by special tools that include thread and memory sanitizers.

Race conditions and deadlocks are the most complicated errors.
They are covered by:

* **Unit tests** that, however, have limited capability to catch such errors
* **Integration tests**. Multiple different functionalities are heavily combined to emulate user use cases that may trigger such errors based on prior knowledge and expertise.
* **Stress testing with different possible combinations**. It ensures that even rarely triggered error conditions are caught by testing.

.. note:: Every fix is required to be covered by a test to guarantee the detection of such issues in the future.

Continuous Integration triggers all the tests on each commit. This ensures that:

* Issues are detected, starting from the early development phase and up to the moment of integration of changes into the library.
* The highest quality of the library even in such error-prone domains as parallelism.

0 comments on commit 7673da2

Please sign in to comment.