Once we had software. It ran on large piece of hardware called mainframes and there were few direct users (circa 1950-190s) most of whom were “IT” people. Then came mini-computers and mainframes, and the priesthood of software-computer people expanded as did numbers and types of users (circa 1970s), but it was still a small club of members (maybe tens of thousands of people). And then in the late 1970 and 1980s, the age of the personal computer (PC) arrived. The numbers of software “IT” people expanded rapidly as did the numbers of users. System users found home and business computers. Other computer users found gaming systems to be popular. Users expanded into the millions. Also, the IT professionals divided into sub-professions such as programmers, systems engineers, software engineers, QA personnel, and testers (to name a few). Also, during the 1980s and into the 1990s, people became aware of software bugs and how costly “computer” issues could be. We saw the first worms, web site performance issues were on the nightly news occasionally, and other software “bugs” made people sensitive to the dark side of computers. Here we are in the 21st century and we have a mobile-smart device revolution. There are billions of people using software around the world on these tiny devices. Embedded software is going into more and more (all?) electronic devices. We are growing the Internet of Things (IoT). Almost every human is a software user (or they will soon want to be) and now there are many non-human users (computers talking to computers). The number of “contexts” in which we use software has become a vast continuum.
The continuum is not without bumps and truncate roots, but it roughly starts with programmable devices including ICE, FPGAs, and other simple circuits, continues on with small embedded devices, on to big embedded devices (systems), to IoT, to Mobile, to Mobile-Smart, to general PCs, to mini-computers, to large mainframes and even super computers. The systems we put software in are everywhere and many times users of these devices don’t even know they are interacting with software in computers. They do, however, notice when the system does not work as expected or needed. Are we working towards a Sky-Net (from the Terminator movie series) but not driven by terminator robots instead by little devices in your pocket? That remains to be seen.
So why this posting? I write about embedded and mobile software systems and the testing of these kinds of systems. Some call me an expert in these areas but every few months, I see a problem (a bug) that occurs in the continuum and the problem seems to defy easy classification of “oh this is a common issue like we see in PC-networks” or “this is a problem because the embedded software user interface is limited”. There are many software bugs that seem to be “universal”. There are other bugs that seem to be “clustered” to a region of the software continuum. I hear testers saying “I am X type of system, and so my test problem space can be limited. However, it is not always clear how to classify something as embedded, mobile, smart, web or IoT for each individual device-software.
What this expanding and inter-mixed continuum means to software testers is potentially interesting. Once upon a time, I focused my testing on the kind of bugs and approaches that were common to my embedded software device world. I could focus my tests. I did not worry about common, big data (bases), and user “feelings.” Now on some of my embedded testing I need to test these areas too. My test problem space is getting larger. Likewise, testers of PC systems did not use to worry about battery life, movement in environments, and signal drop outs. Now, maybe they should when they move to tablets mobile-smart phone apps, and even IoT. Testers in many cases should not limit their test problem space as they are saying above.
We, as testers, cannot stop learning and practicing our skills. We should not limit our test technologies to just test automation, exploratory, or human scripted testing. We should have books on attack testing, lessons learned, exploratory testing, classic systematic testing, and many others including books on programming, software engineering, art and general concepts. I have several hundred books in the IT space in my library, as well as books on philosophy, engineering, science, art, and creative thinking. I have historic standards, guides, and references and still, my library and knowledge are woefully incomplete. I do not know enough.
I will have more to say on IoT and the changing environments of software testing in the future. Catch me here.