2 min read

Test Driven Development

By Praecipio Consulting on Apr 28, 2021 11:15:00 AM

Blogpost-display-image_Test Driven DevelopmentWhen we're in the process of creating a product, we want to see the end result. We have a vision of what the product will look like and how we want to get there, so it's tempting to try to get the product running as quickly as possible. However, if and when the product breaks or needs to be updated, we are going to be responsible for fixing it. With that in mind, we look toward Test Driven Development (TDD)

Nobody likes folding laundry. It takes time, and not everyone appreciates the results (at least not initially). The next morning is a different story: When you wake up to a crisp stack of folded shirts, choosing an outfit is easy - there's no rummaging through a laundry bin and you know exactly what's ready to wear. Sometimes, an initial time investment such as folding laundry, can help us out in the future.

Testing the Feature

We could test manually, going through our list of features and testing each feature to make sure the product is operating as intended. Or, we might write automated tests once the product is finished. But like rummaging through a laundry bin, working through this retroactively can be complicated and we may miss important information.

Many developers use TDD to prevent dealing with this "laundry". Instead of writing tests during the QA phase of development, developers write automated tests before anything else. Imagine a developer adding a new feature to software that allows the user to change the color of the background. The developer first writes an automated test to check whether the background color is changed once a button is clicked. The test may initially fail. They would then add the functional code and use the automated test to make sure the feature works.

Why would a developer want to spend extra time writing tests before building a product?

First of all, TDD keeps development simple and goal-focused. Features are added only when they can pass a specific test. This means that the developer has to make sure that each feature is necessary and the objective of that feature is clear. With no objective, it's impossible to write a test to pass your objective.

The TDD time investment leads to time savings in the future. Although it takes more time to include automated tests in the initial development of a product, there is potential for time savings in the future. When a product breaks, it's clear which part of the code is causing the failure. This means that QA may go more smoothly as bugs or product upgrades arise.

Test Driven Development-1Conventional development vs. Test Driven Development. Using TDD requires an initial time investment but can lead to time savings long-term.

Of course, TDD processes aren't the best for every team. When there are too many possible test cases (often seen in GUI development) it can become impossible to write tests for every functional situation. Like any set of processes a team uses, think about what makes sense for your situation. Does the product have finite requirements? Has QA testing used eaten away hours of time due to buried bugs? Making an early time investment can keep things orderly. Even if your sock drawer is destined to be a mess, think about how you're building your products.

Want to learn more about testing? Check out Could Testing Be the Missing Link for Effective Agile Transformation.

Topics: blog best-practices plan testing development agile
4 min read

Do testers need to be in sprint planning?

By Marcelo Garza on Mar 3, 2021 11:30:58 AM

Blogpost-display-image_Why do testers need to be in sprint planning-In today’s business environment, high-speed implementation is a must. This applies to all products and services. Suppose you were using an application and got stuck because of a bug: after reporting the bug, you expect the team to fix it as soon as possible. If not, your next move is probably going to be switching to another service.

Software companies want teams working together providing quick and on point solutions to save time and resources, which can only be accomplished by the involvement of all of the teams working on a project. That’s why companies are opting for testing with Agile teams, since it allows for a greater collaboration across teams on a project. 

Agile allows a key collaboration between testing teams and developers which can’t always be accomplished with traditional approaches. It enables testers to share their perspective from the start of the sprint planning; this leads to less bugs during testing and creates a better possibility for sprint delivery dates to be met on time.

Let’s dig a little deeper to understand what this means.

The objective of Agile/sprints/scrum 

Agile methodologies were born as an alternative to traditional software development approaches, like waterfall methodology. 

The following images show the big difference between agile and waterfall methodologies. (Source)

wCXkvvXwQxlBYxwzr_327Yp6iURV_I96Tp1aH_7sZ_o-nN_WgAHqwLsCGZhKraLYAj96nyay0z6VH3GqeZvv7HdSwF1OCGvp

On one hand we can see that the traditional approach (Waterfall) aims to understand user needs and develop a product. After development, testers test the product and report bugs before deployment. The development team then works on them and fixes any errors using the best possible solution. This is progress through phases, one starts only when the previous one ends; this does not create an opportunity for proper feedback or collaboration between testing, developers and users teams.

