February 13, 2023

Agile Values | Agile Values Vs Principles | Agile Values Explained | Agile Manifesto Values | Agile Software Development

This blog post is on Agile values. Four Agile values explained with examples in this post. The Agile Manifesto is a collection of values and principles behind those values for Agile software development and Agile software testing. View my Agile Values and Agile Values Vs Principles video below or read on.

Agile methodology aims to develop software in an efficient and flexible way. The first of core Agile values is individuals and interactions over processes and tools. So an Agile team may have regular face-to-face meetings with the product owner and the client to show the working software and gather feedback. The Agile team may work in pairs for more knowledge sharing.

Next in Agile core values is working software over comprehensive documentation. Now in Agile development, the team values the item on the right also, which is documentation but the Agile team values the item on the left more. So focusing on working software as one of the values of Agile, the team may deliver working software incrementally on a regular basis, like every two weeks, without worrying about detailed documentation. In addition, the team may use automated testing to get feedback about software quality.

The next in four values of Agile is customer collaboration over contract negotiation. In Agile project management, the team collaborates with the product owner or the client directly to get the requirements and share updates about the working software instead of using a detailed contract containing the project scope. This collaboration helps create a culture of trust in the Agile project. Question: a customer is too busy to provide feedback during a project and just wants everything to be as specified in the purchase order. Which Agile value does this violate? The answer is customer collaboration over contract negotiation. By not providing feedback, the customer is not collaborating. Due to this, the team may fail to deliver the correct software because everything cannot be spelled out in the contract, that is referred to in the purchase order. 

The last in Agile four values is responding to change over following a plan. This value of Agile makes a team welcome change. The team may use Agile practices instead of following a fixed plan. The team may also conduct retrospectives, which are meetings to analyze their Sprint and adapt their processes accordingly. Question: after the Agile team began the development, the client wants to change the scope of the project so the team decides to use Agile practices like user stories, backlogs and sprints to manage and prioritize the project requirements. Which Agile value is the team observing? The answer is responding to change over following a plan. These Agile practices will allow the team to respond to change better.

After four core values of Agile, you should also know about 12 Agile principles. The Agile Manifesto principles are detailed guidelines for the Agile values. The difference or Agile values vs principles is that the principles give guidelines on how to actually observe the Agile values in the project. Here is my summary of 12 Agile principles. Customer satisfaction is the highest priority. The team should achieve customer satisfaction by continuous delivery of value in working software. Also the team should welcome changing requirements. The team should reflect at regular intervals and change the processes to become even more effective. The team should have soft skills like collaboration, motivation and the team should be empowered. Face-to-face communication is the most effective way to exchange information within the team. The team should focus on technical excellence and simplicity in the software

Want to learn systematically and with more examples? View my Agile values video. Thank you 🙏

February 06, 2023

BDD with BDD full form (BDD stands for) | BDD Cucumber | BDD meaning | BDD testing | BDD vs TDD

Do you want to know the difference between BDD, TDD and ATDD? View my BDD, TDD and ATDD video or read this blog post.

 
In this blog post, I will explain what is BDD, what is Test Driven Development and ATDD vs TDD. BDD full form is Behavior Driven Development. Here is a Behavior Driven Development example. A Feature is a higher-level functionality provided by the system so for example a Feature can be place an order. A User Story explains the system behavior in non-technical language that everybody on the team can understand. The example of a User Story for the place an order Feature is As a customer I want to be able to place an order on the e-commerce website so that I can purchase the items that I need. 
 In the Cucumber Test there is the Scenario, which gives us steps and expected results of a test. So for example, the Scenario is successfully place an order. Given means the preconditions of the Scenario so Given a customer is on the website And the customer has added items to their shopping cart. When means the actions or operations or the steps of the test. When the customer clicks the checkout button. Then means the expected result. Then the order is successfully placed. In Java, this User Story may be implemented by using a public class like OrdersUtility, which is going to have a public method called placeOrder and it needs an Item object and the Customer object. There is a list of items placed by the customer in their shopping cart and a customer. So using a list of item objects and the customer object, the developers have to write the code to process in order and update the database.
 
BDD stands for Behavior Driven Development. BDD is used in Agile software development. As introduction to Behavior Driven Development, you should know that its focus is on system behaviors or application behaviors. BDD uses User Stories that explain the system behavior in a non-technical language. BDD testing uses Tests to verify those system behaviors. In BDD, the common Behavior Driven Development software testing tools are Cucumber that allows tests to be written in English. Cucumber may be used in a BDD Cucumber framework with Selenium. JBehave is used for testing web applications. SpecFlow is a tool for testing .NET applications. JBehave and SpecFlow allow tests to be written in a natural language syntax. 
 
