#summary Guidelines for testing Melange and the SoC framework
#labels Contents-Draft,Phase-Guidelines,Importance-Overview

= Mission =

Testing is important to us as a community. The [MelangeIntro Melange]
community strives to produce a framework that can be used to build useful
and reliable web applications to host programs like
[GSoC Google Summer of Code]^TM^.  This desire drives our placement of
testing as an important part of contributing to the Melange project.
Testing is also an important complement to
[ContributionReviews#Code_reviews code reviews].

== Human Testing ==

We _love_ to have testers visit, try things out and particularly report issues on the issue tracker.  It's fine to raise issues that might be most expediently solved by documentation.  They are still issues.  If you are reporting an issue, do check first that the issue hasn't already been reported.  This [http://code.google.com/p/soc/issues/list?can=1&q=-status:Verified,Duplicate&sort=-id search link] will give you issues which have been fixed but perhaps not pushed to appspot yet, and it gives the most recently raised issues first.  

== Load Testing ==

We have been doing some preliminary work on load testing Melange at appspot using this list of pages:

  * http://socghop.appspot.com/
  * http://socghop.appspot.com/program/home/google/gsoc2009
  * http://socghop.appspot.com/document/show/program/google/gsoc2009/mentoragmt
  * http://socghop.appspot.com/document/show/program/google/gsoc2009/studentagmt
  * http://socghop.appspot.com/document/show/program/google/gsoc2009/tos
  * http://socghop.appspot.com/document/show/program/google/gsoc2009/userdocs
  * http://socghop.appspot.com/org/list_public/google/gsoc2009
  * http://socghop.appspot.com/org/list_public/google/gsoc2009?limit_0=%s
  * http://socghop.appspot.com/org/list_public/google/gsoc2009?limit_0=%s&offset_0=%s

Earlier testing allowed us to make a change in how sidebars are handled, things look a lot better now.  We're currently not too worried about load.
 
== Automated Testing ==

The Melange project aspires to apply testing best-practices to the development
of the [SoCOverview SoC framework], always working towards goals such as
higher release reliability and increasing test coverage.  Improving towards
these goals makes development methods such as
[http://www.martinfowler.com/articles/continuousIntegration.html continuous integration]
possible.  To that end, contributors need to adhere to certain testing
guidelines.

While we feel that software testing is very important, the Melange community
does not want to refuse [ContributionReviews#Patches patches] and other
contributions from casual developers.  To that end, we promise to make
the tests themselves
[TestingGuidelines#No_nondeterministic_tests reliable] and
[TestingGuidelines#Smoke_tests easy to run].  We want to encourage every
contributor to help us enhance the quality and reliability of the SoC
framework and the open source and free software contribution web sites
that is will power.

The SoC framework will define some test suites, including smoke tests and
golden tests.  At this point in time, this document is mostly a TODO list,
but it will evolve into the project testing guidelines as these wish list
items are implemented.

= Test suites =

== Smoke tests ==

The SoC framework will include a set of "smoke tests" that are used as a
"first line of defense" before code contributions can be
[ContributionReviews#Code_reviews submitted for review by other contributors].

As long as the "golden tests" do not take too long to run, they will be
included in the smoke test suite.  Once the smoke test suite becomes too
large, the more esoteric tests will be migrated to the golden test suite.

=== Running the smoke tests ===

To run the smoke tests, run this command from the root of the SoC mercurial working
copy:

{{{
nosetests -v \
 trunk/scripts/tests
 # more test directories will be added to this example later
}}}

The `-v` (`--verbosity`) option shows specifically which tests are being run
and can be omitted.

These test modules are explicitly *not* executable scripts so that they can
use explicit relative references to "reach back" to the module to be tested
from the `tests/` sub-directory (which do not work if
`__name__ == '__main__'`).

== Golden Tests ==

The golden test suite are a proper superset of the shorter-to-build-and-run
[TestingGuidelines#Smoke_tests smoke test suite] used as a precondtion for
patch code reviews (that is, all of the "smoke tests" are included in the
"golden tests" by definition).

For some time, the smoke test suite and the golden test suite are likely to
identical.  See the note in the
[TestingGuidelines#Smoke_tests smoke tests section].

=== Running the golden tests ===

Instructions for building and running the golden test suite will be added here.

= Policies =

== Nontrivial changes need tests ==

Any non-trivial change requires an accompanying test, in the same patch as
the proposed change.  These guidelines need to be followed:

 * There should be always be a test whenever adding new behavior or changing existing behavior in any way (and the test code should be in the same [ContributionReviews#Patches patch] as the code change).
 * Refactorings do not require new tests, so long as the code being refactored is already covered by tests (and those tests pass after the refactoring). Refactorings should make no non-trivial changes to tests, since the tests are instrumental in validating that the refactoring did not break anything.
 * Emergency patches (perhaps quick fixes by the release packager) do not require tests immediately, but a test should be included in a new patch accompanying the follow-up [ContributionReviews#Patches code review].
 * You need to add tests if changing a section of code that does not currently have them.

== All changes should pass smoke tests before review ==

All patches should pass the [TestingGuidelines#Smoke_tests smoke test suite]
before being submitted for review.  So as not to waste other contributors'
time, please insure that the smoke tests pass before requesting a code
review of a patch, and after any `svn update` or `svn merge` that might
change the code being
[ContributionReviews#Branches reviewed in a development branch].

== Never reduce existing code coverage ==

Please make a habit of
[TestingGuidelines#Code_test_coverage collecting code coverage information]
to determine if the new lines of code in a patch have test coverage
(though keep in mind that code coverage alone is not sufficient).  Code
reviewers and "lurkers" on the
[MailingListsGuidelines#Developer_list developer mailing list]
should actively ask for tests to be included in each patch, in adherence
with the guidelines listed above.

== No official release if tests are failing ==

The SoC framework will not be officially released if the continuous build
indicates that any of the
[TestingGuidelines#Golden_tests "golden tests"] are failing.  (Before a
continuous build is up and running, this will be checked manually by having
the release packager run the test suites explicitly.)

== No nondeterministic tests ==

Please do not allow any non-deterministic tests to be added to the test
suites, and please fix any tests that are detected to be non-deterministic
by using mocks.  Non-deterministic tests are considered second priority only
to actual test failures.  This is because official releases are gated by
passing the [TestingGuidelines#Golden_tests golden test suite], so that
suite needs to be trustworthy.  Eventually, official releases will be based
on a green-light build from the continuous build.  A test that later fails
represents a scenario that can also be a failure in in the release itself.

= User Acceptance Testing =

Instructions for pre-release building and running of the sample Program
web applications and testing them manually (or with a tool like
[http://selenium.openqa.org/ Selenium]) for
[http://en.wikipedia.org/wiki/Acceptance_testing User Acceptance Testing (or UAT)]
will be added here.

= Testing tools =

== Continuous build ==

A medium-term goal is the ability to continuously build and test the `HEAD`
revision in `/trunk/` automatically.  Tools exist for setting up continuous
build and test processes and monitoring those processes.  At some point,
these will be deployed for the Melange project.

== Code test coverage ==

A long-term goal is the ability to acquire automated test coverage.  Tools
exist for measuring test coverage of Python code.  At some point, these will
be incorporated into a Melange continous build.

----
_Copyright 2008 Google Inc._
_This work is licensed under a_
[http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]