As part of his keynote at QAFest in Kyiv in 2018, Michael Bolton did a performance of his Test Rap, inspired by Hamilton.
He’s performed this a bunch of times over a number of years, with lyrics altering from time to time (since, like any test plan, or any software, it’s never “finished”), but one online source gave the lyrics as:
Experimentation, learning, freestyle exploration
studying and modeling, conjecture, observation
test code development, task prioritization
checking out competitors, preparing simulations
reconciling your testing with required regulations
gathering, assessing, and applying information
deliberation, judgement, designing visualizations
setting up the lab to try complex configurations
working out the problems in a puzzling situation
finding ambiguity in a product specification
trying to look beyond the predicted expectation
that’s because testing’s all about investigation
questioning and learning-playful product interaction
trying to keep your focus while you’re managing distraction
sense-making, myth-breaking, decision making, no faking
stressing out the product to discover where it’s breaking
refining test approaches through deliberate practice
how could hackers hack this? don’t give them access!
working with the marketers to show the app’s power
point to all the features try to finish in an hour
So I shall socialize to promote collaboration
other folks can help me with my testing preparation
talking with the managers to learn what they require
testing for charisma—that’s what customers desire
refactoring at every step keeping things maintainable
let’s get over overtime and make the pace sustainable
working with the marketers to show the app’s power
point to all the features try to finish in an hour
selecting, configuring, and then applying tools
applying critical thinking confirmation is for fools
pattern recognition, distributed cognition
helping shy colleagues get over inhibition
building coverage models, analysing risk
eliminating waste, trying to keep the pace brisk
wrestling with problems in the setup of environments
interviewing users to discover their requirements
interrupted and disrupted ‘cos the product’s full of bugs
the fellas who developed it must have been on drugs!
I want to say this while I’m in a rap rhythm
a check’s a part of testing encoded in algorithm
testing’s much more than automated checks and test cases
human variation puts the product through its paces
use the tools powerfully, that’s what I’m suggesting
but don’t try to tell me you ca automate the testing!
Now, given that Michael is a world-renowned expert on the topic of modern software testing, let us assume that this rap contains “good things”, and make a further (possible spurious) assumption that it holds at least one mention of every important aspects of testing skill & activity.
Could we rate ourselves against the lyrics of a rap?
Here’s an attempt…
Lyric | Interpreted Meaning | Score |
---|---|---|
Experimentation, learning, freestyle exploration | Do we confine ourselves to scripts, or do we allow ourselves to hypothesise and experiment and learn about the software under test? | |
studying and modeling | Do we take time to abstract the behaviour into a model, ask questions of the model, then translate them into tests of the real-world software? Instead of “this text field does this”, it’s “the system has these inputs and performs this action” | |
test code development, | Automation, tools, scripting, CI, linting, and anything else code-based that gives a lens on quality or helps a human gain some insight. | |
task prioritization | Prioritising tasks based on their importance to the overall testing effort. Do we blindly take tickets in some natural order? | |
checking out competitors, | Analysing competitor products to inform ourselves on Comparable Products as a risk heuristic (since if every other app works one way users could be confused if ours doesn’t) | |
preparing simulations | Simulating real-world scenarios to test the software under various conditions (e.g. network unreliability) | |
reconciling your testing with required regulations | Ensuring that the testing process and activity complies with relevant laws, regulations or standards for your business or sector. | |
gathering, assessing, and applying information | Collecting information about the software and using it to guide the testing process. Testing is inherently a learning process, and this is probably the most important item on this list. | |
deliberation, judgement, | Making informed decisions about how to test the software and how to action its findings. | |
designing visualizations | Representing the findings of testing as images to support the teams understanding of the product | |
setting up the lab to try complex configurations | Configuring more complex test environments and conditions to simulate realistic usage scenarios that might uncover risk. | |
working out the problems in a puzzling situation | Troubleshooting issues, solving complex problems or understanding complex behaviours that arise during testing. | |
finding ambiguity in a product specification | Identifying areas of a product specification that are unclear or ambiguous, and working to resolve those issues. | |
trying to look beyond the predicted expectation | Thinking creatively and trying to anticipate how users may use the software in unexpected ways. | |
questioning and learning-playful product interaction | Interacting with the software in playful ways to uncover issues and learn about its capabilities. | |
trying to keep your focus while you’re managing distraction | Staying focused on the testing process even when distractions or interruptions occur. | |
sense-making, myth-breaking, decision making, no faking | Using critical thinking skills to make informed decisions and challenge assumptions about the software. | |
stressing out the product to discover where it’s breaking | Testing the software under extreme conditions to uncover any weaknesses or issues. | |
refining test approaches through deliberate practice | Continuously improving the testing process through deliberate practice and refinement of testing techniques. | |
how could hackers hack this? don’t give them access! | Considering potential security vulnerabilities and testing the software with the mindset of a malicious hacker. | |
working with the marketers to show the app’s power | Collaborating with marketing teams to showcase the software’s capabilities to potential users. | |
point to all the features try to finish in an hour | Quickly demonstrating all the software’s features to potential users in a limited amount of time. | |
So I shall socialize to promote collaboration | Networking and building relationships with colleagues to promote collaboration and knowledge sharing. | |
other folks can help me with my testing preparation | Seeking input and assistance from other team members to prepare for testing. | |
talking with the managers to learn what they require | Communicating with managers to understand their expectations and requirements for the testing process. | |
testing for charisma—that’s what customers desire | Testing not only for functionality but also for the software’s overall appeal to customers. | |
refactoring at every step keeping things maintainable | Modifying the code to improve its quality and maintainability while testing | |
let’s get over overtime and make the pace sustainable | Avoiding working overtime to ensure that testing is done at a sustainable pace | |
working with the marketers to show the app’s power | Collaborating with marketers to highlight the app’s strengths and features | |
point to all the features try to finish in an hour | Demonstrating all the app’s features within a short period | |
selecting, configuring, and then applying tools | Choosing the right tools for testing and configuring them for the project | |
applying critical thinking confirmation is for fools | Emphasizing the importance of critical thinking and questioning during testing rather than relying solely on confirmation bias | |
pattern recognition, distributed cognition | Using pattern recognition and distributed cognition to understand complex systems and identify potential issues | |
helping shy colleagues get over inhibition | Supporting and mentoring colleagues who are hesitant or lacking confidence in testing | |
building coverage models, analysing risk | Developing coverage models and analysing risk to ensure thorough testing | |
eliminating waste, trying to keep the pace brisk | Minimizing unnecessary activities and trying to maintain a fast pace during testing | |
wrestling with problems in the setup of environments | Troubleshooting issues with the setup and configuration of testing environments | |
interviewing users to discover their requirements | Conducting interviews with users to identify their needs and requirements for the software | |
interrupted and disrupted ‘cos the product’s full of bugs | Facing disruptions and interruptions during testing due to the presence of bugs in the software | |
a check’s a part of testing encoded in algorithm | Acknowledging that automated checks are an essential part of testing, but they are not the only form of testing | |
testing’s much more than automated checks and test cases | Highlighting that testing is more than just automated checks and test cases and involves human variation and critical thinking | |
human variation puts the product through its paces | Emphasizing that the uniqueness and variation in human behaviour put the product to the test during testing | |
use the tools powerfully, that’s what I’m suggesting | Encouraging the use of testing tools to their full potential | |
but don’t try to tell me you can automate the testing! | Acknowledging the importance of automation in testing but also recognizing that testing involves human variation and critical thinking that cannot be entirely automated |