SoftwareTesting: Difference between revisions

2,463 bytes removed ,  29 December 2005
no edit summary
No edit summary
Line 1: Line 1:
= Overview =
In [http://www.kaner.com/pdfs/TheOngoingRevolution.pdf The Ongoing Revolution in Software Testing (pdf)], [http://www.kaner.com Cem Kaner] defines testing as
* Help Wanted


[[User:Davel|Dave Liebreich]] is interested in creating running code to test the mozilla codebase.  Not just end-to-end automated tests, but unit tests, module tests, test harnesses, test reporting infrastructure, and anything else that lowers the barrier to creating new code that gives someone feedback.
<blockquote cite="http://www.kaner.com/pdfs/TheOngoingRevolution.pdf">[...] a technical investigation of a product, done to expose quality-related information.</blockquote>


Dave needs help.  The codebase is huge.  The community is huge.  The task is huge.
This page is a starting point to find, learn about, and track technical investigations of the Mozilla codebase.


This page is the first cut at collecting Dave's plans and investigations.
Please note: this catalog is not limited to investigations done by members of the Mozilla qa team and community.


= Guiding principles =
* [[/Scratchpad]]
* Testing is good
* Testing provides technical information about the product/system under test
* There are lots of different types of testing, each providing a different type of information and involving different trade-offs
* replacing a test that is useful to person A with a test that is useful to person B but not useful to person A is bad - just add the new test
* automated developer testing works only if the developers are writing the tests.
** if developer finds something that is difficult to test, then developer can make code more testable
** if code is more testable, then tests can be more powerful
* feedback from user community is unstructured and somewhat unpredictable, but incredibly useful.  We should not extinguish this valuable channel of information.
* developer unit tests are typically not-very-powerful tests.  The value comes from
** immediate and precise feedback - written close to the code
** there are typically lots of them
** they function as executable specifications for the code, and can replace some documentation and usage examples
* we need involvement from toolsmiths and developers and testers
** toolsmiths maintain the infrastructure, and find/adapt/use tools to solve problems
** developers write developer tests
** testers write end-user tests
** each group shares domain knowledge with the others
 
= Projects =
* Catalog all existing test suites and/or test cases
** special page for security tests
* investigate existing testing tools
** Watir (possibly using JSSh)
** xulUnit, jsUnit, jsUnit (yes, there are 2), xUnit, FIT
* create test infrastructure architecture
** common invocation and reporting formats for all tests
*** or choose 1 of no more than 3, if 1-size-does-not-fit-all
** put docs on wiki, code in cvs
** follow list of principles for automated testing
*** data-driven (data separate from test code)
*** Keyword driven
**** action keywords
**** fixtures to implement action keywords
*** focus on oracle (how do we know the test passed or failed)
*** do not rule out computer-assisted manual testing (no automated oracle)
*** use model-based test scripting when possible
**** allows for high volume automated testing
**** can walk the state transitions and detect failures other than asserts or crashes
* Community outreach
** identify people in the mozilla community who are already test-infected
** identify test-infected people outside the mozilla community and ask them to help
** hit up grad students who can make this work part of their academic projects
201

edits