Tuesday, December 30, 2014

Certified Scrum Developer (CSD) Vs Certified Professional - Automated Agile Testing (CP-AAT)

Program Name Certified Scrum Developer (CSD) Automated Agile Testing (CP - AAT)
Certification Authority Scrum Alliance Agile Testing Alliance
Recognition All over world Very little and only in India and Malaysia
Website URL https://www.scrumalliance.org/certifications/
Participant Level Developer, Tester, Scrum Master, Agile Coach Developer and Tester
Prerequisite No prerequisite CP-BAT (certified Professional - Basic Agile Testing)
Duration of Training 5 days 3 days
Course fee 39,000 INR 35,000 INR
Course outline Agile Values and Principles
Difference between Waterfall and Agile
Scrum Framework
Scrum Roles, Artifacts and Ceremonies
Agile Estimation and Planning
Writing user story and acceptance criteria
Test Driven Development using junit/nunit
Refactoring, Patterns and Anti-Patterns
When and how to Refactor
Collaboration and Pair Programming
Continuous Integration
How to use TDD with Continuous Integration
Behavior Driven Development using Cucumber
How to use Selenium with Cucumber
Agile Values and Principles
Scrum Framework
Scrum Roles, Artifacts and Ceremonies
Test Driven Development using junit/nunit
Refactoring, Patterns and Anti-Patterns
Behavior Driven Development using Cucumber
Acceptance Test Driven Development using Fitnesse
How to use Selenium with Cucumber

How to start TDD (Test Driven Development)?

This is a most common question I here in my training as soon as I say TDD is based on test first approach and we should write test before writing code. If you are already writing unit test for your code after writing code then moving on TDD is easy for you but many developers don’t even write unit test. If they write then they write functional test instead of unit test.

How to differentiate between unit test and functional test?
Developers often write functional test as unit test and ask how is different between tests written by testers. Answer is testers write more negative test cases compare to developers as part of functional test. Basically developers write test NOT to check a unit of code but to check a slice of functionality. This is not unit test. Unit test is for one unit of code like one method, one code block, interface, class or function and functional test is for a piece of functionality after integrating all related code. 

How to switch from functional test to unit test?
Until developer understand what unit test is and how to write an independent unit test to check piece of code, moving to TDD will not be easy. Usually developer start coding either from UI then middle tier OR database then middle tier so if you ask them to write business layer or controller directly without UI or DB, they struggle. I do see few developers have started writing unit test using unit testing framework but for different purpose. Purpose is to meet some agreed condition related to code coverage but if you go and look at it closely then again those tests are not unit test but functional test. Developers need to explore or get trained on writing unit test and practice it under guidance of coach for some time to make it habit. This will only happen when you understand importance of unit test and can think what exactly your code is supposed to do. Nowadays developers has good unit testing framework like junit, testing, nunit and ftest as well as need for unit test. So only missing thing is how to write good unit test.

Shift from code first to test first
This is another big area where many developer say how someone can write/think or execute test until code is not there. Since we all know our expectation from our code, so it is only about writing those expectations and nothing more. Believe in this idea that if I don't know how to test piece of code I am writing then most likely those code is not needed. TDD is not a testing practice but a development practice. It helps you to design code piece by piece to meet end goal. 

How to start writing TDD?
Take any existing application and try adding new code in system but think about how you will test your code? Whatever you can think, add those as unit test one by one and then write minimum code that can satisfy your each test. I have seen many team members going through this route and adopting TDD and I am sure you can also do that.

Wednesday, December 17, 2014

Is Agile and Scrum same? What is Agile and what is Scrum?

Agile is a software development framework that has become popular is last 10-12 years. Agile software development helps in faster software delivery, continuous incremental delivery and faster feedback. 

In February 2001, 17 software professional met at the Snowbird resort in Utah to discuss lightweight development methods. They prepared and published Agile Manifesto for Software Development. As per manifesto any methodology that follow below 4 core values will be considered agile software development methodology.

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

17 people name who signed Agile Manifesto - Kent Beck, James Grenning, Robert C. Martin, Mike Beedle, Jim Highsmith, Steve Mellor, Arie van Bennekum, Andrew Hunt Ken Schwaber, Alistair Cockburn, Ron Jeffries, Jeff Sutherland, Ward Cunningham, Jon Kern, Dave Thomas, Martin Fowler, Brian Marick
Source: Wikipedia-Photo taken by Maree Reveley (aka Somerslea)
Scrum is most popular approach to achieve agility but Scrum is one the methodology. Other popular methodology is eXtreme Programming (XP), Lean, Kanban and DSDM etc. Beside Scrum, other also becoming popular over the period especially to fill the gap in Scrum process.

Scrum covers 3 roles, 4 ceremonies and 3 artifacts. Scrum doesn't suggest any engineering practices but over the period XP practices has been adopted as a common agile engineering practices. These agile engineering practices becoming more popular after scrum alliance launched Certified Scrum Developer course.

Scrum roles are Product Owner, Scrum Master and Development team. Scrum Ceremonies includes Sprint Planning, Daily Scrum, Sprint Review and Sprint Retrospective. Scrum Artifacts are Product Backlog, Sprint Backlog and Increment (Potentially Shippable Product).

Reach out to us if you want to know more about agile and Scrum on www.izenbridge.com