2. 2
Developer-Level Testing
developers are responsible for validating tests before committing code
Regression Tes,ng
04 Smoke Tests
Integra,on Tests
Unit Tests
03
02
01
Regression
A test that was wri;en when a
bug was fixed. It ensure that
this specific bug will not occur
again. The full name is "non-‐
regression test". It can also be
a test made prior to changing
an applica,on to make sure
the applica,on provides the
same outcome.
Smoke
A simple integra,on test where
we just check that when the
system under test is invoked it
returns normally and does not
blow up. It is an analogy with
electronics, where the first test
occurs when powering up a
circuit: if it smokes, it's bad.
Integra,on
Test the correct inter-‐opera,on
of mul,ple subsystems. There
is whole spectrum here, from
tes,ng integra,on between
two classes, to tes,ng full
integra,on with the live
database and the produc,on
environment.
Unit
Specify and test one point of
contact of a single method of a
class. This should have a very
narrow and well defined scope.
Complex dependencies and
interac,ons to the outside
world are stubbed or mocked.
3. 3
Acceptance Test
Test that a feature or use case
is correctly implemented. It is
similar to an integra,on test,
but with a focus on the use
case to provide rather than on
the components involved.
System Test
Test that tests a system as a
black box. Dependencies on
other systems are oPen
mocked or stubbed during the
test (otherwise it would be
more of an integra,on test).
Pre-‐Flight Check
Tests that are repeated in a
produc,on-‐like environment,
to alleviate the 'builds on my
machine' syndrome. OPen this
is realized by doing an
acceptance or smoke test in a
produc,on-‐like environment
System-Level Testing
system tests are run after code has been merged and deployed to integration environments
4. 4
Pre-‐Flight Check
Smoke Tests
Unit Tests
Near-term mobile platform testing suffers from the
resource-constrained nature of the mobile engineering
department. Due to this restriction, our process for
mobile testing is compressed.
Unit Tests are written for functionality that would be
difficult to manually test.
Smoke Tests are written for major functionality, and
represent a broad spectrum of basic testing.
Acceptance Tests are now performed manually on the
mobile side of the house.
Pre-Flight Check is also a manual step in Q1, in order to
meet deadlines. The goal is to make this step automatic
by Q3 2015.
Mobile Platform Testing
Acceptance Test
Mobile Platform Testing
mobile testing processes are resource-constrained in Q1 2015
5. 5
Test-‐driven development (TDD) is a soPware development process that relies on the repe,,on of a
very short development cycle: first the developer writes an (ini,ally failing) automated test case
that defines a desired improvement or new func,on, then produces the minimum amount of code
to pass that test, and finally refactors the new code to acceptable standards.
TASK ASSIGNED BUILD TESTS WRITE CODE TEST
REVIEW
DEPLOY
COMMIT
Test-Driven Workflow Overview
JIRA workflow for test-driven development
6. 6
Test-Driven Development Integration Tools
Technologies exist for facilita,ng test-‐driven development and managing workflows associated
with implemen,ng this process. These tools are instrumental in helping developers see TDD as a
tool rather than a burden.
Maven UnitTest Jenkins JIRA Selenium
Technology Integration
tools and technologies used in test-driven development