TDD full form is Test Driven Development. The focus of Test Driven Development in software engineering is on system requirements and to write code so that it is simple to test the individual components. Test Driven Development vs Behavior Driven Development uses functional requirements and tests. Also, the common testing tools are different in Behavior Driven Development vs Test Driven Development or BDD vs TDD. In TDD the common testing tools are JUnit for testing Java applications or NUnit for testing.NET applications. If you want to know ATDD vs TDD, ATDD full form is Acceptance Test Driven Development. In Acceptance Test Driven Development ATDD, the focus is on system requirements of the whole system, which is different from TDD's focus on requirements of individual components. ATDD uses Acceptance Criteria which is commonly documented as User Stories and Acceptance Tests. In ATDD, the Acceptance Tests are written before writing the code that would pass those Acceptance Tests. The common testing Tools in ATDD include FitNesse, which allows writing Acceptance Tests in natural language syntax, Cucumber or JBehave. 
 
I hope that you know BDD meaning and have an idea about BDD Behavior Driven Development, ATDD and Test Driven Development TDD in Agile. If you want to understand BDD with more examples, please view my BDD video. Thank you!

January 30, 2023

Agile Backlogs: Understanding Product, Sprint and Bug Backlogs

Are you a QA, Software Engineer or Product Owner who wants to understand backlogs in Agile and Scrum? View my Backlog Agile video or read on.

Agile development is about adaptability, collaboration and continuous delivery of value to the customer. Agile uses the concept of backlogs. I will explain what is Backlog in Agile and Scrum, what are the types of Backlogs in Agile methodology, the relationship of Agile Product Backlog to Bug Backlog and Agile Product Backlog vs Sprint Backlog, who writes the backlog items in Agile and where to put bug fixes in Agile.

First, what is Backlog in Agile? It is pending work that will bring value to the customers. It is a list of items that need to be completed in the project and includes features, user stories and other tasks. What are features in Agile Scrum backlog? They are higher level functionalities provided by the system, for example a feature for users to customize their profiles and another feature to give personalized recommendations to users based on their past transactions. What are user stories? A user story explains a software feature in non-technical or business language. What are the other tasks in Agile Product Backlog? They are tasks to achieve the project goals but each task should provide value to the users for example refactor the code to improve performance, update the test scripts, system testing or QA testing focusing on functional testing and performance testing or update user documentation. 

There are three types of backlogs in Agile:

1) The primary or biggest backlog in Agile is the Product Backlog. It contains all the items that need to be done in the project, and it's the responsibility of the Product Owner to add items to it and prioritize them by business value. 

2) The Sprint Backlog is a smaller backlog. It contains all the items that need to be done in the current sprint. The Developers select items from the Product Backlog, estimate the efforts and add them to the Sprint Backlog.

3) When it comes to bug fixes, the Agile approach is to address them as soon as they are discovered. The Bug Backlog is a list of all the known bugs that need to be fixed in the project. The Product Owner is responsible for prioritizing the bug fixes, based on their impact to the users and customers.

There are different ways to handle the Bug Backlog, depending on the team's preference. One approach is to keep the Bug Backlog separate from the Product Backlog. This allows the Product Owner to focus on prioritizing the bug fixes without being overwhelmed by other items in the Product Backlog. However, this approach also introduces more overhead work for the team.

The typical approach is to include the Bug Backlog within the Product Backlog. This approach simplifies the process of prioritizing bug fixes, as the Product Owner can address them alongside other items in the Product Backlog. However, this approach makes it more difficult to track the status of bugs, as they are mixed in with other items.

In order to manage the Bug Backlog, the team can use a tool like Jira to prioritize and track the Product Backlog Items (PBI). The Product Owner can create Product Backlog Jira by adding items, setting their priorities and assigning items and the progress can be tracked by the Agile Scrum Master, Developers and other team members. 

In conclusion, the create Backlog and Sprint in Agile process is that the Product Owner adds PBI's including bug fixes needed to Product Backlog, prioritizes each PBI and cleans up the PBI's, as needed. Then for each Sprint, the Developers select the PBI's, estimate them and commit to deliver them in the Sprint. I hope that now you know about Agile backlogs, which are Product Backlog, Sprint Backlog and Bug Backlog. Thank you 🙏