On the other hand, Agile is mainly focused on performing constant, small deliveries of the product in order for the customer to be able to see how the product advances through the lifecycle. This gives the opportunity for testing to take on a bigger role and to get involved at an early stage of product development and throughout all the lifecycle of the product.

Agile has four important values:

  1. The focus should be more on individuals and interactions instead of processes and tools

  2. Working software is more important than comprehensive documentation

  3. Customer collaboration is more vital than contract negotiation

  4. The process should respond to change rather than follow a plan

Testing in sprint planning: The goal of sprint planning

During sprint planning, the team discusses which stories they will focus on in the upcoming sprint based on aspects like priorities, time frame, feasibility, etc.

The whole team involved in the development of the product should be involved, and if additional expertise on specific backlog tasks is required, then stakeholders can also be part of it.

Sometimes, during this meeting, the testing team can take a secondary role since the main focus tends to be on the development of the stories; this is understandable since it will set the start of the sprint. However, the testing team's' perspective can lead to some serious benefits for developers.

Why testing should be involved

One flaw of working in traditional testing (i.e. Waterfall methodology) is that during the test case design phase, although testers receive the requirements, most of the time they don't get access to the software they will test until it is time to begin the test execution phase.  It is well known that there is usually a big gap between what a requirement specifies and the actual software developed. 

This leads to a huge time investment on the testing side to reach out to both developers and users to define how the product works and how it should work in order to define the correct test scenarios and test cases.

Agile methodologies give testers the opportunity to be involved in the development of the product from the get-go. Testers can be involved in the design of the software by working closely with developers to assess and advise on testability aspects.

An Agile tester should understand the relevance of technical skills. A tester is always prepared to contribute to the technical discussions of the team. Their contribution may extend up to code reviews, user stories grooming, and understanding requirements. The Agile Software Tester gets to work with the developers when they are performing unit testing and share the perspective of testing from a tester's point of view instead of a developer's. The tester can work collaboratively and productively with the product owner and the customer to form acceptance criteria from the sprint planning itself. 

Before any user story is sent for development, the tester and other team members can discuss the complete user story with the team members to find out what the customer wants. Having testers collaborate with developers from the very beginning of sprint planning helps to achieve more accurate estimations and to ensure that everyone has some testing tasks as part of their responsibilities

Great testing teams know they need to become an extension of the customer and end user. Testers need to understand the customer's needs: an Agile tester should be able to describe the feature as well as the customer.

Drop us a line for expert advice on testing and all things Agile, we'd love to help your teams achieve their true potential.

Topics: blog testing tracking collaboration agile software-development
3 min read

Could Testing Be the Missing Link for Effective Agile Transformation?

By Praecipio Consulting on Feb 20, 2019 7:03:00 PM

NOTE: The following is a guest post by Tricentis Director of Product, Ryan Yackel.

A modern testing platform is a critical, but often overlooked, element of successful agile transformation. Could QA (Quality Assurance) be the missing puzzle piece in your quest to deliver higher quality software faster?

The pace of software development is accelerating, and technology teams face increasing pressure to adopt agile development and continuous delivery models so that their businesses can more quickly respond to customer demand.

But your first-mover advantage will suffer if you are first to market with mediocre software.

If you fail to deliver high-quality digital experiences at the pace today’s users demand, you risk alienating customers. In the case of defect-ridden software, poor user experience, or a catastrophic bug, you risk losing significant market share and damaging your reputation.

Software Testing

In the rush to beat the competition to market, organizations are transforming software development and delivery processes. But too often, business leaders fail to prioritize QA transformation, and QA teams are stuck using ineffective legacy solutions that were built for outdated waterfall environments. The reality is that as long as your testers are using legacy QA tools, your transformation will remain incomplete.

Legacy QA tools like Micro Focus Quality Center cannot accommodate modern development workflows. (Year over year, Micro Focus Quality Center (HPQC) has been among the least recommended testing tools for agile teams in VersionOne’s State of Agile Report.)

Legacy tools do not integrate with open-source automation tools, which limits testers’ options for accelerating test cycles and makes it impossible to integrate QA into continuous delivery pipelines. This means QA teams lack visibility and are not able to test new code as it is written. Development is further delayed when developers cannot quickly access test results and mitigate issues QA has found. As a result, releases are delayed, and quality inevitably suffers.

