|
|
| Line 22: |
Line 22: |
| <LI><P STYLE="margin-bottom: 0cm">[https://docs.moodle.org/dev/Testing_strategy/Hardware_Requirements Hardware requirements]</P> | | <LI><P STYLE="margin-bottom: 0cm">[https://docs.moodle.org/dev/Testing_strategy/Hardware_Requirements Hardware requirements]</P> |
| <LI><P STYLE="margin-bottom: 0cm">[https://docs.moodle.org/dev/Testing_strategy/Testing_Tools_and_Their_Use Testing Tools and Their Use]</P> | | <LI><P STYLE="margin-bottom: 0cm">[https://docs.moodle.org/dev/Testing_strategy/Testing_Tools_and_Their_Use Testing Tools and Their Use]</P> |
| <LI><P STYLE="margin-bottom: 0cm">Test Environments</P> | | <LI><P STYLE="margin-bottom: 0cm">https://docs.moodle.org/dev/Testing_strategy/Test_Environments Test Environments</P> |
| <LI><P STYLE="margin-bottom: 0cm">Roles and responsibilities</P>
| | <LI><P STYLE="margin-bottom: 0cm">https://docs.moodle.org/dev/Testing_strategy/Implementation_Plan Implementation Plan</P> |
| <LI><P STYLE="margin-bottom: 0cm">Training requirements</P> | | <LI><P STYLE="margin-bottom: 0cm">https://docs.moodle.org/dev/Testing_strategy/Training Training</P> |
| | <LI><P STYLE="margin-bottom: 0cm">https://docs.moodle.org/dev/Testing_strategy/Useful_Resources Useful Resources</P> |
| </UL> | | </UL> |
|
| |
| <H1 CLASS="western">Test Environments</H1>
| |
| <P>Test environments for automation will be hosted on
| |
| the VM server. These will include a CI server (the build machine),
| |
| database servers, web servers and client PCs.
| |
| </P>
| |
| <H2 CLASS="western">Requirements Gathering</H2>
| |
| <P>As a task while provisioning the VM Server, two
| |
| surveys have been run to determine popular Test Platforms. Survey 1
| |
| gathered metrics from the Moodle Community and Survey 2 gathered
| |
| metrics from Moodle Partners. Limiting factors of these surveys are
| |
| that both samples are relatively small. The results of the surveys
| |
| are as follows:</P>
| |
| <H3 CLASS="western">Survey
| |
| 1 The Moodle Community:</H3>
| |
| <P>Fig. 4 Separate Database and Web Server Yes/No:</P>
| |
| <P>[[File:Fig._2_user_split_system.png]]</P>
| |
| <P>Fig. 5 Operating System of Separate Web Server:</P>
| |
| <P>[[File:fig.3_user_os_separatewebserver.gif]]
| |
| </P>
| |
| <P>Fig. 6 Operating
| |
| System of Separate Database Server:</P>
| |
| <P>[[File:fig.6_user_OS_SeparateDB.gif]]</P>
| |
| <P>Fig. 7 What Databases are Used on a Split System:</P>
| |
| <P>[[File:Fig7_user_dbs_used_split.png]]</P>
| |
| <P>Fig. 8 What Databases are Used on an all in one
| |
| Database Server and Webserver:</P>
| |
| <P>[[File:fig8_user_database_combined.png]]</P>
| |
| <P>Fig. 9 What Web
| |
| Server is Used on a Split System:</P>
| |
| <P>[[File:user_webserver_split.png]]</P>
| |
| <P>Fig. 10 What Web Server is Used on an all in one
| |
| Database Server and Webserver:</P>
| |
| <P>[[File:user_webserver_combined.png]]</P>
| |
| <P>As Debian and Ubuntu are similar and Red Hat and
| |
| Centos are similar that,based upon our sample data, our three main
| |
| operating used by the Moodle community Debian/Ubuntu, Red Hat/Centos
| |
| and MS Server 2008 with a weighting of almost 75% towards the two
| |
| Linux operating systems.</P>
| |
| <P>Of the five supported databases, the majority of
| |
| community users prefer MySQL with PostgreSQL and MSSQL a fairly equal
| |
| but distant second and third.</P>
| |
| <P>The Majority of community users also use Apache with
| |
| IIS a very distant second.</P>
| |
| <H3 CLASS="western">7.1.1Survey
| |
| 2 The Moodle Partners:</H3>
| |
| <P>Fig. 11 Separate Database and Web Server Yes/No:</P>
| |
| <P>[[File:partner_split_combine.png]]
| |
| </P>
| |
| <P>Fig. 12 Partner OS Database Server (combining answers
| |
| for fig 11):</P>
| |
| <P>[[File:partner_OS_DB.gif]]
| |
| </P>
| |
| <P>Fig. 13 Partner OS
| |
| Web Server (combining answers for fig 8):</P>
| |
| <P>[[File:partner_OS_Web.gif]]
| |
| </P>
| |
| <P>Fig. 14 What Databases are Used on a Split System:</P>
| |
| <P>[[File:partner_db_split.png]]
| |
| </P>
| |
| <P>Fig. 15 What Databases are Used on a Combined System:</P>
| |
| <P>[[File:partner_db_combine.png]]
| |
| </P>
| |
| <P>Fig. 16 What Web
| |
| Servers are used on a Split System:</P>
| |
| <P>[[File:partner_webserver_split.png]]</P>
| |
| <P>Fig. 17 What Web Servers are used on a Combined
| |
| System:</P>
| |
| <P>[[File:partner_webserver_combined.png]]
| |
| </P>
| |
| <P>This suggests that the majority of partners use
| |
| Debian/Ubuntu or Centos/Rad Hat Linux, Apache and either a MySQL or
| |
| PostgreSQL database.
| |
| </P>
| |
| <H2 CLASS="western">VM Requirements</H2>
| |
| <P>In true agile fashion and to promote flexibility,
| |
| VM's for test environments will be modular i.e. they will be separate
| |
| database servers and web servers. This will allow the mixing and
| |
| matching of databases and their host OS to the web servers and their
| |
| host OS as requirements change. At any time, any Web Server can
| |
| connect to any Database Server. It should also reduce potential
| |
| numbers of running VMs required for a particular platform.</P>
| |
| <P>A master hub VM is required for Jenkins and the hub for the Selenium
| |
| grid.</P>
| |
| <H1 CLASS="western" STYLE="page-break-before: always">Implementation</H1>
| |
| <P>Agile testing guru and automation expert Brian Marick
| |
| coined the term “Hump of Pain” to describe the initial phase of
| |
| implementing test automation. The impact of this hump can be
| |
| minimised by good planning, good coaching and a strong managerial
| |
| support for the new processes. As time progresses, particularly as
| |
| infrastructure becomes implemented, the test cases in the automated
| |
| suite are completed and the introduced practices become second
| |
| nature; the hump disappears.</P>
| |
| <H2 CLASS="western">Agile Implementation of Testing
| |
| Practices</H2>
| |
| <P>Modifications to the process should be made in an incremental
| |
| manner based up scrum methodology. A series of 2 weekly sprints will
| |
| be used to time-box test planning and implementation tasks.</P>
| |
| <H2 CLASS="western">Phase 1: Infrastructure and the
| |
| Integration Process</H2>
| |
| <P>The infrastructure to maintain automated testing
| |
| effort must be implemented. This process will start with the
| |
| installation of cloud based hardware at Moodle HQ and the setup of
| |
| VM's to support the required test environments.</P>
| |
| <P>The integration process affects quality for the whole
| |
| organisation as all code must go through the integration process to
| |
| become 'live'. The processes described above will will be initially
| |
| implemented at integration. Any changes to the existing processes
| |
| will take place side-by-side with existing processes to manage risk.
| |
| i.e. existing processes impacted by changes will be maintained in
| |
| their current state until implementation of changes becomes stable.</P>
| |
| <P>The setup of test environments will initially start
| |
| with a restricted number of high risk test environments so that the
| |
| automation process, particularly test cases, can be developed
| |
| incrementally.</P>
| |
| <H1 CLASS="western">Roles and Responsibilities</H1>
| |
| <P>Below is a list of stakeholders and their roles
| |
| relevant to this document</P>
| |
| <TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000000" CELLPADDING=4 CELLSPACING=0>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33% BGCOLOR="#ffff99">
| |
| <P ALIGN=CENTER><B>Name</B></P>
| |
| </TD>
| |
| <TD WIDTH=33% BGCOLOR="#ffff99">
| |
| <P ALIGN=CENTER><B>Role</B></P>
| |
| </TD>
| |
| <TD WIDTH=33% BGCOLOR="#ffff99">
| |
| <P ALIGN=CENTER><B>Responsibilities</B></P>
| |
| </TD>
| |
| </TR>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33%>
| |
| <P>Tim Barker</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Test Manager</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Co-ordinate testing effort</P>
| |
| <P>Define organisational test strategy and requirements</P>
| |
| <P>Specify test plans and cases</P>
| |
| </TD>
| |
| </TR>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33%>
| |
| <P>Jordan Tomkinson</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>System Administrator</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Provision of Hardware</P>
| |
| <P>Commission test platforms and supporting infrastructure</P>
| |
| </TD>
| |
| </TR>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33%>
| |
| <P>Martin Dougiamas</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Moodle Founder and MD</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Approval</P>
| |
| </TD>
| |
| </TR>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33%>
| |
| <P>Michael de Raadt</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Development Manager</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Approval</P>
| |
| </TD>
| |
| </TR>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33%>
| |
| <P>Eloy Lafuente</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Knight in Shining Armour</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Technical guidance and advice</P>
| |
| </TD>
| |
| </TR>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33%>
| |
| <P>Helen Foster</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Community Manager</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Community liaison with regard to requirements gathering</P>
| |
| </TD>
| |
| </TR>
| |
| <TR VALIGN=TOP>
| |
| <TD WIDTH=33%>
| |
| <P>Moodle Developers</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Development</P>
| |
| </TD>
| |
| <TD WIDTH=33%>
| |
| <P>Input into VM requirements</P>
| |
| <P>Design and write unit tests</P>
| |
| <P>Test Execution</P>
| |
| <P>Performance Test Matrix (Sam Hemelryk)</P>
| |
| </TD>
| |
| </TR>
| |
| </TABLE>
| |
| <H1 CLASS="western">Training Requirements</H1>
| |
| <H1 CLASS="western">Useful Resources</H1>
| |
| <P>[http://jenkins-php.org/ Template for
| |
| Jenkins Jobs for PHP Projects]</P>
| |
| <P>[http://www.phing.info/trac/ Phing]</P>
| |
| <P>[https://wiki.jenkins-ci.org/display/JENKINS/Phing+Plugin" Phing
| |
| Jenkins Plugin]</P>
| |
| <P>[http://www.teamst.org/ TestLink]</P>
| |
| <P>[https://wiki.jenkins-ci.org/display/JENKINS/TestLink+Plugin Testlink
| |
| Jenkins Plugin]</P>
| |
| <P>[https://wiki.jenkins-ci.org/display/JENKINS/Clover+PHP+Plugin Clover
| |
| Jenkins Plugin]</P>
| |
| <P>[http://seleniumhq.org/" Selenium]</P>
| |
| <P>[https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Plugin">Selenium
| |
| Jenkins Plugin]</P>
| |