You may have seen my
previous post on why understanding the need for mobile testing is a critical element of staying on top of the evolving mobile landscape. As a refresher, I explained the differences between mobile and traditional testing – the major one being to accommodate the near-constantly changing platforms and architectures. It’s a tough world out there in the application development universe, as companies strive to create products that work across as many as 1,800 different platforms and the latest operating systems. In this follow-up post, I’ll explain the benefits of using reliable testing platforms to maintain your applications and ensure reliability and speed.
In our instant gratification society, our devices must work – and work fast. Websites should load quickly, even
on the go. The performance testers’ maxim – ‘seven seconds can cost you $7 million dollars’ – illustrates perfectly how a delay in performance can impact the bottom line.
A major challenge within all testing organizations is the reuse and maintenance of testing scripts. Testers are all about efficiency, so repeatedly recreating test scripts negates most productivity gains. In traditional software testing, the challenge for test automation tools was to ensure that scripts were portable, easily editable, shared, versioned, and could be rolled back either natively or via a file/source control system – a challenge met by the evolution of most software testing tools. When it comes to mobile, the immaturity of the tools in the market means many scripts aren’t reusable across multiple platforms, devices, and application types.
This is why organizations looking for a mobile test automation platform should factor in the overall maintenance of the scripts and tests being created. The mobile test automation tool should be able to reuse many scripts to test across multiple units – an important consideration bearing in mind the proliferation of devices. This script will be responsible for recording, replaying, modifying, and creating error controls on all test commands. The testing tool is the conduit between the connected devices and the extension inside a chosen IDE, such as Visual Studio. Done properly with the right tool and architecture, one test script will execute against multiple devices. Performance is everything.
As mobile networks spread, so
does the need for robust application performance – as the risk of high-profile failures increases exponentially. The demand for accurate mobile application distribution across multiple devices and platforms raises the stakes for mobile development teams until performance testing becomes just as critical (if not more critical) as functional testing in an application’s release.
While many organizations’ current infrastructure and performance
testing tools are sufficient, some fail to prepare for multi-channel/multi-speed swarms to the network during heavy load times. Infrastructures can withstand hyper-fast networks but unknowns quickly become apparent when traffic from slower networks hits the primary route. Issues such as open sockets resulting from a cell tower switchover and database pooling sharing load between users on fiber, to name a few, all require a fix.
One way to simplify mobile testing is to use an infrastructure that allows for developers to write unit tests using open source frameworks such as JUnit. Working with tooling that takes care of the ‘heavy lifting’ across different devices will shrink testing cycles. In this ecosystem, a business analyst can design the tests with visual tooling, export them as self-contained scripts that self-describe the given states, and then have them automatically generate JUnit code, which lets developers work as developers and testers to work as testers.
Does it Load Better?
Another often overlooked item within mobile testing is time and quality of application response under heavy loads. Is the user seeing the right screen? Is the application showing the correct ads under the load? What about HTML5 template based applications -- is the right style sheet showing up for the
right device? Because there have
been at least eight different versions
of the Android operating system
(OS) since 2009, performance and functional testing of different Android OS versions on multiple mobile devices is difficult.
Add in iOS, bada, BlackBerry, Windows Mobile, and HTML5 and testing complexity reaches another level.
Testers must use tooling that has mobile performance simulation capabilities on top of having robust object recognition technology for functional testing. Mobile testers should also prepare for the future by practicing ‘edge testing’. Start with the popular, most common devices, typically the ones promoted by the major mobile phone providers (i.e. iPhone, iPad, Google Nexus, Galaxy Tab etc.) to narrow the gap when developing a strategic plan of attack for mobile test automation. Then, test the smallest and largest screen sizes to ensure ample coverage. Edge testing with robust tools that allow for performance and functional testing is a strategy that still holds water, regardless of how often devices change.
Do You Work Better?
Clearly, with developers under pressure to deliver more robust code that can meet all these challenges, developers are going to have to work better and find more productive working practices
to create an improved product. Agile testing certainly ticks a lot of these boxes. Instead of a labor-intensive process where developers work in isolated teams and test software until destruction to find the bugs, Agile testing is helping teams work together to ensure the bugs don’t get in there in the first place. In other words, testers are writing automated tests to show that the software works, rather than obsessing about its vulnerability.
Of course, Agile testers will still find bugs, and pre-Agile testers must write tests to show what works. But, Agile has prompted a more fluid and interactive way of thinking. Using tools that enable teams to collaborate out of the box is imperative to working better.
The future of mobile testing isn’t – and cannot be – about silos of developers working on niche projects that seek to find problems. It’s going to be teams of developers and testers working closer together and drawing on their creativity and expertise to create robust code that meets the challenges of mobile. Once you have this component, along with an understanding of the testing process, you’ll be developing (and testing) awe-inspiring applications in no time!
- Archie Roboostoff, Director, Borland Portfolio at Micro Focus