Software testing has been rapidly growing over the past several years and here are some software testing trends to be aware of in 2017.
More Open Source Tools-As more pressure is placed on reducing expenses, more software testing teams will look at alternative options in reducing software testing licensing. Adoption of open source tools will continue as Agile and DevOps practices evolve. This software testing trend will continue for the next several years.
Test Automation Growth-Most software testing organizations already have some test automation practice in place, however, there will be a focused effort to increase the amount of automation that is in place. Companies will continue to focus test automation in the areas of smoke testing and regression testing. Where companies can, they will use automation tools such as Selenium and Appium.
Performance Engineering-There will be additional attention in the area of performance engineering due to additional data demands and production level failures related to system performance. Companies will begin to require performance testing to be completed prior to production implementation.
Digital Transformation-More attention will be place on customer satisfaction and this will require a digital transformation with the customer workflow. This will require extensive amounts of software testing to ensure that the customer has a positive experience. This transformation will go across multiple systems and require security in terms of the customer data. In most cases there will be a mobile component to the digital transformation.
Big Data-Explosion of demand for data due to IoT devices and additional data in order to make better business decisions will require new technology to support the additional capacity. Software testers will need to be able to learn more about Big Data and will need to verify that the data is correct before it is consumed. Platforms such as Hadoop will need to be learned. This will require a solid test data management practice.
Cloud-Continue cloud adoption will grow as more traditional companies such as insurance and finance begin to slowly transform their business to the cloud. This transformation will continue to evolve for the next several years. Software testers will need to understand more about public, private and hybrid cloud solutions. Software testing companies will also look for software testing platforms to help them accelerate software testing.
Agile/DevOps-Most companies will have Agile as the default software development lifecycle. As Agile continues to take shape, companies will begin to focus on building DevOps practices. This will also include Continuous Development and Continuous Integration. The DevOps approach will help to build collaboration across teams and help increase the amount of automation used in developing and deploying software. In addition, most companies will start to integrate Security as a part of their DevOps practice.
I hope this list helps. It will be interesting to see where software testing heads as we look at 2017 and beyond.
There are probably a lot of misunderstandings about Test Driven Development (TDD) and a general unawareness about what it is so I am hoping you will gain a better understanding after reading this article. I have a nice image on the left which will help to provide better information for TDD. The general thought process is by creating an initial test case which is designed to fail, the developer will design better code which will make the test pass.
The TDD test created will be a simple unit test that will affect a very small piece of code.
Once the unit test has been created it needs to execute and fail.
The developer will then write code to get the test to pass.
The developer will refactor code to make it simpler and more efficient.
The developer will repeat the process and add more tests over a period of time.
In Agile the team normally consists of the BA, Developer, and Tester. It some organizations, the tester is responsible for manual, automated and performance testing activities. That is a lot of responsibility for one person but it does happen in small IT organizations. In larger organizations it gets a little more complicated. I have setup multiple testing departments and I create a shared services model for both automation and performance work. The tester works with those teams and identifies automation and performance testing efforts. I do require that if the test case is going to be automated, it needs to provide the right amount of detail so the automation team will be able to script it properly. I also like the manual tester to execute and pass the test case before it is automated. Input in terms of the stability of the code is also needed, otherwise you can burn a lot of hours having to constantly update changing automated scripts. The beauty of this model is it allows multiple Agile teams to leverage automation and performance skills. As more automation and performance testing is needed, those shared services team will grow creating a model that can scale.
The Agile teams don’t typically need dedicated resources for automation and performance testing, so hours are only used when needed. To keep in line with the Agile methodology, I have both my automation and performance teams create Sprints for the work that is needed so I can closely measure how things are going within a given timeline. Since the effort is shared across the team, they follow standard Agile principles and have their own series of meetings, demos, and retrospectives to ensure communication is flowing across the team. They also may participate in some of the meetings such as daily stand ups for the projects they are supporting.
I have adjusted this model a bit to fit the needs of each organization. It has worked well and I will continue to use it moving forward. The teams like the approach and it has helped to build stronger teams using this approach.
While there is an ever increasing movement for Quality Engineering organizations to “Shift Left” there needs to be more attention placed on “Shift Right”. Here are some reasons why Quality Engineering must pay close attention:
This is especially needed in more traditional industries where there are smaller and smaller UAT teams. There is increasing pressure on the UAT teams to test more and more with fewer and fewer resources.
UAT resources usually have full-time demanding business jobs. UAT is typically given very little attention and focus. If there is a priority, UAT usually loses.
Quality Engineering should work closely with UAT to understand how the business works and create scenarios based upon day in the life scenarios. Those scenarios can then be automated and will greatly improve the quality of the applications before they hit UAT.
While more and more demands are placed on Quality Engineering organizations, they usually are dedicated resources who can focus all their efforts on software quality.
I agree that it is necessary to “Shift Left” but I believe you should actually start by “Shifting Right” in order to cover the backside of the SDLC.
Agile will place greater demands and significantly compress the historically long UAT cycles, the time that used to be available will no longer be available.
“Shift Right” will require interaction with UAT teams. This is often difficult for QE to interact and understand how the business really works. Let’s face it, we are geeks. Once QE has engaged and understood the real world challenges that the business faces, they will be able to identify potential issues before testing gets to UAT.
While this is not an exhaustive list, it will help support the thought that “Shift Right” first is the right way to go.
Quality Engineering is defined as a process that produces the best product possible. It requires substantial effort across the SDLC to ensure that all areas are adequately tested. Here are some core areas of Quality Engineering:
A few objectives that are accomplished through Quality Engineering:
Improve test effectiveness
Leverage quality metrics in order to make better decisions
Find defects earlier
Quality Engineering is a repeatable process that leverages tools to accelerate time to market. It takes Quality Assurance to another level and produces predictable results. Quality Engineering is expanded across development, testing, and release management teams. Organizations that are able to create a collaborative Quality Engineering practice will be the most successful.