IoT, Testing, Outsourcing, and Automation – The 4 Horsemen of the Future SoftwareCigniti Technologies
Listen on the go!
Right on the heels of the Mobile App Software explosion and closely related, we have the Internet of Things (IoT). If predictions come true there will be billions (more) of new IP addressed devices running countless pieces of software. We will have them in anything that has electronics e.g., cars, HVAC systems, entertainment devices, robots, computers, wearables, transport systems, etc. and many more things that, to date, have not had electronics until we put it in them (e.g., shoes, clothes, pets, furniture, hardcopy paper, back-of-your-neck, etc.) Of course, we will need software developers, and on the flip side people to assess the qualities of these devices i.e., testers. IoT will offer us many opportunities.
Certainly aspects of traditional testing will apply, and there will be “new” challenges that were found in Mobile-Smart app software. But, what are some of the “new” concepts IoT testing is likely to encounter? Here are a few thoughts on this future (to be taken as on any prediction with some grains of salt).
First, there will be companies moving into “high-tech” development, that have minimal or no experience with software. These companies may have IT departments that cared for and supported computers, but this is not new product development. These companies will have product domain development experience e.g., how do you develop new clothing styles or shoes. However, they will not know much about software development and even less about testing it. They may think software is easy and testing is not needed.
These kinds of companies have several paths they can take in learning IoT software development, including:
- Training existing staff to become software developers and testers.
- Hiring new staff to create in-house software development and test capabilities.
- Outsourcing the software and testing to external companies who already have expertise.
- Or a mixture of the above items.
The path taken will be company and context unique. There is no “one way,” best path and, every company will learn as they go. Many organizations will likely learn that they will need some in-house software development skill/knowledge supported by outsourced companies and/or contractors. Currently the “outsourcing” trend is common in many segments of industry, but even so, IoT can create challenges to companies. Companies have challenges and opportunities.
Next, IoT will present many employment and growth possibilities for existing developers and testers. Companies should consider a variety of factors about their employees, including:
- Knowledge and skill of the staff are important to success (these are different capabilities).
- Communication between all development parties (developers, testers, management, stakeholders-users, hardware, manufacturing, systems, contractors, etc.) must be fostered throughout a product’s lifecycle.
- While the first two items are important, many times some degree of contracts and/or legal documents (e.g., legal agreements and requirement (“shall”) documents) should be put in place to support and define and its lifecycle product.
- Focusing on working software and performing required activities must be balanced by the team, i.e., we must balance software functionality with the support activities like configuration management, testing, and documentation used to help create and maintain the software.
- Agile and lean software development ideals need to be worked by a team that includes software and product domain knowledge i.e., the software people need to listen to the product domain staff who understands clothing (as an example) and vice versa.
- Outsourcing companies will be used for much of the future work in IoT, but the owning company needs to control the complete product and this includes having the skills to understand what the outsource providers will be doing i.e., the owning company will need systems, software, hardware, and testing skilled staff.
- Automation and use of tools (for development and test) used by skilled staff are needed to support many aspects of an IoT project.
Each of these can be the subject of books and/or articles by themselves, but the list gives teams starting ideas.
Regarding the last item, tools and automation, some care and thought must be given by the companies moving into IoT. Software people and humans in general, are tool users/makers. It is very tempting for management to think a tool or automation will “save” an IoT project–like a magic bullet. And while tools/automation can help, here are some tool/automation keys for the IoT projects to consider:
- Tool and automation, even in testing, must address tasks that are repeated at least 3-to-5 times before any “cost savings” are likely to be realized. Likely automation candidates include: regression testing, configuration management for continuous integration and builds, modeling, data analysis, etc.
- Tools and automation must help in tasks which humans dislike or are not good at. Examples here include: planning, risk assessment, test data generation, design of code and tests, documentation retention.
- Tools and automation need management and staff support including schedule, budget, and skilled human resources, to be successful. For example, just buying a tool will not help if the staff receiving the tools does not have the training or skill to use it, much less are not given the time and money to implement the automation.
- Tools and automation must help in areas such as project knowledge retention or generation. Examples here include capturing code and test results, test documentation, mind-maps, or models of team thinking.
This list is not comprehensive either, but gets teams thinking about the scope of the problems we all must face in IoT development, testing, and automation.
IoT should become a brave new future for software and testing. Enjoy and grow.
|About the Author: Jon Hagar is a systems-software tester consultant and trainer supporting software product integrity, verification, and validation with a specialization in embedded, IoT, and mobile software systems. He has worked in software, particularly testing for over thirty five years. Jon is the author of the book: Software Test Attacks to Break Mobile and Embedded Devices. He is lead editor/author on numerous international standards including model-based testing, IEEE, and ISO testing. Jon has a web site at: http://breakingembeddedsoftware.com/|