<html>
<head>
    <base href="https://wiki.asterisk.org/wiki">
            <link rel="stylesheet" href="/wiki/s/en/2171/18/9/_/styles/combined.css?spaceKey=AST&amp;forWysiwyg=true" type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+Test+Suite+Documentation">Asterisk Test Suite Documentation</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://wiki.asterisk.org/wiki/display/~mjordan">Matt Jordan</a>
    </h4>
        <br/>
                         <h4>Changes (2)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">Hello world <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h1. Asterisk Testing <br> <br>Testing of Asterisk takes primarily three forms: <br>* Unit testing through the Asterisk Unit Test Framework <br>* Functional testing through the Asterisk Test Suite <br>* Formally defined system tests <br> <br>The Asterisk Unit Test framework exercises individual units within Asterisk in a &#39;white-box&#39;, &#39;bottom-up&#39; approach, verifying that an individual unit maintains its interface contract with the rest of the codebase.  The Asterisk Test Suite operates at the next higher level by exercising the functionality of entire modules within Asterisk and how they interact with the core of Asterisk.  This is typically more of a &#39;black-box&#39;, &#39;top-down&#39; approach, although since the typical writer of tests within the Asterisk Test Suite are developers, some knowledge of the modules under test typically occurs.  Both of these tests are automated, and are executed on a frequent basis.  Contrasting both of these approaches are System tests, which are typically manual and exercise the interaction of many modules in Asterisk together.  System tests often occur in conjunction with initial releases of major branches and on a less frequent, periodic basis.  The diagram below illustrates where each of these forms of testing fall within the larger context of a testing philosophy. <br> <br>{gliffy:name=Test Philosophy|version=3} <br> <br>Combined, the Asterisk Unit Test Framework and the Asterisk Test Suite allow the Asterisk development team to perform continuous integration, wherein changes are continually merged into the various supported branches and verified to not introduce major regressions.  The unit tests and integration tests performed by these two frameworks guarantee that a basic level of functionality is not broken at any time by the introduction of a new feature or the fixing of a bug.  Note that this does not mean that regressions do not occur between Asterisk versions, but that the risk associated with each check-in is reduced, and, as new tests are added, further minimized. <br> <br>The Asterisk development team uses [Atlassian Bamboo|http://bamboo.asterisk.org/] to perform the continuous integration tests. <br> <br>h1. The Asterisk Test Suite <br> <br>The Asterisk Test Suite is an open source project that manages functional testing of Asterisk.  It orchestrates instances of Asterisk along with various third party protocol injection applications, allowing a developer to write tests that exercise a wide variety of the functionality within Asterisk. &amp;nbsp;While the Asterisk Test Suite is language agnostic, a set of libraries have been developed in Python and Lua to aid in test development. &amp;nbsp;Currently, the Python libraries receive the majority of development attention, and most tests are written in Python. <br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h1><a name="AsteriskTestSuiteDocumentation-AsteriskTesting"></a>Asterisk Testing</h1>

<p>Testing of Asterisk takes primarily three forms:</p>
<ul>
        <li>Unit testing through the Asterisk Unit Test Framework</li>
        <li>Functional testing through the Asterisk Test Suite</li>
        <li>Formally defined system tests</li>
</ul>


<p>The Asterisk Unit Test framework exercises individual units within Asterisk in a 'white-box', 'bottom-up' approach, verifying that an individual unit maintains its interface contract with the rest of the codebase.  The Asterisk Test Suite operates at the next higher level by exercising the functionality of entire modules within Asterisk and how they interact with the core of Asterisk.  This is typically more of a 'black-box', 'top-down' approach, although since the typical writer of tests within the Asterisk Test Suite are developers, some knowledge of the modules under test typically occurs.  Both of these tests are automated, and are executed on a frequent basis.  Contrasting both of these approaches are System tests, which are typically manual and exercise the interaction of many modules in Asterisk together.  System tests often occur in conjunction with initial releases of major branches and on a less frequent, periodic basis.  The diagram below illustrates where each of these forms of testing fall within the larger context of a testing philosophy.</p>


<table style="background-color: #2C8FCF;  height: 38px">
    <tr>
        <td style="vertical-align: middle; padding-top: 0px; padding-bottom: 0px;">
            <div style="padding: 3px"><img
                    src="https://wiki.asterisk.org/wiki/download/resources/com.gliffy.integration.confluence:gliffy-macro-key/resources/icons/gliffylogo32x32.PNG"/>
            </div>
        </td>
        <td style="border-right: 2px solid white; padding:3px">
            <span style="font-size:120%; font-weight: bold; color: white">Gliffy Macro Error</span>
        </td>
        <td style="padding: 3px;">
            <span style="color:white;">
                Cannot find a diagram with these parameters: <br>
                <strong>name:</strong> Test Philosophy <br>
                 <strong>version:</strong> 3 <br>                                                             </span>

                        <hr/>
            <span style="font-weight: bold; ">
                <a href="https://wiki.asterisk.org/wiki/plugins/gliffy/adddiagram.action?name=Test Philosophy&ceoid=17793142&key=AST&pageId=17793142">Create Diagram</a>
            </span>
                    </td>
    </tr>
</table>


<p>Combined, the Asterisk Unit Test Framework and the Asterisk Test Suite allow the Asterisk development team to perform continuous integration, wherein changes are continually merged into the various supported branches and verified to not introduce major regressions.  The unit tests and integration tests performed by these two frameworks guarantee that a basic level of functionality is not broken at any time by the introduction of a new feature or the fixing of a bug.  Note that this does not mean that regressions do not occur between Asterisk versions, but that the risk associated with each check-in is reduced, and, as new tests are added, further minimized.</p>

<p>The Asterisk development team uses <a href="http://bamboo.asterisk.org/" class="external-link" rel="nofollow">Atlassian Bamboo</a> to perform the continuous integration tests.</p>

<h1><a name="AsteriskTestSuiteDocumentation-TheAsteriskTestSuite"></a>The Asterisk Test Suite</h1>

<p>The Asterisk Test Suite is an open source project that manages functional testing of Asterisk.  It orchestrates instances of Asterisk along with various third party protocol injection applications, allowing a developer to write tests that exercise a wide variety of the functionality within Asterisk. &nbsp;While the Asterisk Test Suite is language agnostic, a set of libraries have been developed in Python and Lua to aid in test development. &nbsp;Currently, the Python libraries receive the majority of development attention, and most tests are written in Python.</p>




    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST">Stop watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action">Change email notification preferences</a>
</div>
        <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+Test+Suite+Documentation">View Online</a>
        |
        <a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=17793142&revisedVersion=2&originalVersion=1">View Changes</a>
                |
        <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+Test+Suite+Documentation?showComments=true&amp;showCommentArea=true#addcomment">Add Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>