13. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
19. binary output from the builds
libraries pulled through gradle/ivy/maven
base vm images
apt/yum repositories
application installers/bundles
20. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
26. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
30. Cucumber Example
Feature: Search courses
In order to ensure better utilization of courses
Potential students should be able to search for courses
Scenario: Search by topic
Given there are 240 courses which do not have the topic "biology"
And there are 2 courses A001, B205 that each have "biology" as one of the
topics
When I search for "biology"
Then I should see the following courses:
| Course code |
| A001 |
| B205 |
https://github.com/cucumber/cucumber/wiki/
36. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
43. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
48. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
50. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
54. Version Control
Manual
Automated
Tests
Acceptance
Automated
Tests
Commit Acceptance Deploy to
Automated Signoffs
Stage Tests Production
Acceptance
Tests Other Tests
Artifact
Repository
73. chef example
package "ntp" do
action [:install]
end
ntp_server = data_bag_item('ntp', 'default_server')
template "/etc/ntp.conf" do
source "ntp.conf.erb"
variables( :ntp_server => ntp_server['value'] )
notifies :restart, "service[ntpd]"
end
service "ntpd" do
action[:enable,:start]
end
79. Notional Environment
Multiple clusters networked together in a
distributed workïŹow
A cluster is
one server with jboss for the application
one database server
one server for ldap and nagios
80. Setup base vm - Ubuntu 12.04
Create Chef recipes for server components
rpm packages(w/versions)
jdk 7, jboss
oracle
81. Create overarching Chef recipe
one per server
applies lower level/reusable recipes
Setup cluster in vagrant
Integration - all team member commit at least once a day, automatic build, automated unit tests\nDelivery - Integration plus, deployment scripts, hopefully infrastructure as code, anything passing auto levels is able to be deployed on demand\nDeployment - Delivery with auto deployment (Flickr was last deployed 4 hours ago, including 1 change by 1 person. In the last week there were 84 deploys of 537 changes by 24 people.)\n
Trigger: commit to version control\nOutputs: binaries, static analysis output\n
compile\nunit test\nstatic analysis\nbinary\n
\n
all runtime configuration separated\ndeployment script job, jmx, jndi\n
< 10 minutes\n
\n
Trigger: updated binary from compile stage\nOutputs: test reports\n
Cucumber, easyb, spock, FitNesse\n
\n
\n
\n
\n
Waste of money\nError prone\nTest-fix-test\nhumans should be treated better, computers can perform the exact sequence of steps very quickly, humans should be doing exporatory testing\n
\n
(time to implement + time to maintain) < (time to manual test) * manual test cycles during project\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
The public methods represent the services that the page offers\nTry not to expose the internals of the page\nGenerally don't make assertions\nMethods return other PageObjects\nNeed not represent an entire page\nDifferent results for the same action are modelled as different methods\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
OS base install, with ruby, RubyGems, and chef installed\n