by Diane Kenyon, VP of Engineering and Operations
Benjamin Franklin famously stated that, “an ounce of prevention is worth a pound of cure.” In the world of quality software, that analogy may be underestimated. Errors in software development discovered at the release stage are greatly more expensive and difficult to repair than when discovered during the testing and development stages.
While there are no guarantees of perfect success, establishing best practices for development and properly educating your team of those guidelines will significantly reduce the likelihood of errors and diminish their impact. The key lies in making sure everyone knows the rules to the point of being able to quote them, and that each person understands his/her responsibilities within the project. Culture, compliance needs, expectations and risks all go into establishing a framework for success.
Following this structured process for defining and hardening your best practices improves consistent adoption across all team members: Read more
by Morgan McCollough, Senior Software Engineer
In the first week of June, I made the trek to Caesar’s Palace in Las Vegas to attend the Agile Development and Better Software Conference. The conference itself was only two days, but I attended a three-day Agile scrum master training class beforehand. It rounded out a full week immersed in all things Agile.
I’ve worked with a number of clients who claimed to have adopted Agile in one form or another. I’ve also read quite a bit about it, but prior to my week in Las Vegas, I had never received any formal training. The trip was eye opening, and it was a great opportunity to talk with people from across the industry.
What really became obvious was just how many companies are successfully implementing Agile processes at both the software development and program management levels. Some are achieving pretty dramatic results, with up to 30% shorter schedules and 75% fewer defects on average! However, learning the formal practice of Agile also made it clear how much dysfunction still exists, even in companies claiming the Agile moniker. Read more
By Brenda Hall, CEO
Here’s some great news: despite whatever views we may have of how unemployment figures are determined, the economy continues to recover. In many parts of the US, a number of jobs are not getting filled; this also holds true for offshore staffing companies. I know many recruiters who are having difficulty keeping up with demand and finding an adequate number of candidates with the skills employers need.
Frequently, as businesses grow and need to scale, owners and managers find they have too much to do and not enough time to do it, so they pay less attention to the offshore/outsourced resources available to them. Taking your ‘eye off the ball’ here can cause havoc with your teams, both locally and offshore.
Some questions to consider:
How does offshore sourcing affect your productivity and product quality? What will you do when release schedules are missed, or worse, your software is released with issues? How does this influence your corporate strategic goals and customer satisfaction? Read more
By Nadine Parmelee, Senior Quality Assurance Engineer
When it comes to software quality and reliability, there are many benefits to be gained from a switch to an agile development environment. Agile helps teams stay focused; it helps them deliver a quality product more quickly. It drives efficiency and leads to improved results throughout the software production process.
Automated Testing: A Must-Have in an Agile Environment
An agile environment requires automated testing. And with more and more development teams moving to agile processes, the need for automated testing has grown exponentially. Agile test cycles tend to limit the amount of testing that can be accomplished, so getting a good regression set of tests automated is more crucial than ever for you to reach your goals of increasing product quality and reducing costs associated with product defects. Read more
By John Cavazos, Senior Performance Test Engineer
At one time, it was very common for companies to use a homegrown solution to performance test their software. This was mainly due to two factors:
- the lack of available, cost-effective commercial testing tools
- the complexity of their software
The situation is different today as it is common to find excellent, free, open-source tools online. These high-quality, stable, easy-to-use tools don’t have the inherent maintenance costs associated with using homegrown solutions.
There are now several industry standard tools available that can be used to performance test most, if not all of the features a company might need. What isn’t readily available can typically be added to these tools with minimal effort due to their open-source nature. Here are a few I have used: Read more
By Morgan McCollough, Senior Software Engineer
Testing software can be a very complicated, time-consuming process. The number of possible inputs to a system and the ways in which they interact can quickly create a situation where the set of possible test cases is, for all practical purposes, unbounded.
In order to find the problems in a piece of software, a tester’s job is in large part about finding intelligent ways to pare down the possible test scenarios in such a way that the majority of problems are found in a reasonable amount of time.
To this end many techniques have been proposed over the years as shortcuts to finding the best set of test cases for locating the most software bugs in a time-efficient manner. One such technique that seems to be gaining in popularity is Pairwise Testing, also referred to as “All Pairs”. Read more
by Lakshmi Kirthivasan, software QA engineer
Our team at Bridge360 is very focused on quality in the software production process. Expertise in all forms of testing helps us provide our customers with a higher quality product, so it’s critical that we have expertise in testing.
I have some programming skills and years of manual testing experience, but decided I wanted to become more skilled at automatic testing. Because all of the projects I’ve worked on over the last six years required only manual testing, I was mostly unfamiliar with the current tools available for automatic testing. This prompted me to do some research to see which tools were available and most widely used.
My research on job boards in both the US and India led me to the conclusion that seemingly everyone in my industry is embracing the fascinating world of automation. It was rare for me to find any job which focused only on manual testing. Today’s testers are expected to know one or more automation tools like Selenium, Watir, Cucumber, Test Complete and FitNesse. Numerous testing tools are loaded with standard functions and options but still don’t provide a complete solution for many testing situations. Typically, some tweaks to provide added functionality are needed to fit the requirement. Read more
by Chris Durand, CTO
Let’s be honest, Quality Assurance is a necessary evil. Many of you have probably wondered why developers can’t just get it right the first time. Why do we pay developers to write bugs, and then pay testers to go and find them?
The answer simply stated is — writing software is hard. Software developers need to be extremely detail oriented, yet also keep the big picture in mind. They must balance short-term tradeoffs with long-term considerations. They often have to learn new tools and technologies with each project while balancing the demands of outside influencers. Oh, you needed that feature or bug fix done yesterday? And you want that application to work on all browsers released in the last 3 years (that’s 24 versions of Google Chrome alone since March 2011), plus mobile? It’s no wonder developers struggle to write perfect code every time.
While it can produce quality results, the old model of throwing code over the wall from the development team to the QA team is inefficient. We that build software have to do more for less, faster, and in a more complex environment than ever before. The rise of automated unit testing and Test- or Behavior-Driven Development (TDD and BDD) is an attempt to realize improvements. By testing at the core (that is, with the developer), we find bugs as early as possible (which yields tremendous savings as discussed in the post http://bridge360blog.com/2013/12/04/5-ways-qa-supports-development/). Automated unit testing also makes it easier to update the application going forward by identifying unexpected broken dependencies in the code before they get in front of a customer. Read more
By Paul Bostrom, Senior Software Engineer
Do your software testing teams ever discover bugs that seemingly should have been found by the developers’ unit tests? Quite often, the developer actually did unit test the software, but perhaps simply failed to think of scenarios using the problematic inputs. What if we could tell the computer to “think” of all the values used in our unit tests? This is the approach of property-based testing.
Instead of specifying a limited number of inputs and outputs for testing a unit of software, property-based testing specifies properties that a unit of software must hold, and then relies on the computer to generate the test values.
The authoritative library for property-based testing is called QuickCheck (http://en.wikipedia.org/wiki/QuickCheck), created for the Haskell programming language, but implementations of the library exist for many other popular programming languages. To illustrate the differences in these two testing approaches, we will use a simple example — testing a square root function. Read more
By Rema Sreedharakurup, Senior Quality Assurance Engineer
I have recently facilitated discussions with both peers and clients about the value that software quality assurance brings to a customer’s business.
Although it is clear that a QA engineer’s job is to accurately report product quality, there are opportunities to deliver value beyond what is expected and in the process nurture a long-term customer relationship.
During a client engagement, we select our testing approach based on factors ranging from budget, scope, team dynamics, release schedules, and in many cases alignment with customer demands.
Over time, the selected approach matures and becomes optimized to suit the nuances that exist within the customer’s business model. The time period in which the approach becomes more mature offers our QA team opportunities to engage with the client at a new level, where we help them with their business and with their software delivery process. Once this normalization period is complete, our QA engineers have learned the business and are capable of identifying additional opportunities to increase the value that the QA efforts can bring to the business. Read more