In my last post on product development at Clearview Social, I discussed the primary creating phases of our Product Development Lifecycle. This included having a vision, creating a Feature List & Design Spec, and then executing incremental development on that spec.
In this post I'll talk briefly about the ways we try to keep maintenance costs down and reduce bugs through automated testing.
The First Rule of Automated Testing Club is...
Ok, so you should talk about testing. The fact is that many developers feel burdened at the thought of writing automated tests. This is usually due to either lack of experience in testing, or lack of a testing rubric in the development processes of the organization. Testing should be an integral part of the development process. At Clearview Social, we are working to make writing automated tests a first-class development concern as early in the Product Development Lifecycle as possible.
To get the most out of your automated testing, testing should be started as early as possible and ran as often as needed. The earlier testers get involved in the life cycle of the project the better, and the more you test, the more bugs you find. Automated unit testing can be implemented on day one and then you can gradually build your automated test suite. Bugs detected early are a lot cheaper to fix than those discovered later in production or deployment.
Testing Tools We Use
At Clearview Social we currently employ Automated Unit Tests for large portions of our code. We also run Automated API Tests for priority pieces of functionality in our software.
Unit Testing is responsible for testing the individual functions that run our software. It focuses on code modules that are composed of individual units of work (see?) and will report any failures within those modules. For Unit Testing we use Mocha, which will work on either front-end or back-end code. We get visual feedback on any test failures, and it helps prevent regressions from being introduced in existing code.
Our API is responsible for providing data to our interface as users interact with the software. Ensuring our API is working as-intended is critical. We run automated API tests for features such as getting a list of Shares, scheduling a Share, getting a list of Queues, and more. As we continue to grow our software this list of tests will grow as well. Again, we use Mocha as our testing tool of choice to keep coding our tests simple.
Any developer's dedicated workflow should include a series of automated tests. While tests are not a visible part of the requirements that a user of our software may see, they are an essential part of keeping what they can see in good order.
Another topic we did not cover in this session is UI Testing, which I will save for a later date. UI Testing is just as important as API testing, as it helps inform us of unexpected changes to how users will interact with our software. Developers want to spend their time creating and crafting to solve important and difficult problems. So why then would we want to allow small bugs to overrun our software??
Until next time,
Happy Sharing & Blogging!