The document discusses continuous feature development. It defines a feature as a set of expected functional behaviors from a client. Continuous feature development involves incrementally building these expected behaviors. This approach is needed because clients' expectations, business needs, user perceptions, and competitive advantages are continually changing. Managing continuous feature development presents challenges like integrating new features, maintaining stability, seamless integration, and managing trust. The document recommends practices like acceptance test-driven development, test-driven development, behavior-driven development, continuous integration, coding in feature branches, code reviews, maintaining a production branch, using staging servers, and continuous integration to help address these challenges.
8. Continuous Feature Development
Challenges ?
• Integrating new feature
• Maintaining existing stability
• Maintaining new development
• Making sure of seamless integration
• Managing trust
13. How it should be (buzz words) ?
• Acceptance test driven development
• Test Driven Development
• Behavior Driven Development
• Continuous Integration
15. #1 Collecting acceptance criteria
• Know what exactly client wants
• Ask lotta questions to get full picture
• Ask for mockup
• Split story into several acceptance criteria
• For example –
User wants to login
– Which user ? – any user
– Requires what ? – user id and password
– How many attempts ? – probably 3
16. Available tools
• Pivotal tracker – http://pivotaltracker.com/
• You can use any issue tracker
• Trello Board - http://trello.com
• Trac (or any wiki)
• Or notepad
17. #2 Test first development
’Login'
with valid email and password
it should say 'Login successful'
it should create user session
with wrong email address
it should say ‘unsuccessful login'
it should not create user session
with wrong password
it should say ’unsuccessful login'
it should not create user session
19. BDD using Behat 1
Feature: ls
In order to see the directory structure
As a UNIX user
I need to be able to list the current directory's contents
Scenario: List 2 files in a directory
Given I am in a directory "test"
And I have a file named ”file1.txt"
And I have a file named ”file2.txt"
When I run "ls"
Then I should get:
"""
file1.txt
file2.txt
20. BDD using Behat 2
class FeatureContext extends BehatContext
{
/**
* @Given /^I am in a directory "([^"]*)"$/
*/
public function iAmInADirectory($dir)
{
if (!file_exists($dir)) {
mkdir($dir);
}
chdir($dir);
}
} Source - http://docs.behat.org/quick_intro.html
21. Unit test using PHPUnit
class ArrayTest extends PHPUnit_Framework_TestCase {
public function testNewArrayIsEmpty() {
$fixture = array();
$this->assertEquals(0, sizeof($fixture));
}
public function testArrayContainsAnElement() {
$fixture = array();
$fixture[] = 'Element';
$this->assertEquals(1, sizeof($fixture));
}
}
Source - http://www.phpunit.de/manual/3.2/en/writing-tests-
for-phpunit.html
22. #3 Don’t say “Hello it’s done” without
running all tests
24. #4 Code in feature branch NOT in
master!
• Master (Main code stream)
– Branches
• Fix_bug_with_validation
• Add_xyz_module
• Migrate_to_php_5_3
25. Example using GIT
• Create new branch
– $ git branch < branch name >
• Checkout specific branch
– $ git checkout < branch name >
• Update branch from master
– $ git rebase master
29. #7 Use staging server
• Deploy in staging server first
• Run test suites
• If not passes test go through
– Fix again – write supporting test – deploy in
staging server - Retest – Human test
30. #8 Continuous Integration
CI ser ver
Code repositor y
Dev
Build failed
Build successful
Staging/ test/ qa ser ver
33. Let’s summarize our talk
• #1 Collecting acceptance criteria
• #2 Test first development
• #3 Don’t say “Hello it’s done”
without running all tests
• #4 Code in feature branch NOT in master
• #5 Code review
• #6 Maintain production branch
• #7 Use staging server
• #8 Continuous Integration
• #9 Ensure revertible deployment
35. Who are we ?
nafi ul karim nhm tanveer hossain
senior software engineer, khan (hasan)
somewhere in… head of technology,
nafi@somewherein.net somewhere in…
founder, www.khadok.com
hasan@somewherein.net
passion – new stuffs,
diversity on work,
challenges, learning new work for fun!
things, open to all languages. Code on rails, java, node.js,
php
Editor's Notes
Explain about client
Offline businessOnline businessBranded clothingAll these occurs development