Thursday, 3 January 2013

Agile Testing - Part 3 - More on Scrum


SCRUM Ceremonies

Sprint Planning meeting:
 1st Part:
  •        Creating Product Backlog
  •        Determining the Sprint Goal.
  •        Participants: Product Owner, Scrum Master, Scrum Team 
 2nd Part:
  •        Participants: Scrum Master, Scrum Team
  •        Creating Sprint Backlog

Daily Scrum 

Each day during the sprint, a project status meeting occurs. This is called a daily scrum, or the daily standup.
This meeting has specific guidelines: 

  •  Lasts about 15 minute
  •  What was achieved since the last meeting?
  •  What are the impediments to your tasks?
  •  What will you achieve before the next meeting?
Sprint Review meeting

  •  Team presents what it accomplished during the sprint
  •  Typically takes the form of a demo of new features or underlying architecture
  •  Lasts for about 4 hours
Sprint Retrospective meeting

  •  All team members reflect on the past sprint
  •  Make continuous process improvements
  •  Two main questions are asked in the sprint retrospective:
            What went well during the sprint?
            What could be improved in the next sprint? 

  •  Three hour time limit

Artifacts:

Product Backlog
  •   A list of all desired work on the project Usually a combination of
               story-based work
               task-based work

  •   List is prioritized by the Product Owner typically a Product Manager, Marketing, Internal Customer, etc.
Sprint Backlog
               
  •  A subset of Product Backlog Items, which define the work for a Sprint
  •  Scrum team takes the Sprint Goal and decides what tasks are necessary
  •  Team adds new tasks whenever they need to in order to meet the Sprint Goal
  •  Team can remove unnecessary tasks
  •   are updated whenever there’s new information

Sprint Burn down Chart     
          
  •  Depicts the total Sprint Backlog hours remaining per day
  •  Shows the estimated amount of time to release
  •  Ideally should burn down to zero to the end of the Sprint
  •  Actually is not a straight line
  •  Can bump UP

Difference Between Waterfall and Scrum

Waterfall Model

  • It follows a very logical path, first do a thorough study on the customer requirements and then freeze the requirements.
  • Frozen Requirement Spec is then analyzed by the design team and a complete design document gets written, documented and reviewed by every stake holders.
  • Design document gets translated in to the product and gets tested/verified by a group of verification engineers/customers etc.
  • Once the product is released in to the market, enters in to maintenance mode.

Scrum Model
  • Team takes a shorter step in a fixed iterative manner
  • Team along with the Stakeholders/Customers inspects what was developed and adapts changes as needed as per customer requirements. Customer comes to know in a shorter time about the product they are waiting for. They can provide comments etc
  • Scrum encourages changes – team wants customer to have the best possible product that improves/enhances lives of customers. Where as Waterfall Model discourages changes at the later stages.
  • Scrum understands that good ideas can come at any time during the project. Waterfall model does not.


Tuesday, 1 January 2013

Agile Testing- Part 2 - SCRUM it



What is SCRUM

Scrum is an iterative, incremental methodology for project management often seen in agile software development,  a type of software engineering.
Scrum is a process skeleton that contains sets of practices and predefined roles.

The main roles in Scrum are:

  1. the “ScrumMaster”, who maintains the processes 
  2. the “Product Owner”, who represents the stakeholders and the business 
  3.  The “Team”, a cross-functional group of about 7 people who do the actual analysis, design, implementation, testing, etc. 

Scrum Framework

Roles :Product Owner , Scrum master, team
Ceremonies : Sprint Planning, Sprint Review, Sprint Retrospective, & Daily Scrum Meeting

Artifacts : Product Backlog, Sprint Backlog, and Burndown Chart

Original SCRUM Diagram


SCRUM Roles

Product Owner 
  • Represents the voice of the customer
  • Is accountable for ensuring that the Team delivers value to the business. 
  • Writes customer-centric items (typically user stories), prioritizes themand adds them to the product backlog.

Scrum Master
  • Interface between the management and the scrum team
  • Typically progress of Scrum Team Members
  • Responsible for removing impediments that stall the make
  • quick decisions based on incomplete data
Scrum Team
  • Cross Functional
  • The Team is responsible for delivering the product.
  • Team is typically made up of 5–9 people with cross-functional
  • skills who do the actual work

Monday, 31 December 2012

Agile Testing - Part 1


