automated unit testing and continuous integration
TRANSCRIPT
AUTOMATED TESTS WITH PHPUNITIS A PUZZLE.
CONTINUOUS INTEGRATION IS THEMISSING PIECE
sachityoungInnovations
THE "WHAT"- just code testing another code
-- means using an automation tool to execute your test suite
--- a process using software tools to execute pre-scriptedtests on an application before releasing into production
THE "WHY"- manual testing of all work flows, all scenarios andeverything else is time and cost consuming
-- doesn't require human intervention
--- increases speed and accuracy of test execution
---- a lot of code coverage
UNIT TESTS
testing a small independent part of code
database independent
minimal or no file system dependence
isolated
deterministic
so it is fast
WHY UNIT TESTS ?find problems early in the dev cycle
they facilitate change
they are good documentations
its fun..
source http://devopsreactions.tumblr.com
Martin Fowler's Test Pyramid
source http://martinfowler.com
HOW DO WE WRITE UNIT TESTS?setup everything for testing
mock dependencies
trigger the method being tested
verify the results, that they are correct
class ExampleClass extends someClass protected $person;
public function __construct(Person $person) $this>person = $person;
public function create(array $details) return $this>person>create($details);
class exampleTest extends someTestCase protected $person; public function setup() parent::setUp(); $this>person = \Mockery::mock('\Person'); $this>exampleClass = new ExampleClass($this>person);
public function tearDown() parent::tearDown(); m::close();
public function testItShouldCreateAPerson() $this>person >shouldReceive('create') >once() >with(['name' => 'HisName', 'age' => 30]) >andReturnSelf();
$this>assertInstanceOf('\Person', $this>exampleClass>create( ['name' => 'HisName', 'age' => 30]) );
public function tearDown()
unit tests..??how do we write GOOD
structure is important
consistent naming
mock everything you need
and write code that can be mocked
testable code
readable tests
phpunit is the most popular and the de facto unit testingframework in PHP
source Google
THE MISSING PIECEContinuous Integration
a development practice that requires developers tointegrate code several times a day
allowing teams to detect problems early
each push is verified by an automated build
the goal is to provide rapid feedback incase a defect isintroduced
CI is important because....
ensures on a continuous basis that you have a workingproduct
help detect bugs very early
WHY ?SHIPPABLEit's free for private repo
supports docker
has unlimited builds
a lot of other cool features
WHAT DOES IT DO?
pulls changes from your repo and runs a build every timeyou push anything
notify you of the success/failure of the build
you can even set it to notify you on hipchat
source http://geshan.com.np
ENCOURAGE
EXPLORE
...
THANK
specially geshan dai
HELP
INCITEMENT