Google Groups

GSOC 2012 - Student wanted for "Improve Testing Framework"

Ingo Schommer Mar 26, 2012 2:30 AM
Posted in group: SilverStripe Core Development
Hey guys,

I'm still looking for a student to take on a fairly central piece in
the future development of the CMS interface: The behaviour testing framework.
Its a great opportunity to work with cutting edge tech in the PHP space,
as well as adding a useful skill to your portfolio - employers
love a documented personal focus on software quality.
When starting with this, I've also found it quite rewarding as a programmer
to shift gears from lowlevel implementation tests to describing business
functionality - it gets you more into a client-focused mode of thinking,
again a great asset for your career.

Alright, enough sales pitch - anybody keen? ;)

P.S.: Ryan Dao, if you can still be swayed to switch from your ecommerce
project idea, let me know :)

Improve Behaviour Testing Framework and Test Suite

SilverStripe has good support for unit testing, and the framework is generally well tested. But those tests are developer centric, and don’t describe high level user goals very well. Even worse, a lot of high impact interface bugs are slipping through the cracks because of this unit-focused approach. A more behaviour-driven testing will make our interface more specified and solid in a sustainable fashion.


  • Extend the existing proof-of-concept based on Cuke4PHP and PHP Webdriver
  • Connect existing database fixture logic in SilverStripe’s testing framework to the setup/teardown logic of Cuke4PHP
  • Create reusable set of assertions (“Given … when … then”) fitting the problem space of a content management interface
  • Specify existing CMS behaviour based on examples
  • Start with high-level goals, e.g. “Given I am logged in as a CMS author, when I open a page, enter ‘new content’ and save the page, the website shows ‘new content’”
  • Document how to use the Cuke4PHP system, how the assertions are structured and how they can be used. The goal is to create a living specification, so a top priority should be spreading knowledge about it to other maintainers.


  • Ability to quickly grasp relatively complex user interactions by using an interface, and describing them in a clear way through examples
  • Intermediate PHP skills to write the test assertions
  • Beginner SilverStripe skills in order to create framework-specific extensions to the library