What is Agile Testing?
Agile as name suggest implies something to perform very quickly. Hence Agile testing refer to validate the requirements as soon as available. Once the build is out, testing is expected to get started and report the bugs quickly if found any. Testers role not only limited to just being audience but to provide the thoughts on the client requirements. Emphasis has to be laid down on the quality of the deliverable in spite of short time frame which will further help in reducing the cost of development and your feedbacks will be implemented in the code which will avoid the defects coming from the end user.

Advantages offered by Agile Methodology:
The very first advantage that the company got to see with the Agile Methodology is the saving of time and money. There is less documentation required though documents help to a great deal in verifying and validating the requirements but considering the time frame of the project, this approach leads to focus more on the application rather than documenting the things. Since it is iterative in its form, it tends to have a regular feedback from the end user so that the same can be implemented as soon as possible. And because all phases of SDLC need to be completed very quickly, there is a transparency to each individual working on the project with the status of each phase. 

Another advantage that Agile Methodology offers to other approaches available is that in case there is any Change request or enhancements come in between any phase, it can be implemented without any budget constraint though there needs to be some adjustment in the already allotted time frame which will not be a difficult task for the projects following Agile tactics.
Daily meetings and discussions for the project following Agile approach can help to determine the issues well in advance and work on it accordingly. Quick coding and Testing makes the management aware of the gaps existing in either requirements or technology used and can try to find the workaround for the same.
Hence, with the quicker development, testing and constant feedbacks from the user, the Agile methodology becomes the appropriate approach for the projects to be delivered in a short span of time.

Well-known agile software development methods include:

  • Agile Modeling
  • Agile Unified Process (AUP)
  • Crystal Clear
  • Crystal Methods
  • Dynamic Systems Development Method (DSDM)
  • Extreme Programming (XP)
  • Feature Driven Development (FDD)
  • GSD
  •  Kanban (development)
  • Lean software development
  • Scrum
  • Velocity tracking

Saturday, 29 December 2012

Why Automated Testing?



Every software development group tests its products, yet delivered software always has defects. Test engineers strive to catch them before the product is released but they always creep in and they often reappear, even with the best manual testing processes. Automated software testing is the best way to increase the effectiveness, efficiency and coverage of your software testing.

Manual software testing is performed by a human sitting in front of a computer carefully going through application screens, trying various usage and input combinations, comparing the results to the expected behavior and recording their observations. Manual tests are repeated often during development cycles for source code changes and other situations like multiple operating environments and hardware configurations. An automated software testing tool is able to playback pre-recorded and predefined actions compare the results to the expected behavior and report the success or failure of these manual tests to a test engineer. Once automated tests are created they can easily be repeated and they can be extended to perform tasks impossible with manual testing. Because of this, savvy managers have found that automated software testing is an essential component of successful development projects.
Some of the benefits of using Automation testing as follow.

Automated Software Testing Saves Time and Money
Software tests have to be repeated often during development cycles to ensure quality. Every time source code is modified software tests should be repeated. For each release of the software it may be tested all the functionality on the application software with different configuration. Manually repeating these tests is costly and time consuming. Once created, automated tests can be run over and over again at no additional cost and they are much faster than manual tests. Automated software testing can reduce the time to run repetitive tests from days to hours. A time savings that translates directly into cost savings.

Automated Software Testing Improves Accuracy
Even the most conscientious tester will make mistakes during monotonous manual testing. Automated tests perform the same steps precisely every time they are executed and never forget to record detailed results.

Automated Software Testing Increases Test Coverage
Automated software testing can increase the depth and scope of tests to help improve software quality. Lengthy tests that are often avoided during manual testing can be run unattended. They can even be run on multiple computers with different configurations. Automated software testing can look inside an application and see memory contents, data tables, file contents, and internal program states to determine if the product is behaving as expected. Automated software tests can easily execute thousands of different complex test cases during every test run providing coverage that is impossible with manual tests. Testers freed from repetitive manual tests have more time to create new automated software tests and deal with complex features.

Automated Software Testing Does What Manual Testing Cannot
Even the largest software departments cannot perform a controlled web application test with thousands of users. Automated testing can simulate tens, hundreds or thousands of virtual users interacting with network or web software and applications.

Automated Software Testing Improves Team Morale
This is hard to measure but we’ve experienced it first hand, automated software testing can improve team morale. Automating repetitive tasks with automated software testing gives your team time to spend on more challenging and rewarding projects. Team members improve their skill sets and confidence and, in turn, pass those gains on to their organization.

Happy Testing!!!!!!