Improve Development Process with Open Source Software Wen Tao senior consultant 陈金洲 senior consultant wtao@thoughtworks. com Xi’an Software Park, Xi’an High-tech Development Zone, Xi’an Shaanxi, P. R. China, 710075 jchen@thoughtworks. com cell +86. 138. 1030. 2515 office +86. 29. 8760. 7341 Xi’an Software Park, Xi’an High-tech Development Zone,
Agenda • Introduction • Selenium • Demo • Cruise. Control • Showcase • Conclusion
Share experience • How do we test the web project? • What’s our daily development like? • Happy or painful? • Why? • Share your experience!
Question #1: Functional Test For Web app
Traditional approach Acceptance Testing Feature developed Bug found! • Developers have moved on • Too close to release Regression Testing Regression found! Release Development
Faster feedback Development Regression Testing Write test as you go Problems are found quickly Run them as often as you can Release Acceptance Testing
Why Automated? • Manual testing is slow, tedious and error-prone – Especially for regression Regression Testing 3 months Either take long time or less thorough What now? Start again?
Regression Testing 10 minutes Consistently Thorough Fast enough to start again and again…
Selenium http: //www. openqa. org/selenium/
Selenium • Open source test tool for web applications. • Run in browser • Test browser compatibility & system functionality. • Easy to use. – Test cases are written in pure HTML – Clean and impressive UI
Demo • Demo – Start hsqldb – Start tomcat – Firefox • http: //localhost: 8080/jpetstore/selenium
Question #2: Continuous Integration
What is Continuous Integration • Integrates source code and runs tests after each commit of code to the source repository. • Near-immediate feedback to the developer
Benefits of C. I. • Minimizes integration risk. • Supports easier defect diagnosis. • Encourages good testing habit • Support release management • Enforces company development policy
Cruise. Control http: //cruisecontrol. sourceforge. net/ Also see Luntbuild, which is a simpler analogue of Cruise. Control.
About Cruise. Control • Think of it as “timer for Ant”. • Simple design. Full featured, but not bloated. • Adapts to your project, not the other way around. • Can be completely customized.
Build loop of C. C. 1. Bootstrap 2. Check for modifications 3. Get the revision log 5. Publish Artifacts Cruise Control VCS 3. Tag source (optional) Your project’s Build file Ant, Maven, Make 1. Get the latest source 6. Send to publisher 4. Run Build Project Specific Adapter Ant Script 2. Run Build Artifacts Dir Mail/Sound/Light…
• Showcase
Conclusion • DRY, use automation test/continuous tools help you improve your development process, and maximize customer value. • Selenium helps you test webapp more easily. • Keep Cruise. Control running. it gives you feedback as soon as possible.
Resources Mike Clark, author of Pragmatic Project Automation http: //media. pragprog. com/movies/auto/Cruise. Control_Mike. Clark. html Selenium IDE: http: //www. openqa. org/selenium-ide/ Selenium Remote Control http: //www. openqa. org/selenium-rc/