Agile TestingNaresh Jain
schedule 1 year agoSold Out!
As more and more companies are moving to the Cloud, they want their latest, greatest software features to be available to their users as quickly as they are built. However there are several issues blocking them from moving ahead.
One key issue is the massive amount of time it takes for someone to certify that the new feature is indeed working as expected and also to assure that the rest of the features will continuing to work. In spite of this long waiting cycle, we still cannot assure that our software will not have any issues. In fact, many times our assumptions about the user's needs or behavior might itself be wrong. But this long testing cycle only helps us validate that our assumptions works as assumed.
How can we break out of this rut & get thin slices of our features in front of our users to validate our assumptions early?
Most software organizations today suffer from what I call, the "Inverted Testing Pyramid" problem. They spend maximum time and effort manually checking software. Some invest in automation, but mostly building slow, complex, fragile end-to-end GUI test. Very little effort is spent on building a solid foundation of unit & acceptance tests.
This over-investment in end-to-end tests is a slippery slope. Once you start on this path, you end up investing even more time & effort on testing which gives you diminishing returns.
In this session Naresh Jain will explain the key misconceptions that has lead to the inverted testing pyramid approach being massively adopted, main drawbacks of this approach and how to turn your organization around to get the right testing pyramid.
Mutation Test - A New Way to Improve Code and Test - More InformationJoseph Yao
schedule 1 year agoSold Out!
Mutation test is a way to put a "mutation" into your code, run the test and then see if the test fails or not. A mutation is a change to production code which should make it behave in a different way. The idea is, if the production code is just enough to pass the test, any mutation should make the test failed due to the behaviour change. If test failure doesn't happen, we will say that the test can't kill this mutation. Therefore, some test code smell or production code smell exists, which possibly leads to some learning and improvement of our code and test.
By TDD, we should get "just enough" code that passing all the test. But, how do we know this? Sometimes, since writing test and code is so interactive in TDD, we may not choose the smallest baby step to pass the test. This means we may write some code which is not driven by current test (code smell). On the other side, we may even miss some important test or create some “weak” test by TDD because the code is too “obvious" to us (test smell). By applying Mutation test mindset and methodology, we can identify such code smell and test smell and then help us improve the quality of our code and test.
In this topic, I will first introduce what mutation test is and why we can use it to create some learning of and improve our code and test. Then, I will share a real code example in which I tried the mutation test and some learning I got. Finally, based on what I learned so far, I will have a summarisation about the code smell and test smell which can be detected by mutation test.