Changes between Version 15 and Version 16 of OpenVPN_QA


Ignore:
Timestamp:
06/04/14 12:19:24 (10 years ago)
Author:
Samuli Seppänen
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OpenVPN_QA

    v15 v16  
    33= Introduction =
    44
    5 This page outlines the efforts taken to maintain OpenVPN's quality without excessive compromises on development speed.
    6 
    7 The next major release (as of Sep 2011), OpenVPN 2.3, will contain significant low-level changes to OpenVPN 2.2.x and 2.1.x. Therefore lots of work is needed on the QA front to avoid regressions. The plan is to setup good QA environment for 2.3a -> 2.3GA development phase. This environment will contain several different parts:
     5This page outlines the efforts taken to maintain OpenVPN's code quality without excessive compromises on development speed.
    86
    97= Static testing =
     
    119== Peer review ==
    1210
    13 Static testing usually refers to [http://en.wikipedia.org/wiki/Static_code_analysis static code analysis], which is baked in into our [DeveloperDocumentation development process] in the form of mandatory ACK process every patch has to go through. The ACK process not only improves code quality, it also prevents highly specialized or rarely used features from polluting the codebase.
     11Static testing usually refers to [http://en.wikipedia.org/wiki/Static_code_analysis static code analysis], which is baked in into our [DeveloperDocumentation development process] in the form of mandatory ACK process which every patch has to go through. The ACK process not only improves code quality, it also prevents highly specialized or rarely used features from polluting the codebase. Code reviews are especially important for patches coming from non-core contributors who may not be familiar with OpenVPN's coding practices.
    1412
    1513== Automated static testing ==
     
    2119== Dedicated black-box tests ==
    2220
    23 Dynamic black-box testing means trying out an application and verifying if it works as intended. In closed-source software development which is organized around a [http://en.wikipedia.org/wiki/Waterfall_model waterfall model] there are usually dedicated testers who do various scripted or intuitive tests to verify an application works as intended. This usually happens just before launch. In complex applications (such as OpenVPN) testing even a small fraction of functionality would be impractical and very costly. Fortunately, in [http://en.wikipedia.org/wiki/Lean_software_development Lean software development] methodologies such as [http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] and especially in community-driven OSS development doing ''extensive'', dedicated testing is in general just a waste of time. It is replaced by
     21Dynamic black-box testing means trying out an application and verifying if it works as intended. In closed-source software development which is organized around a [http://en.wikipedia.org/wiki/Waterfall_model waterfall model] there are usually dedicated testers who do various scripted or intuitive tests to verify that an application works as intended. This usually happens just before launch. In complex applications (such as OpenVPN) testing even a small fraction of functionality would be impractical and very costly. Fortunately, in [http://en.wikipedia.org/wiki/Lean_software_development Lean software development] methodologies such as [http://en.wikipedia.org/wiki/Scrum_%28development%29 Scrum] and especially in community-driven OSS development doing ''extensive'' dedicated testing is in general just a waste of time. It is replaced by
    2422
    2523 * Constant quality assurance achieved with static whitebox technique (e.g. code reviews)
    2624 * Testing in real environments (by users)
    2725
    28 This said, a minimal amount of dedicated, dynamic testing (a.k.a. [http://en.wikipedia.org/wiki/Smoke_testing smoke testing]) goes into each release to catch the most obvious errors.
     26This said, a small amount of dedicated, dynamic testing (a.k.a. [http://en.wikipedia.org/wiki/Smoke_testing smoke testing]) goes into each release to catch the most obvious errors:
     27
     28||'''Operating system'''||'''Architecture'''||'''List of tests'''||'''Tester'''||'''Notes'''||
     29||Windows XP installer||i388||mattock||Uninstall/install, OpenVPN-GUI connect/disconnect, service connect/disconnect||||
     30||Windows 7 installer||amd64||mattock||Same as for Windows XP, above||||
     31||!Ubuntu/Debian||i386/amd64||mattock||Install, upgrade, service connect/disconnect||2-3 of the official packages are tested||
     32
     33All tests are performed against an OpenVPN 2.1.3 server that authenticates from LDAP and uses tls-auth.
     34
     35If you want to help with pre-release testing please don't hesitate to [wiki:GettingHelp contact the developers].
    2936
    3037== Performance tests ==
    3138
    32 To ensure good performance, performance tests are in place. For details, look at the [wiki:PerformanceTesting performance testing wiki page].
     39In the past performance tests have been conducted to measure OpenVPN performance:
     40
     41 * [wiki:PerformanceTesting Performance testing wiki page]
     42 * [wiki:OpenVPN_Speed Optimizing OpenVPN throughput]
     43
     44As no systematic performance tests have been conducted, minor performance regressions might go unnoticed.
    3345
    3446== Testing in real environments ==
    3547
    36 In OpenVPN (and most other open source projects), the stability of stable releases is ensured with ''real-life testing'' by it's users during all phases of software development, starting from development code in Git and leading into stable releases. There are at least two kinds of ''barriers'' to using pre-release code:
     48In OpenVPN (and most other open source projects), the stability of stable releases is ensured with ''real-life testing'' by it's users during all phases of software development, starting from patches sent to the mailing list, followed by development code in Git and leading into stable releases. There are at least two kinds of ''barriers'' to using pre-release code:
    3749
    3850 * '''Psychological barriers'''
     
    4961Use of snapshots help overcome some of the technical barriers. The only way to overcome psychological barriers is to speed up the release cycle. This results in new features get into wide circulation faster, which in turn results into issues being reported more quickly. This also gives more confidence in integrity of stable releases. On the flipside, more bugs will probably end up in the initial versions of the stable releases.
    5062
    51 In practice, the goal is to make live testing by users as easy as possible by providing snapshot packages regularly for common *NIX platforms and Windows.
     63We do not currently provide development snapshot binaries, although doing that would definitely be beneficial.
    5264
    5365== Continuous integration ==
    5466
    55 The project also has a [http://trac.buildbot.net/ Buildbot] buildmaster, which drives several buildslaves. These together form a [http://en.wikipedia.org/wiki/Continuous_integration continuous integration] environment for OpenVPN. Each of these buildslaves is running a different operating system, and every commit to the OpenVPN Git repository triggers a build on each. After the build, each buildslave's newly compiled openvpn instance tries to connect to a test server using several different configurations. This ensures that
     67The project also has a [http://trac.buildbot.net/ Buildbot] buildmaster, which drives several buildslaves. These together form a [http://en.wikipedia.org/wiki/Continuous_integration continuous integration] environment for OpenVPN. Each of these buildslaves is running a different operating system, and every commit to the OpenVPN Git repository triggers a build on each. After the build, each buildslave's newly compiled openvpn instance tries to connect to several test servers using several different configurations. This ensures that
    5668
    5769 * OpenVPN builds properly on a variety of platforms
    58  * Basic functionality is unaffected by commits
     70 * The very basic functionality is not horribly broken
    5971
    6072== Unit testing ==