u/waynemroseberry

Maybe it isn't exponential growth...
▲ 3 r/softwaretesting+1 crossposts

Maybe it isn't exponential growth...

https://preview.redd.it/juuynhwy0gah1.jpg?width=2550&format=pjpg&auto=webp&s=f39c1eb344ba59ef25d0422f43dbb608801626e0

Perhaps it is just the curse of a tester to suffer deep annoyance hearing phrases like "<thing> is growing exponentially.." when you know it isn't. I made this cartoon for moments like that. Three types of growth with three simple differences:

  • linear growth: straight line
  • exponential growth: line curving up
  • logarithmic growth: line curving to the side

The problem is that logarithmic starts steep and then curves as it slows down. People mistake that steep start as exponential growth, unaware of the implications of something growing that fast. It is things like this that testers need to so often say "show me the data."

Books | Wayne Roseberry, Software Testing Enthusiast

reddit.com
u/waynemroseberry — 6 days ago

"I'm doing something" bias

One of the things that gets in the way of effective testing is trying to do testing while you have some other task in mind. The drive to complete narrows our attention so we don't see obvious problems that come up in the middle of the task.

Excerpt from my book "Drawn to Testing"

>"I'm doing something" almost always comes with "...and don't bother me with any other information." This may help you get whatever that is done, and it can also be a disaster for someone trying to test for problems.

...

>1. always be prepared to capture information

>2. mentally remind yourself before you start that this other thing is probably engaging and might motivate you to ignore important issues

>3. watch out for the workarounds - everything you do getting around a problem to make progress was probably something you ought to investigate and report as an issue

https://preview.redd.it/xglkdjdg81ah1.jpg?width=816&format=pjpg&auto=webp&s=e2bceed1c42b63aa16e1436d7cec77a132711d58

reddit.com
u/waynemroseberry — 8 days ago
▲ 7 r/softwaretesting+1 crossposts

Problems Testing Under “Real” Conditions

>The most complex testing we ever do usually happens when we test under conditions that look like, or sometimes are, production systems. We connect to real running instances of dependencies, platforms, services, and data sources. The various network stacks, routers, identity services, request protection, configurations, service and domain lookup and registration are all real running instances. All the limitations of production apply. All the behaviors are the same.

>We often find bugs in such a configuration we do not find earlier in simpler environments. Services behave in unexpected ways, data is slightly different, errors occur we don't otherwise see. We catch a lot of unknowns this way. We are tempted to move all our testing under this semi-production, staging environments.

>The problem is we have the least amount of control over test conditions in these environments. We usually have no influence over data, some of which may be transient and changing over time. We cannot invoke behaviors of timing, order differences, failure, performance deviations. We are usually distant from diagnostic logs and signals that let us test with high precision and better information. Testing under these conditions is usually far more difficult, far more uncertain, far slower, far more expensive than in simpler environments.

>It is usually to our advantage to do the difficult work of simulating as much of that "real" environment in testing environments where we can control everything. This is almost always a deep commitment to analysis and product design, build system, and environment design that supports effective simulation. Getting this right is not easy, but it is better than trying to get by without it. The alternative is slow, unreliable, expensive testing activity, usually supported by overwrought automation suites weighed down by the attempt to control services and data sources and conditions that cannot be controlled. This doesn't mean we should never test in staging environments. We will always find problems in them and in production that we missed with earlier testing. Once we do as much testing as we can under conditions we can control efficiently, quickly, reliably, we then complement that with testing in more complex environments. While there, we expand the net as wide as we can. Take advantage of the rich collection of application activity, the rich data state. Take user scenarios that are normally meant for simple, cleaner conditions and try them out with data that looks more realistic or alter the user paths off the regular path and see what comes up. Scour system logs and application telemetry for any sign of error, failure or unexpected behavior. Try user scenarios that cross as many services and data sets as possible. Everything you do in this environment is going to take extra work to understand, it is a good idea to enrich the coverage with as much possibility of unanticipated behavior as possible.

Excerpt from Drawn to Testing Again, my second book of cartoons and articles about software testing.

u/waynemroseberry — 8 days ago