Skip to main content

Testing

A good practice to keep in mind during application development is that you can never assume what kind of network conditions your users will be facing while using your application.  Some users could be on Wi-Fi, some of 4G - LTE, but most likely a lot of your users with be in conditions similar to 3G or an EDGE network, which can be a lot slower than Wi-Fi or 4G.  In these cases it is important to test your application to make sure that any assumptions you programmed into your logic during development do not provide a poor user experience in adverse network conditions.

Writing unit testing is a cornerstone of software development.  When developing mobile or desktop applications, unit testing becomes even more critical, as there is often vital business logic that needs to be validated.  Have you ever found yourself wondering; what makes a great unit test in Swift? What key components give my application enough testing coverage to make sure that everything works and nothing regresses when new code is added to my project?  If you have asked yourself these questions then you are not alone.  In fact, that is why I wanted to write this tutorial.

In my opinion one of the most overlooked features of the Xcode SDK is the ability to test UI input using XCTestCases.  Testing UI input throughout the lifecycle of your application can be beneficial for a multitude of reasons.  First, UI testing allows a developer to validate that given a specific set of input, the output is that the user interface will exist in a specific state.  Testing user interface output provides 

This week I heard some chatter in certain iOS groups that I belong to about whether testing your iOS, macOS, watchOS, or tvOS applications provided any immediate value in the development life cycle.  As opposed to developing features without testing and getting them to market right away and then iterating upon them in a highly agile methodology.

One of the major parts of any software development cycle is testing.  Whether that testing is performed on just one feature or an entire product I think that any developer can agree that code and product functionality needs to be tested before it is deployed.  As a developer, one thing that I continuously find myself wondering is when is it an appropriate time to test my code?  I wonder if it cost effective and productive to perform testing on a feature by feature basis?