When testing occurs at the end of a development sprint, bugs are often embedded in the code, where they are significantly costlier and more time-consuming to correct. As a result, the myth of the QA bottleneck persists. Or worse, the QA process is rushed, and organizations end up with defect-ridden releases that fail to provide the high-quality experiences their customers demand.

Development and QA

If you can integrate quality into agile and DevOps processes, instead of treating it as an afterthought, testing can occur almost simultaneously with development. When a tester finds a bug, he or she can alert a developer to address it right then, instead of after lines of dependent code have been written on top.

With the right approach QA can help speed development by helping developers identify potential defects early. That means that QA is no longer pressured to complete testing quickly as the last step in a sprint. With a truly agile testing approach, QA can become a strategic enabler of business success, rather than a bottleneck.

Integrated Testing

Successful agile organizations have adopted modern test management tools like Tricentis qTest to successfully integrate testing into modern development and delivery processes. Tricentis qTest offers a real-time Jira integration and centralizes test automation management across frameworks and tools – including out-of-the-box integrations and a robust API for test automation management. qTest also offers testers in DevOps environments a single platform for unifying tests that run through continuous integration with other tests.

Contact us to learn more about how we can help you accelerate your agile transformation by modernizing testing.

Topics: testing
8 min read

The 4 Phases of Agile DevOps with Atlassian

By Praecipio Consulting on Aug 15, 2016 11:00:00 AM

As Development and IT Ops teams look to be more efficient, decreasing their time to market and increasing product support, DevOps has become the predominant industry solution. There are many resources that paint a picture of the ideal processes for Development and Operations working harmoniously together- but how do we actual get there? Where should we start? 

We need to begin with the end in mind. Our end goal is to deliver customers the software they need as fast as possible. The software industry is faster and more dynamic than the businesses of physical products. We need to get our customers features so they can give us crucial feedback while beating our competitors to market. The faster release development goes from concept to code, the quicker we can make customer happy. DevOps is a broad term with a variety of meanings, but at the end of the day, it seeks to increase the collaboration and automation between Development and Operations so we can get more frequent and higher quality releases into the hands of our customers.

When it comes to collaboration and automation, a focus on process and the use of the Atlassian suite are the best way to get there.

 The infinite loop of developing and supporting products that customers need and want with DevOps and the Atlassian Suite.

Image source: Atlassian 

Selling DevOps

The pain of hectic firefighting and troubleshooting make the need for DevOps obvious on the frontline, but getting alignment and investment at the organization level can be pretty difficult. Successful implementation is going to require buy-in and support from a variety of stakeholders and many levels. Before we can get our hands dirty, we need to convince everybody to spend the time and money to get these processes and tools in place.

Here are three ways to get the ball rolling:

One for the Book Club: Phoenix Project

Everybody has those business books that revolutionize the way they manage their work and companies. The Phoenix Project by Eugene Kim narratively addresses and exposes the gaps in processes between teams and points to a DevOps prescription to unblock cross-team work. We highly suggest recommending it to your teams, as it's a great way to get everybody on the same page and really see the value of DevOps.

Build a Business Case

At the end of the day, businesses exist to make money. To invest time and effort, we need to calculate the business return. The 2016 DevOps report from Puppet Labs does a brilliant job showing the financial reasons to adopt this shift.

The ROI of reducing excess work with DevOps according to 2016 DevOps report from Puppet Labs

Image Source: Puppet Labs

Phase 1: Go Agile

To get the real benefits of DevOps, it requires a shift in mentality and how we manage work through our teams. As we break down our requirements into smaller individual user stories, we can flow the work through the features through the process faster. By having the structure, ceremonies and processes in place to accommodate smaller pieces of work, we can get our customers the features they need and incorporate their feedback to iterate the next, improved release faster.

Here are some helpful ideas to help your teams go more Agile: 

  • Get Up, Stand Up | Simply doing stand-ups doesn't mean you're all the way agile, but it's a great way to get our teams into the mindset. Keep them short and reduce the headaches of status updates and emails. Fill everybody in on what you did yesterday, what you're doing today, and what pesky blockers are in your way. It's facilitates more agile and responsive team collaboration and support (the heart of DevOps).
  • Iterate Everything! | Speed up that Agile transformation, breaking down your waterfall projects into smaller sprints so you can always reprioritize and adjust as needed. Start with your software teams and spread out to your IT Ops projects and even marketing projects. Start in your own department: find the planning spreadsheets with those idealistic due dates, set up a backlog, and start sprinting!
  • Agile Boards | Once you're planning and executing in sprints, track and visualize it on a Jira Software board. Avoid those dreadful status meetings and send out the link to the board to keep everybody informed. Also, throw some wallboards up around the office so everybody can see your team killin' it. 

