Always Use Automated Integration Testing

QA or Quality Assurance of a software project is often the area of software development that is most neglected. Typically developers avoid software testing like their lives depended on it. While a basic level of testing is required for a single scenario to validate that your code “works”, the level of testing that is required to ensure that all users have a good user experience across all targeted platforms is something that a developer seems to think is beneath them.

While there has been much progress made with TDD, or Test Driven Development, and BDD, or Behavior Driven Development, many developers avoid writing even automated testing solutions for the projects they develop. From what I have seen, a developer’s attitude toward QA in general is a significant indicator at the skill level of the developer. One thing to point out here is that I am saying skill level, and not experience level as these do not necessarily correlate. Also, when talking about skill level, the skill level I am focusing on is the ability to write easy to understand, maintainable and performant code. For my purposes, I will split developers into two overly general categories.

The first category is made up of developers that strive to understand how their code interacts with the rest of the project before starting development. The developer also is able to communicate exactly what their changes are to the QA team, ensuring they have an adequate understanding of the scope of the change so that it can be thoroughly tested. While QA will inevitably find issues with the code at some point, the developer is appreciative the bug was found before it made it to production, and fixes it promptly for QA’s verification.

The second category is made up of developers that are frequently over confident of their development abilities and like to rush in to actual coding before having a full grasp of how their part of the project interacts with the whole. Many times, the QA team gets ineffective communication from these developers, and often the testing plan leaves out major functionality changes.

While everyone wishes they were in the first category and wants all their coworkers to also be in that category, reality sets in and it becomes apparent that we all migrate between these categories quite often. The best and easiest way to combat these forays into the second category is to implement automated integration tests for all code that verify the functionality works as expected. While this will never completely replace the manual QA testing efforts, it will help to raise a red flag when a change has inadvertent effects elsewhere in the codebase.

Developers: communicate well with your QA team and write automated integration tests as much as you possibly can.

Related Posts

May 14, 2014
2 minutes

Responsive Images with Picturefill 2.0

Responsive Web Design seems to be the way that the majority of websites will be developed in the near future. For a while, everyone was creating a separate website that catered to mobile devices in addition to the main website that desktop browsers were able to access. Web Developers and UX Designers quickly discovered that this was a less than ideal approach as it required maintaining two separate websites, and the mobile website tended to remove data that was visible on the desktop version of the site.

May 1, 2014
One minute

Why Use AddThis.com Sharing Buttons

AddThis.com produces a bit of JavaScript that enables website owners to quickly and easily add social sharing buttons/links to their website. In addition to allowing users to easily share your content socially, they also provide analytics information about what content is shared via which method, giving a greater insight into visitor behavior.

However, just because it provides these benefits to websites does not necessarily mean that it is a good tool to implement on your website. If you are concerned about the performance and the total payload size for your website, then you may have some reservations about the AddThis sharing buttons. On one site I was looking at, when all of the AddThis JavaScript, CSS and Images were combined, it took up 250kB. When you consider that this is a responsive website, and many mobile users only get 300MB of data before they get to overage fees, you hope that there are other ways to implement the sharing to the major social sites.

Apr 11, 2014
2 minutes

How Not to Use SQL Transactions

SQL Transactions allow you to isolate atomic operations so that you can ensure that a third party does not update the data affected during the atomic operation protected by the transaction. An example of an operation that you would want to protect with a SQL Transaction would be transferring funds from one bank account to another. The first step of this operation would be to subtract the funds from bank account A. Once complete, we would then add the same amount of funds to bank account B. Assuming nothing fails, everything works as expected. However, if there is other database activity at the same time or an error occurs in one of the queries, without a transaction you could have the funds removed from bank account A or added to bank account B, but not both, causing a major balancing issue with your bank accounts.