Software Now Penetrates Every Aspect of Life
Back during the internet bubble, it was all about ecommerce and how many bags of dog food you could sell to how many people visiting your website. In the end, it turned out that a lot of people still wanted to buy dog food at their local grocery store. What we didn’t know in 2000 was how SalesForce would revolutionize the software delivery model with SaaS making it common place to “rent” rather than purchase software.
In 2007, the iPhone changed the software delivery mechanism and business model yet again via the AppStore. As Internet matured and social networking came of age, a fundamental shift took place. The Internet became no longer just information and sales source, but a way to connect people via computers, mobile and wearable. Today machines are even talking to each other (ioT).
This led to the demise of pre-packaged software, with the “Cloud” dropping costs of storage and transmission and providing a sharing platform for all. SaaS took off–and Open Source platforms exploded as communities developed to share knowledge and solve problems. Mobile and the cloud enabled each other, with integration of the mobile phone into our daily lives made possible by apps that integrate information and sharing via the cloud.
With software delivered more quickly and in smaller pieces, the concept of an updatable Minimum Viable Product was created. Getting swiftly to market was deemed more important than completing and delivering the whole product at one time, and incremental delivery allowed feedback on production.
Hence, Agile arrived on the scene in the late 1990’s, with the “Agile Manifesto” proclaimed in 2001 by a group gathered at a Utah resort to discuss problems with traditional development methodologies and ways to make software better.
Advances in Software Expectations
Software businesses have transformed mindsets about software, not as software itself but as part of our everyday lives. Mark Andreessen said in 2011 that “Software is eating the world” as traditional brick and mortar businesses were put out of business by “software” companies.
Just as software has begun to “eat the world,” it has become more important and more complex. It’s no longer just about writing a document -- and the potential for a blue screen wiping out our work. It’s about everything in our life, from controlling our thermostats to calling home to say we’ll be late for dinner. Hence the quality of that software and the processes that goes into making it have come to the forefront.
We now have higher expectations for the software we use and will no longer tolerate a sudden blue screen. As a result, the software quality domain now touches every part of the software lifecycle. Software quality is not just about good code, but the entire end user experience.
This has led to changes and advances in our thinking, the tools we use and the way we work.
Tools and Technologies
With these changes, we now see many specialized tools for performance, security, test automation and test case management. With higher degrees of specialization, tools have also become more open. Businesses recognize the benefits of working with specialized tools that do things we can’t, so many tools interface and integrate with others. Gone are the days of trying to do it all, locking in a customer’s data and parameters in an effort to contain them.
Open source, once thought of as too difficult to use, bug-prone, and overly code-dependent has become easier and more accessible as communities have formed to provide grass roots support and auxiliary development. Many open source contributors both ask for voluntary donations or none at all, because they love what they are doing and do it for fun. There are a plethora of information sources (Selenium, for instance) and forums to help solve almost any problem.
Combinatorics algorithms have advanced so that more than 2-way (pairwise testing) can be employed, allowing 3, 4, and even 6-way testing techniques to ensure higher test coverage in a systematic way.
The Way We Work and Do Business
Over the last few years, the way of doing business has changed. It doesn’t take 100 developers, 10M of funding, two to three years, and a formal distribution and sales channel to get a product out the door. Instead, small companies with ten people and 1M in funding produce a product in less than a year, distributing direct to the end user. Software development methods and tools have been adapted along with all of these changes, so testing tools and related technologies have morphed as well.
“Software businesses have transformed mindsets about software, not as software itself but as part of our everyday lives”
With software componentization, we must learn how to test inter-connectivity and integration. Testing is no longer done on a single piece of software on a single machine, but rather on software that resides on multiple platforms, providing an integrated experience for the end user that pulls in data from multiple sources. Smaller teams mean a greater breadth of skill set is required. Not that everyone will do everything (as some people think Agile means) but team members may need to step in and assist in areas that are not their specialty. The more skills each has in their “toolbox,” the more valuable each becomes.
The Future of Software Testing
As the software industry matures and software becomes more commonplace and fully integrated into our daily lives, it also becomes more complex. Hence, those of us behind the scenes who make it all work are required to learn ever more specialized tools, determine how software components fit together, and effectively test them in a myriad of scenarios on platforms and devices that continue to expand.
Not only do we need to broaden our knowledge. But as we work in smaller teams under shorter development timelines, we need to stop being tech “nerds” and really communicate with people to get things done- -becoming not just software testers or software engineers but thinking and communicating as software users.