For as long as I have been in software testing, there has been a constant demand to grow technology, grow skills, automate more, and do it all faster (that is a given). What has been so remarkable recently is the rate at which these demands shift gears and move in different directions, new products, and evolving technologies.
Testing an application – whether it is designed for desktop, mobile or the Internet of Things – for security defects is more important now than ever before. This is because the stakes for a data breach have become enormous, in light of the average incident now costing the affected enterprise over $4 million to recover from.
With DevOps, automated tests have become a crucial necessity. Tests need to be thorough, and their automation should be stable. In fact, tests have to meet quality and robustness criteria that are similar to the application under test, but tests seldom get the attention and investments that the applications get. Where sources and components of applications are considered products that are designed and developed, tests play a mere supporting role. In Scrum projects you will not see tests specified in the backlog. Rather, they are seen as a part of the production for the user stories.
Virtualization has been around for a long time. As early as the 1960s, IBM was supporting virtualization on mainframes to ease the cost of migration among multiple generations of their systems. Languages like Pascal, Java, and C# translate into virtual machine languages that are then either interpreted or further compiled (“just in time compilation”) into actual machine code.