You'll know you're a lean, mean, agile machine when your software teams are cranking out stories in a steady cadence of sprints. Over time you'll see that velocity stabilize - then you can accelerate!

Phase 2: Get with Gitflow 

Git and Gitflow is a great way to help our dev teams increase velocity. As we're working with smaller stories, we need to be able to collaborate effectively with on our code base so we're not stepping all over each other. Version control systems of the past aren't going to be able to keep up with our blazing fast development teams. Bitbucket and the underlying technology of git are going to let our teams build user stories and merge them into the code base without wasting time messing with annoying versioning issues and costly code conflicts. 

  • Start with the Basics | Start by learning (allthethings) about how to effectively manage your branches and build in code quality with Atlassian's Git Tutorials and the Git Getting Started guides. Share them with your team so everybody's on the same page and knows the difference between a commit and a pull request.

  • Move to Git | If you haven't made the cutover to Git quite yet, get your team and managers onboard by sharing the benefits and how it will help ship more code. Once folks are convinced, learn why Bitbucket is the Git solution for professional teams and helps with pull requests, branching strategies, permissions and scalability. When it's time to actually move all that code over, see how we helped Splunk get git and 4 times the number code reviews completed. 
  • Start Branching | With the tools in place, it's time to start branching! Learn more about some common workflows to better handle branches here. Utilize those pull requests to build in code quality as you go. Eventually your Dev team will be humming with full Gitflow and your Ops teams will be in love with the clearly designated branches.

  • Automate, Mate | The marvelous integration between Bitbucket and Jira Software lets us automatically update the Jira issues based on what's going on in Bitbucket. Developers don't need to switch context anymore to keep the ticket up to date, and the whole team gets an accurate idea of what's actually going on. Check out our Automation Webinar to learn more about the powerful workflow triggers that make this possible.


The Gitflow branching strategy shown above utilizes different branches for specific roles like hotfixes and releases to help manage larger and more complex projects. 

 Image Source: Atlassian

Phase 3: CI/ CD

The next phase is how we define the crucial handoff between Dev and Ops. When our units of work and code changes are smaller, we're going to need to deploy more often to get those features to our customers. Before we ship it to the ops team and production, we need to ensure quality as our individual features come together. This is where good Continuous Integration/ Continuous Deployment practices along with Atlassian's Bamboo are vital to successfully shipping our product. Catching bugs and issues before they go to production is going to help both the Dev and Ops teams sleep better at night.

  • Learn about Bamboo | For on-prem Atlassian users, Atlassian's Bamboo is the CI/CD solution that allows professional teams to build their CI/CD pipeline. You may be using Jenkins or other open source teams, however the deep integration points and improved build management make it the right choice for professional teams.
  • Integrate with Jira | Once you have Bamboo up and running, leverage the integration between Bamboo and Jira Software.
  • Bitbucket Pipelines | If you're an Atlassian cloud user, Bitbucket Pipelines is a new, powerful solution in Beta that lets developers build, test and deploy directly from Bitbucket. Developers have the power as they can define the environment and tests for their specific branch with YAML file style configuration.
  • Dockerize Everything! | Docker and containerization is the latest craze sweeping the IT world as teams look to deploy applications to any environment faster and easier. Check out our Docker +Atlassian webinar to learn more about how. As partners with Docker, we love to helping teams harness this cutting-edge technology.
  • Automate Testing | Automating testing with tools like Charlotte, QA Symphony, and Zephyr (which integrate with Bamboo and Jira) gives your development team an even more agile edge. Get efficent, high-fidelity testing to expedite the finding and squashing of bugs to ensure your next iteration is the best version.

Phase 4: Harmonize with Support

Once the story is shipped, the process does not end. Now it's time to keep the product working and collect that vital feedback we need.

  • Check out our webinar, DevOps with the Atlassian Suite, for a full picture of how development and operations are going to work in harmony.
  • Set up a product feedback service desk in Jira to really hear your customers and integrate directly with development teams.
  • Learn how to set up your Service Desk teams for success with our ITSM webinar.


