Thoughts on technology and innovation
Beth Farrar, Marketing Manager
Derek Hansen and Ted Husted, members of the Nimble AMS development team, will be presenting two one-hour sessions at Dreamforce 2013 in November, one on regression testing and another on continuous integration.
"As Nimble AMS continues to grow,” said Husted, “we need to be sure new features play well with existing features. We've long since passed the point where we can test everything by hand for every release. The Page Flow pattern helps us create better tests faster, and continuous integration helps us conserve energy and test the right things at the right time.”
“It’s all about DRY: Don’t Repeat Yourself,” explained Hansen. “Every minute you spend repeating manual tasks, is a wasted minute of innovation. The power of innovation will compound over time, but not if you’re stuck deploying files over and over again. Using a set of continuous integration tools, each Nimble AMS feature is isolated on its own branch, and in its own feature sandbox. As the feature moves through development, our tools programmatically deploy the code where it needs to be, with minimal intervention. “
Between now and November, the titles are subject to change, but here are the Dreamforce sessions that Ted and Derek will present on:
Session Description: "Streamline Selenium Testing with Page Flow Navigation"
In this session, we show you how to significantly reduce the time needed to write and maintain Selenium tests by using page flows to encapsulate the navigational elements in your application.
Salesforce runs thousands of Selenium user interface tests daily, ensuring that user interactions continue to perform as expected, end to end. User interfaces are constantly evolving, and maintaining Selenium test suites is an ongoing challenge. As the number of custom VisualForce pages in your own application grows, it’s important to leverage a core framework that helps developers quickly write comprehensive UI tests.
We will show you how common, multi-page UI actions in Selenium tests can be abstracted into page flows. With a page flow, developers can cut to the chase in a testing scenario, bypassing the setup often needed to navigate to the beginning of your testable action.
Page flows are implemented using Page Objects, which hide the implementation of the page itself from your tests, and lets your code become clean, dry, and readable. Out of the box, the Selenium WebDriver provides a PageFactory class that lazily instantiates the page elements, making AJAX UI testing a breeze.
Leave this session knowing what you need to add a high-value, low-maintenance Selenium test suite to your arsenal.
Session Description: "How to Setup a Continuous Integration System for Enterprise Development"
In this session, we walk through setting up a continuous integration system for Salesforce development, from scratch, using Git, Jenkins, the Force.com Migration Tool, and the Apex Data Loader, following a proven, step-by-step approach that you can use with your own project.
We show you how to pull your current project code with the toolkit, deploy it to a Git host, and then how to use Jenkins jobs to automatically deploy updated code to staging and packaging orgs, and also how to use feature sandboxes and feature branches to isolate work-in-progress from completed work.
“Feature sandboxes and feature branches, you say?”
Salesforce orgs provide developers with a wealth of functionality out-of-the-box. For developers, the trick is keeping metadata for a feature that is ready to test, but not approved for release, from being co-mingled with new work-in-progress for another feature.
In the Git universe, developers often isolate work-in-progress on a feature branch. When the feature is fully developed, the branch can be tested and reviewed by other team members. Meanwhile, the developer provisions a fresh branch and goes onto the next feature. When a feature branch is tested, reviewed, and approved, it is ultimately merged into the main line of development. But not before.
Feature branches are a great approach to development, and it’s surprisingly easy to apply the same model to sandboxes. With feature sandboxes, Force.com developers can realize the full promise of iterative and incremental development.
Since developer sandboxes do not duplicate the parent org’s data, we also demonstrate how to maintain a complete set of example data, and quickly push that data to developer orgs on-demand, using only the Apex Data Loader and the SQL database of your choice.
During the session, we present the actual configuration scripts we use to make all this work for our group of eight developers, working together on the same managed product, spanning 65+ objects, 350+ classes, and 600+ Apex tests.
If you’re ready to release “no line before its time”, this session has the tools you need to dam the waterfall.
About the Speakers
Derek Hansen is a Lead Engineer for the Nimble AMS product, an enterprise level Association Management System built on Force.com. Obsessed with creating higher quality software at an ever increasing pace, Derek is naturally drawn to Agile processes, Behavior Driven Development, and development best practices. A constant force of innovation, Derek enjoys picking up seemingly unrelated skills to push ahead faster. Whether it’s learning to speed read or absorbing the latest Web framework, Derek can always be found prototyping and tinkering with new ideas.
Ted Husted is a Certified Salesforce Developer, a recurring speaker at ApacheCon and the Ajax Experience, and a former member of the Apache Struts project, a popular web application framework for Java. Before joining NimbleUser in 2008 as a Business Analyst, Ted consulted with teams throughout the United States, including CitiGroup, Nationwide Insurance, and the Pepsi Bottling Group. Ted has written or co-authored several technical books, including Professional JSP Site Design, Struts in Action, JUnit in Action (1st Ed.), and Googe Wave (Preview) Explained.
Dreamforce, Salesforce.com's annual user conference, is the largest cloud computing event of the year and a great opportunity for you to make sure that you are getting the most out of Salesforce.
For more, see Why Associations Should Attend Dreamforce.