1. DXAT (Disseny de Xarxes i Aplicacions Telemàtiques)
Luis Miguel Amorós
Adrien Viala
2. 1. Testing Tools
1.1. JUnit
1.2. Selenium
2. Agile Software Development
2.1. Scrum
3. Continuous Integration
3.1. Version control tools (SVN, GIT)
3.2. Project creation and management tools(Maven)
3.3. Hudson
2
3. 1.1. JUnit
From xUnit generic term: a framework to test the
smallest part of a code.
For Java: class, interface.
It aims at repeatable tests: checking that code’s
evolution do not alter the specification compliance.
Integrated in Eclipse, NetBeans…
Content:
Assertions for testing expected results
Test fixtures for sharing common test data
Test runners for running tests
3
4. import junit.framework.TestCase; @Before
import org.junit.*; public void setUp() throws Exception {
// Code executed before each test
public class TestFoobar extends }
TestCase{
@BeforeClass @After
public static void setUpClass() public void tearDown() throws Exception {
throws Exception { // Code executed after each test
// Code executed before the }
first test method }
@Test
@AfterClass public void test() {
public static void assertTrue(true);
tearDownClass() throws Exception }
{ }
// Code executed after the last
test method
} 4
5. 1.2. Selenium
Test web applications
It records a previous test and plays it anytime it would be
necessary in order to test the webapp
It has its own programming language (Selenes) in order to
program tests in most popular languages:
C#, Java, Groovy, Perl, PHP, Python & Ruby.
Tests can be executed in any web browser and any platform
5
6. 1.2. Selenium
Its architecture is based on:
Selenium IDE:
▪ Firefox Extension which lets to record, edit and
debug tests
▪ It lets to export created tests into different
programming languages
Selenium RemoteControl
▪ Java Server which interprets commands via
HTTP
Selenium Client API
▪ Selenese
6
7. Its purpose is to assure the main demands of the industry
nowadays:
Value:
▪ Value at the moment of product launch
▪ Ability to adapt and evolve through upgrades and expansions
Reduced development time:
▪ Overlapping in development phases
▪ Early delivery of the first parts of the product which are often the most urgent
Quickness:
▪ Produce complete parts of the product in short periods of time
Flexibility:
▪ Adjust the shape and course of project development characteristics and evolution of
requirements
Reliability:
▪ The processes are good when they get delivered early and continuously innovative value
7
8. Agile Software Development cycle is
divided into:
Concept:
▪ Create the vision of the product
▪ Determine what the team is going to work on
Speculation:
▪ Determine limitations imposed by business
environment: agendas and costs
▪ Close first approximation about what it can be
produced
Exploration:
▪ Develop an increment of the product which includes
those functionalities determined in previous phase
Revision:
▪ Revision what it has been built until this moment
Closing:
▪ It does not imply the end of the project
8
9. Most popular Agile Software Development models are:
Adaptive Software Development (ASD)
Agile Unified Process (AUP)
Crystal Clear.
Essential Unified Process (EssUP)
Feature Driven Development (FDD)
Lean Software Development (LSD)
Kanban
Open Unified Process (OpenUP)
eXtreme Programming (XP)
Dynamic Systems Development Method (DSDM)
Scrum
9
10. 2.1. Scrum
Very simple development methodology:
It requires hard work there’s no plan, only continuous adaptation of the
project
All the people which participate in the project are classified in:
Committed (pigs)
Involved (hens)
Meetings:
They must be done stood
It is advisable to use a cell format tasks on a blackboard
A graph indicating the improvements done in the sprint should be there
Meetings Type:
Sprint planning
Sprint track
Sprint review
10
12. 3.1. Control Version tools
Apache Subversion (SVN):
How you manage several versions due to different programmers?
Started as early as mid 70’s.
SVN’s ancestor is CVS: Concurrent Version System, started as shell scripts
in 1986.
SVN was born in 2000 to complete and develop CVS
Today, it is a top-level Apache project.
12
13. 1 – Get content:
svn checkout
svn update
2 – Make changes:
svn add
svn move
svn delete
3 – See what was changed in the
repository in meantime
svn status -u
4 – Update your local copy
svn update
5 – Merge your changes and Resolve
conflicts
svn diff
svn resolved
6 – Submit your changes
svn commit
13
14. Conflicts resolution:
svn diff show the differences from the
checkout files
svn revert cancel all modification( except
deleted files), then update & work again. Svn does
not know how to merge binary files (.doc).
svn resolved <FileName> then commit again
svn automatically merge (fusion) if modifications
are not at the same place.
14
15. 3.1. Control Version tools
GIT: distributed version control, since 2005, by Torvalds for
Linux kernel. created by programmers for programmers !!
• Only working copies
• Faster operation (no central
server)
• Autonomous group of
developers from network and
chiefs.
• Private versioning.
• Still possibility to have a central
server.
15
16. 3.2. Maven :
Maven: project
management and
build automation
Only direct
dependencies
Scope
specification
(JUnit only for
test)
16
17. Project described in the POM file, Project Object Model. XML, and
v3.0 Ruby, Groovy or Yaml.
Contents:
Src and resource files location
Java version
Direct dependencies
Used plugins
Technical report asked
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0</version>
</project>
17
18. Convention over Configuration: specified only the
unconventional.
Build life cycles:
process-resources
compile
process-test-resources
test-compile
test
package
install
Deploy
mvn test all the way until test.
18
19. 3.3. Hudson
Continuous Integration Tool implemented in Java
It works over an application server such as Apache or GlassFish
It supports control version tools (CVS, SVN, GIT)
It can execute projects based in Apache Ant or Maven, and
scripts based on batch or shell/bash scripts
It can build the projects through:
A scheduler programmed with cron
Compilation of other projects
Request of an specific URL
19
20. 3.3. Hudson
Principals advantages:
Easy installation and use: deploy a .war and easy web interface
An extensible plugin system
Support for distributed compilation based on master-slave systems
Support for multiples machines and project groups
It is completely Free Software
20