By implementing the right DevOps tools and processes, you'll see the faster shipping of higher quality and better supported releases. As your Development and Ops teams continue to execute these lock-step processes, you get more agile by good practice. Take the steps to start implementing DevOps today by contacting us to get up and sprinting.

Topics: jira atlassian blog scaled-agile automation bitbucket bugs continuous-delivery bamboo branching devops docker distributed-version-control-system process-consulting qa-symphony sdlc selenium software sprint testing version-control-system workflows tracking continuous-integration cloud development integration it operations release-management marketplace-apps
3 min read

Three Reasons Why Developers Love Docker

By Praecipio Consulting on May 6, 2016 11:00:00 AM

A smooth running production environment is a beautiful thing. But how do we get there? And how do we ensure that all of our production, staging/test, and development environments stay in sync in order to get there? Today, it seems like everyone in software development is talking about Docker and containers. In fact, according to the 2016 State of the Cloud Survey by RightScale, Docker adoption doubled from 13% to 27% in just one year. Furthermore, 35% of the organizations surveyed reported that they have plans to adopt it soon. 

Why has Docker adoption skyrocketed and how can those using Bamboo for continuous deployment reap the benefits? Check out three reasons why developers love Docker, and how it can provide value for your dev team. 

But first... 

What are Containers?

A Docker container packages software in a complete filesystem with everything it needs to run – such as code, runtime, system tools, system libraries – guaranteeing that it'll always run the same on any environment. Docker is all about creating consistency and encouraging collaboration. It revolutionizes how we share our environments the same way Git has changed code collaboration. At its core, Docker is about utilizing the least amount of operating system resources and dependencies needed to run an application. This focus on maximizing efficiency leads to a painless, more collaborative, and seamlessly integrated environment to test and deploy applications. 

Sourcewww.docker.com

1. Test without surprises

A crucial part of the development process is testing, whether on a local machine or in a virtual dev environment. With containers, every environment is exactly the same so changes and unexpected dependencies won't interfere with testing – saving developers time and energy from tweaking problematic environments and instances. 

Running containers on your local machine using Docker Quickstart Terminal lets you test in a consistent environment.  

2. Collaborate with consistency

Unexpected dependencies are already a hassle for one developer and becomes an even bigger headache when other devs enter the picture. Unknowns in an environment are amplified with each new team member – who knows what's on their machine or which version of Java they're running? With Docker, consistency facilitates collaboration. By starting with a known configuration in a common container, devs are always on the same page about which version to use; it's right there in the container.

Share your Docker Images with a registry like Docker Hub.

Source: https://hub.docker.com/_/hello-world/

3. Integrate with Atlassian 

Atlassian, the leader in enterprise software for collaboration and issue tracking, is the perfect complement to Docker. By pairing Docker's consistency with Atlassian's integration and automation, collaboration between development and IT ops becomes seamless. Using the new Docker Hub 2.0 with Atlassian's Bamboo, source code can be automatically built and deployed to an identical development, test, or even production environment. No more requesting environments from the IT ops teams; triggers will automatically fire from your approved pull request in Bitbucket to spin up a lightweight container in your QA environment almost instantly. Without the excess back and forth, you can go from source code to a running application in minutes. 

The Docker Task in Atlassian's Bamboo let's you run, build and deploy images and containers with ease.

Docker is picking up a lot of traction today and rightly so. Docker containers provide consistency in the turbulent world of software development environments. They allow dev and operations teams to get customers the applications they need now – all while providing a consistent environment that makes working together a whole lot easier. 

To learn more about how Docker and Atlassian can help your dev team work faster and smarter, contact Praecipio Consulting.

About Brendan Kelly

Brendan is a Consultant & Solutions Specialist at Praecipio Consulting where he enables the sales team through technical discovery, training and product demos. When Brendan isn't delivering best-in-class business technology solutions, he can be found in the Austin Green Belt hiking and bouldering. 

Topics: atlassian blog automation continuous-delivery bamboo docker optimization process standardize testing continuous-integration deployment development environment integration cicd

Praecipio Consulting is an Atlassian Platinum Partner

This means that we have the most experience working with Atlassian tools and have insight into new products, features, and beta testing. Through our profound knowledge of Atlassian environments and their intricacies, we can guide your organization as you navigate these important changes.

atlassian-platinum-solution-partner-enterprise

In need of professional assistance?

WE'VE GOT YOUR BACK

Contact Us