When I think of rest, it’s usually the type that requires a bed or comfortable couch. But these days I am spending more time verifying intermediate components of a larger system that take advantage of the synchronous behavior known as a restful web service than working on web GUI interfaces.
I know this has been done. And I know mine isn’t so great (I left out ALL error checking), but this is my quick set up script for when I install Ubuntu on a laptop or VM. I put it on a flash drive just in case because just in case happened to me 3 times in the past month or so. Note: a couple lines wrapped so I used \ to mark them.
# export BACKUP=/media/MYFLASHDRIVE/backup
if [ -f $1 ]
sudo rm -f $1
echo "does not exist"
if [ ! -x /usr/bin/$1 ]
sudo apt-get install -y $1
if [ ! -x ~/.oh-my-zsh ]
curl -L \ https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
tar -xvzpf $DOWN/custom.tar.gz
sudo chmod +rwx $ME:$GRP ~/.oh-my-zsh/custom
cp $DOWN/config.zshrc ~/.zshrc
if [ ! -x /usr/share/jdk1.7.0_40 ]
tar -xvzpf $BACKUP/jdk-7u40-linux-x64.tar.gz
sudo mv jdk1.7.0_40 /usr/share
sudo ln -s /usr/share/jdk1.7.0_40/bin/java
if [ ! -x /usr/bin/mvn ]
sudo apt-get install maven
if [ ! -x /usr/share/idea-IC-129.713 ]
tar -xvzpf $BACKUP/ideaIC-12.1.4.tar.gz
sudo mv idea-IC-129.713 /usr/share
sudo ln -s /usr/share/idea-IC-129.713/bin/idea.sh idea
if [ ! -x /home/dave/.rvm/rubies/ruby-2.0.0-p247/bin/ruby ]
curl -L https://get.rvm.io | bash -s stable --ruby
rvm install ruby-2.0.0-p247
sudo chown -R dave:dave .gem
gem install map_by_method
gem install what_methods
gem install bundler
#Sublime Text 2
if [ ! -x /usr/bin/sublime ]
tar xf $BACKUP/Sublime_Text_2.0.2_x64.tar.bz2
sudo mv 'Sublime Text 2' /usr/share/Sublime_Text_2
sudo ln -s /usr/share/Sublime_Text_2/sublime_text
sudo ln -s /usr/share/Sublime_Text_2/sublime_text sublime
sudo cp $BACKUP/sublime.desktop /usr/share/applications
cat /usr/share/applications/defaults.list | \
sed s/gedit.desktop/sub\lime.desktop/g > ~/defaults.list
sudo cp ~/defaults.list /usr/share/applications/
#Skype and recorder
if [ ! -x /usr/bin/skype ]
sudo dpkg -i $BACKUP/skype-ubuntu-precise_184.108.40.206-1_i386.deb
if [ ! -x /usr/bin/skype-call-recorder ]
sudo dpkg -i $BACKUP/skype-call-recorder-ubuntu_0.10_amd64.deb
sudo apt-get -f install
if [ ! -x /opt/google/chrome ]
sudo dpkg -i $BACKUP/google-chrome-stable_current_amd64.deb
if [ ! -x /usr/bin/dconf-editor ]
sudo apt-get install -y dconf-tools
Two things happened to me lately. First, I was trying to find a career tester in the San Diego area that knows at least a little bit about automated testing. It isn’t going well. I’ve reviewed a lot of resumes. all the submitters are career manual testers.
Surely somebody sometime must have wondered if they need to learn more about automation. Elisabeth Hendrickson once asked Do Testers Have to Write Code? They did a survey to figure out what companies were looking for from tester skills. In our case, we aren’t looking for somebody to write the test code, but to write and review the cucumber scenarios. Just the same, even on a light desire level, I was disappointed.
Second, a younger person asked me what he should learn in test automation last week. I had already been contemplating writing this curriculum, so I was resolved to do it. Srini, here it is.
Other people who don’t work with LAMPs, such as .Net environments etc. will probably not appreciate this list. Make your own list on your own blog and put the link in a comment here. I don’t begrudge anybody doing something else. I just don’t want to go there.
I created this curriculum for testers learning test automation. While some addresses how and why, most of the list is about tools that can help create a full solution. Anyway, here is my list in priority order:
An open source tool such as Watir-Webdriver or Selenium/Java – do not mess around with the QTP and TestComplete. The cargo cults that buy those tools will expect “anybody can automate”. With open source tools, you can download your own learning playground and incorporate that with the other products.
Learn how to create page objects. Even if you take advantage of a library like WatirMark or Page-Objects, you will have to do some tailoring yourself. I have been working with Selenium/Java so I am developing my skills on that combination now. Either way, you need to know how to work on that in an efficient way. In fact, you can address a lot of the entries in here just be using Cheezy’s book Cucumbers and Cheese (well worth the $15). I swear that I do not get a dime from it or Cheezy’s work, it’s just such a big benefit for anybody learning that I cannot miss the chance to say how good it is.
Github and Git – there are other good source control tools out there, including subversion. Git is easy to use locally for managing your own practice code. It’s easy go get copies of other people’s public projects onto your own system (how did they do that?). CodeSchool has a free course on git. There is also a nice paper on the differences between git/mercurial and subversion so you can understand the differences.
Ant and Maven if you use Java. Most of what I learned was through osmosis, but being able to shoehorn cucumber into your project is good to know.
Jenkins or Hudson, CruiseControl, or some other open source continuous integration tool. If you ever work at a place that will be introducing automated testing for the first time, this is great to know how to set it up.
Performance testing in JMeter – I think you can find a ruby alternative (BlitzIO or Grinder) but you don’t really need this tool to be in a ruby language. The importance is to learn the different kinds of testing you find under this umbrella (incorrectly) called Performance Testing. The other important skill is creating the right monitors so you can discover where things are bottled up.
Owasp‘s ZAProxy – learn how to capture the http calls between your browser or simulator and the server under test. You will learn a lot there. While you are there, download the GoatWeb project where you can learn about security vulnerabilities through practice.
Monitoring tools (Splunk or Graylog2) – One way to find the errors that are occurring on the system under test is through logging. Those are deleted nearly every time the server is redeployed. You can monitor those logs and server performance much better through a monitoring server.
A true startup is probably not going to hire a newb unless they are cost-control-centered. But if you find you get there are there is no issue tracking, it would be good to know how to set up issue tracking and integrate to your version control and continuous integration server. I’ve tried RedMine and it was fine.
If you see that you think should be on the list that is not there, please add a comment.