Blog Listing

Quality Assurance Image Library

Check out the growing QA Image Library. This is my personal colleciton of Slack Images for that perfect QA Moment.

October 22, 2024

QA Clichés

cliche
Some common Football cliches.

In the many years of my software testing, there are several clichés or commonly repeated phrases that testers, developers, and project managers might say during meetings:

  • "It works on my machine." - Often said by developers when a bug can't be reproduced in their local environment.

  • "That's not a bug, it's a feature." - A humorous or sometimes serious claim that unintended behavior might actually provide some value or was intended all along.

  • "Have you tried testing using incognito mode?" - Often highlights issues related to session management, caching, or initialization.

  • "Works as designed." - This can be a genuine clarification or a way to push back on a bug report when the software is behaving according to the specifications, even if those specifications might now seem flawed.

  • "It's not reproducible." - When testers or users report an issue that can't be consistently replicated, leading to challenges in debugging.

  • "We need more test cases." - Often said when unexpected issues arise, suggesting that the existing test suite might not be comprehensive enough.

  • "Let's take this offline." - Not unique to QA but commonly used when a bug or issue leads to a discussion that's too detailed or tangential for the current meeting.

  • "Did we test for this scenario?" - A question that arises when an unforeseen issue comes up, questioning the coverage of the test cases.

  • "The user would never do that." - A sometimes risky assumption about how the software will be used, which might overlook edge cases or unexpected user behavior.

  • "How quickly can you test this?" - Suggesting that QA engineers can speed up testing without impacting the quality of the test.

  • "This should be an easy fix." - Often underestimated, what seems simple might involve complex underlying code changes.

  • "We'll fix it in the next sprint/release." - When time runs out, or when a bug is deemed not critical enough for immediate action.

  • "Automate all the things!" - While automation in QA is crucial, this phrase humorously points to the sometimes overly enthusiastic push for automation without considering the ROI.

  • "It passed in staging, why is it failing in production?" - Highlighting environment-specific issues or differences in data sets.

  • "QA found another 'corner case'." - Recognizing that QA teams often find bugs in the most unexpected or rarely used functionalities.

Q A Cliche

These clichés reflect the ongoing dialogue between intention, design, implementation, and real-world use in software development. They encapsulate the challenges, humor, and sometimes the frustrations inherent in the QA process.

Next Week's blog post is about scary sayings heard in QA.

October 15, 2024

Playing Politics at Work

Welcome to the world of Quality Assurance, where finding bugs is just one part of the job. Beyond the technical challenges, there's a whole other layer that can be even more complicated: navigating the political landscape of corporate America. You might think the office politics are confined to boardrooms, but the reality is, they can affect everything - your projects, your career, and even the quality of your work.

Old Office

The Reality: A Tight-Knit Core Group

In many businesses, there's a core group of people who pull the strings behind the scenes. They're often managers or senior leaders who've known each other for years and wield significant influence. These people tend to hang out together, have lunch offsite, and make key decisions that ripple throughout the organization. They may not be the ones in the trenches, but they control what happens on the battlefield.

For newcomers - especially those with fresh ideas and an eagerness to improve processes - this can feel like a brick wall. You might bring a brilliant suggestion for streamlining the release process or optimizing the testing workflow, but getting buy-in from the core group can feel impossible. They may view outsiders, especially those with different perspectives, as a threat to their status quo.

My Experience: The Manager with the Sales Hat

I've been in that position before. My former manager at a very large ecommerce site was so focused on impressing this core group that our one-on-one meetings became a rarity. Instead, he'd be off attending every meeting he could with the key decision-makers, trying to climb the corporate ladder. He wasn't a bad person, but he made it clear where his priorities lay - being seen by the right people, rather than supporting the people under him.

It was frustrating, to say the least. There I was, trying to push for improvements in our testing processes and advocating for better quality, but it often felt like my efforts were invisible. If I wanted to make progress, I needed to understand the lay of the land and find ways to navigate around it.

Office Place

Finding Your Path: Focus, Over-Deliver, and Skill Up

Here's the reality check: as a QA Engineer, you may not be part of the "in" crowd right away, but you don't have to be sidelined. There are strategies, that I have learned, which you can use to build your reputation and make your mark:

  1. Focus on Your Goals: Don't get distracted by the politics, but don't ignore them either. Focus on delivering high-quality work consistently. Make sure your bug reports are thorough, your test plans are well-documented, and you're always looking for ways to improve the product.

  2. Over-Deliver When It Matters: This is your ticket to building credibility. Sometimes, it means burning the midnight oil or working through a weekend. But if you can pull off a critical testing phase or help recover a project that's about to miss a deadline, people notice. It shows you're dedicated and reliable, and it might even catch the eye of those key decision-makers.

  3. Be Ready with Your 'Sales Hat': When you do have ideas for improvements, be prepared to sell them like a pro. This means doing your research, building a solid business case, and framing your suggestions in a way that appeals to their priorities. It's not just about being right - it's about being persuasive.

  4. Invest in Your Skills: The political climate might not change overnight, but you can keep improving yourself. Learn Python, JavaScript, or whatever new tool is in demand. These skills not only help you automate tedious testing tasks, but they also make you more valuable, both inside and outside of your current organization.

Why It's Worth It

It can be tempting to give up when it feels like you're shouting into a void. But navigating the politics is a skill in itself, and one that can pay off in the long run. You don't have to become best friends with the core group, but if you can show that you're competent, dependable, and skilled, you might just find yourself being invited to that offsite lunch one day.

And if you don't? Well, the skills and reputation you build along the way will follow you wherever you go. You'll be prepared for whatever comes next, whether it's a new opportunity within the company or a fresh start somewhere else.

After all, Quality Assurance isn't just about making sure the software works - it's about finding a way to thrive, even when the landscape around you isn't as polished as the code you test.

October 8, 2024

The Silent QA Detective

Steve QA Guy

Throughout this month, I am concentrating on QA Stories, highlighting remarkable events from various companies I've worked with. This week, I'm reminded of a reserved QA engineer whom we'll call Steve. He was exceptional at his job - uncovering even the most stubborn bugs. His ability to pinpoint the trickiest problems in web applications made him legendary among developers, despite his perpetually low-key demeanor. Here are a few stories from Steve's bug-hunting escapades that are still circulated within the Dev communities.

The Phantom Dropdown Issue

Steve's first victory was what developers called the "Phantom Dropdown Issue." It was a classic case of "it works on my machine" that had stumped everyone for weeks. The dropdown worked perfectly in all environments except for a few random occurrences on production. Most of the team chalked it up to user error, assuming that the customers must have been doing something wrong.

Steve, however, decided to dig deeper. He observed that the bug occurred only during very specific conditions- when a user with a regional setting of "en-UK" tried to access the dropdown on a Monday morning. It turned out that the JavaScript controlling the dropdown couldn't handle a particular time parsing during this transition. Steve quietly filed the bug report, detailing the obscure conditions that caused it. Developers were stunned - how had he even thought to test that?

When asked how he found it, he shrugged and said, "I just listen to WRKO for the talk, so I had time to think." That left everyone scratching their heads. How Steve's radio habits connected to the bug was beyond them, but they knew better than to question the man who could find a needle in a haystack.

The One-Pixel Invisible Button

Another time, Steve uncovered what the team later dubbed "The One-Pixel Invisible Button" issue. Users reported that their session would randomly refresh, losing all their progress. As usual, no one could reproduce it. Frustration was high, and Steve, as always, remained calm.

One afternoon, he took his laptop, sat in the break room, and pulled up the site. A few minutes later, he came back to the team, holding a stack of printed screenshots with highlighted regions. The culprit? A single, misplaced invisible button- just one pixel wide- hidden within the footer.

Apparently, whenever a user's mouse hovered over that pixel while scrolling, it triggered a refresh event. Steve discovered that it only affected users on certain screen resolutions - an anomaly that most testers would have ignored. He summed it up with his characteristic nonchalance: "Think outside the box, but don't forget to close the box once you're done."

The Mysterious Cache Flaw

Then there was the time he identified a cache issue that occurred only during high-traffic events. Users would get logged out unexpectedly, right during peak periods such as quarter end. The developers went back and forth with the server logs but couldn't pinpoint the root cause.

Steve, though, noticed a pattern. It only happened when users were refreshing their pages at precisely midnight. Most saw it as a coincidence, but Steve wasn't one for coincidences. He discovered that the session cookie's expiration time overlapped with a server-side cache refresh cycle, which triggered unexpected logouts. It was such a specific edge case that the fix involved changing a single line of code, but it saved the team's reputation.

When asked how he managed to spot the issue, Steve just said, "Don't assume, verify." Again, no one understood how that was relevant, but they were just relieved he found the problem.

Conclusion: The Value of Quiet Observation

Steve's bug-hunting prowess became the stuff of legend, not because he was loud or boisterous, but because he knew how to pay attention to the little details. While others might focus on the obvious, he had an uncanny ability to consider the strange and unexpected scenarios that others dismissed. To Steve, finding bugs was like slowly chiseling away at Stone Mountain with a hand tool- meticulous, precise, and never rushed.

He never sought the spotlight, but in the world of QA, the results spoke for themselves. Developers might have laughed at his quirky remarks or puzzled over his non-sequiturs, but they also knew one thing for sure: if there was a bug hiding somewhere in the code, Steve would find it.

October 1, 2024

The Importance of Time Management in QA

Buring the Midnight Oil

In the dynamic world of software development, effective time management is crucial for Quality Assurance (QA) teams. As a QA manager, it's essential to ensure that your team balances their time between tracking bugs and seeking additional help when solutions are not immediately apparent. This balance not only improves productivity but also ensures that new issues do not pile up while existing ones are being investigated.

The Story of Peter

Let me share an example from my own experience. Years ago, I managed an employee named Peter (not his real name). Peter was exceptional at identifying and investigating why customers were encountering errors. He had a knack for finding those weird, one-off cases that often slipped through the cracks. However, Peter's dedication to solving these issues sometimes led to a significant problem: he would spend so much time investigating a single issue that new issues would start to accumulate. Peter had the habit of trying to solve really complex issues and would work late into the night to do so. While he was highly skilled and well-loved by the engineers, he simply spent too much time on one issue.

Setting Time Limits and Seeking Developer Input

To address this, it's important for managers to set time limits on bug fixes. If an issue isn't resolved within the allocated time, it's crucial to collaborate with developers to see if they can provide additional input. This collaborative approach not only speeds up the resolution process but also brings fresh perspectives to the problem.

The Role of Logging

One effective strategy that often helps is adding additional logging to the system. Enhanced logging can provide valuable insights into why things are not working correctly, making it easier to identify and fix issues. However, it's equally important to remember to remove the logging once the issue has been resolved. There's nothing worse than having to debug future issues with an overwhelming amount of logging data to sift through.

Conclusion

So, fellow QA testers, remember:

  1. Set time limits for bug investigations.
  2. Seek help if you can't solve it in time.
  3. Log smart, but clean up afterwards.

Time management isn't just about working faster; it's about working smarter. Let's keep hunting those bugs efficiently, so we can all go home at a reasonable time. Happy testing!

September 24, 2024

The Great Spell-Checker Saga

Bug Dictionary

Let me take you back to one of the more entertaining moments of my software testing career. Picture this: I'm on the Electronic Services team, and we're rolling out a spell-checking tool for a project. Seems simple, right? Wrong.

Spell-Check Shenanigans Story

It started with a bug - nothing new in the life of a QA professional. The spell-checker wasn't catching the most basic misspelled words. I'm talking about words like "teh" and "recieve" - ones that practically scream for correction. Naturally, I flagged the issue, and the developer confidently told me, "No problem, I'll just add those to the dictionary!"

Ya, this should have been the first red flag. Sure enough, the bug was back in no time, but this time, I tried different words. And guess what? The spell-checker blissfully ignored them, too. I went back to the developer, who scratched his head, muttering something like, "Hmm? maybe I'll just add those words to the dictionary too."

At this point, I was watching him shuffle through code like someone desperately looking for their keys in the couch cushions. Each "fix" he applied was like patching a leaky boat with chewing gum. Meanwhile, I kept testing, and with every new misspelling, it became clearer: the spell-checker was not ready for Production.

Then, enter Developer #2 - our hero. He walked in the next morning with a fresh cup of coffee and a confident air, looked at the situation, and immediately knew something was amiss. After a quick code review, he calmly pointed out that the first developer had been using an outdated third-party library. Not only that, but the library was so outdated, it might as well have been written in Perl.

"Let's link it to this other library," Developer #2 suggested.

Boom. Just like that, everything worked like a charm. The spell-checker started catching misspelled words faster than you could say "recieve." No dictionary hacks, no chewing gum fixes - just smooth sailing.

This rollercoaster of a bug hunt taught me a few things:

  1. Quick fixes might be fun, but they're usually useless: Adding words to the dictionary every time something breaks is like trying to fix a flat tire by painting the car. It looks productive but does nothing.

  2. There's always a second opinion for a reason: Developer #2 might as well have been wearing a superhero cape. Sometimes, it takes a fresh brain to clean up the chaos left behind by "creative" problem-solving.

In the end, we got the spell-checker to work, but not without a few laughs and some comically clumsy developer moments along the way. And hey, sometimes in QA, that's just how it goes.

September 17, 2024

Backwards Law

Q A Backwards Law

Have you ever felt like the most elusive bugs always seem to surface at the most inopportune times? Perhaps you've spent hours poring over test cases, only to find that the most critical defects were discovered by a seemingly random user.

This phenomenon isn't uncommon. In fact, it's a well-known principle in software quality assurance called the Backwards Law.

What is the Backwards Law?

The Backwards Law suggests that the most significant problems in a system are often the ones we least expect or anticipate. In other words, the bugs that cause the most disruption or embarrassment are typically not the ones we spend the most time testing.

Why Does the Backwards Law Exist?

There are several reasons why the Backwards Law holds true:

  • Overconfidence: When we believe a system is thoroughly tested, we may become complacent and overlook potential issues.
  • Cognitive biases: Our brains are wired to seek patterns and confirmation, which can lead us to ignore contradictory evidence or unexpected outcomes.
  • Unforeseen circumstances: Real-world usage can expose vulnerabilities that are difficult to simulate in a controlled testing environment. How to Apply the Backwards Law in Quality Assurance While the Backwards Law might seem counterintuitive, it can be leveraged to improve your testing strategies.

Here are some tips:

  1. Embrace uncertainty: Recognize that even the most meticulously planned tests cannot account for every possible scenario.
  2. Prioritize risk: Identify the areas of your system that are most critical to the user experience or business objectives. Focus your testing efforts on these high-risk areas.
  3. Encourage exploratory testing: Allow testers to explore the system freely, without strict adherence to predefined test cases. This can help uncover unexpected issues.
  4. Leverage user feedback: Gather feedback from real users to identify problems that may have been missed during testing.
  5. Conduct stress testing: Simulate heavy loads and extreme conditions to uncover performance bottlenecks or unexpected failures.

By understanding and applying the Backwards Law, you can develop a more effective and comprehensive quality assurance strategy. Remember, the most significant bugs are often the ones we least expect.

Use it All The Time

My testing has consistently shown that the Backwards Law is particularly effective at uncovering unique bugs, especially during the post-regression phase. It's during these final QA checks that unexpected issues often arise. The challenge lies in rapidly reproducing these bugs so engineering can address them promptly. They frequently inquire about the specific testing activity that led to the discovery.

Do you have any experiences with the Backwards Law in your quality assurance work? Share your thoughts in the comments below.

September 10, 2024

Engaging ice breaker questions for QA

Last week I attended a local QA Conference. One of the purposes of going to such conferences is to network with people. Before going, I asked ChatGPT to provide some ideas for ice breaker questions when meeting someone in the hallway.

Here are five engaging ice breaker questions tailored for a QA engineer at a Tester's conference:

  1. What's the most interesting bug you've ever encountered, and how did you track it down?
    This question not only breaks the ice but also dives into technical storytelling, which can reveal a lot about their problem-solving skills and experiences.

  2. Which testing tools or methodologies have you found most revolutionary in your work recently?
    This can lead to a discussion about current trends, tools, and methodologies in QA, providing insights into what's new or effective in the field.

  3. How do you keep up with the rapid changes in technology and testing techniques?
    Networking isn't just about sharing what you know now but also about learning how others stay updated, which can be mutually beneficial.

  4. Have you worked on any projects where QA significantly influenced the product's direction?
    Can you share that story? This encourages sharing of experiences where QA made a tangible impact, showcasing the importance of their role and possibly leading to a deeper professional discussion.

  5. What's one piece of advice you wish you had received when you started in QA? This question helps to exchange wisdom, potentially offering new perspectives or tips that could be useful for both parties, while also reflecting on personal growth in the field.

These questions are designed to foster a connection through shared interests, experiences, and the continuous learning curve in the QA profession, making them ideal for networking at a conference.

September 3, 2024

Attending QA Conferences

As a Quality Assurance (QA) professional with a decade of experience, I've had the privilege of attending numerous QA conferences. These events have been invaluable for networking, information gathering, and professional growth. In this blog post, I'll share some insights on how to make the most out of attending a QA conference.

Conference2015

The Value of QA Conferences

QA conferences are a goldmine of knowledge and opportunities. They bring together industry experts, thought leaders, and fellow QA professionals, providing a platform to exchange ideas, learn about the latest trends, and discover innovative tools and techniques. Over the years, I've found these conferences to be a great source of inspiration and a catalyst for professional development.

Preparing for the Conference

To get the most out of a QA conference, preparation is key. Here are some tips to help you prepare:

  1. Research the Agenda: Before attending the conference, review the agenda and identify the sessions that align with your interests and professional goals. This will help you prioritize and make the most of your time.

  2. Set Goals: Define what you want to achieve from the conference. Whether it's learning about a specific topic, networking with industry leaders, or discovering new tools, having clear goals will keep you focused.

  3. Bring a Notebook: Taking good notes is essential. Bring a notebook and jot down key points, insights, and ideas from each session. This will help you retain information and refer back to it later.

During the Conference

While attending the conference, it's important to stay engaged and proactive. Here are some strategies to maximize your experience:

  1. Active Participation: Instead of just sitting and listening, actively participate in the sessions. Ask questions, join discussions, and engage with the speakers and attendees. This will enhance your learning experience and help you build connections.

  2. Network: Take advantage of networking opportunities. Introduce yourself to fellow attendees, exchange contact information, and join networking events. Building a strong professional network can open doors to new opportunities and collaborations.

  3. Take Notes for Your Team: As you attend sessions, think about how the information can benefit your QA team. Take detailed notes and highlight key takeaways that you can share with your team later.

Post-Conference Actions

After the conference, it's important to consolidate and share the knowledge you've gained. Here's how you can do that:

  1. Present to Your Team: One of the best ways to reinforce your learning is to present what you've learned to your QA team. Prepare a presentation with one or two slides for each session you attended. This will help you organize your thoughts and share valuable insights with your team.

  2. Implement New Ideas: Identify actionable ideas and strategies from the conference that can be implemented in your QA processes. Discuss these with your team and work together to integrate them into your workflow.

  3. Follow Up: Reach out to the contacts you made at the conference. Send follow-up emails, connect on LinkedIn, and continue the conversations you started. Maintaining these connections can lead to future collaborations and opportunities.

STP Conference

Conclusion

Attending QA conferences is a fantastic way to stay updated with industry trends, expand your professional network, and enhance your skills. By preparing effectively, actively participating, and sharing your knowledge with your team, you can maximize the benefits of these events. So, the next time you attend a QA conference, remember to take good notes, engage with others, and bring back valuable insights to your team. Happy conferencing!

August 27, 2024

Identifying the Current Pytest Test

In the realm of Python testing with Pytest, understanding the currently executing test can be a game-changer, especially when aiming for code reusability and efficiency. This blog post will delve into the techniques that allow you to identify the specific Pytest test being run, empowering you to write more modular and adaptable automation scripts.

Leveraging os.environ.get('PYTEST_CURRENT_TEST')

One of the most straightforward methods to determine the current test involves utilizing the os.environ.get('PYTEST_CURRENT_TEST') environment variable. This variable, when accessed, provides a string representation of the test's full path, including the module and function names.

Example:

import os

def my_test():
    current_test = os.environ.get('PYTEST_CURRENT_TEST')
    print(current_test)  # Output: tests/test_example.py::my_test

Parsing the Test Name

To extract specific information from the PYTEST_CURRENT_TEST string, you can employ Python's string manipulation techniques. For instance, to obtain just the test function name, you might use:

import os

def my_test():
    current_test = os.environ.get('PYTEST_CURRENT_TEST')
    test_name = current_test.split('::')[-1]
    print(test_name)  # Output: my_test

Conditional Execution Based on Test Name

By parsing the test name, you can implement conditional logic within your test functions. This allows you to tailor the test's behavior based on the specific scenario.

import os

def my_test():
    current_test = os.environ.get('PYTEST_CURRENT_TEST')
    test_name = current_test.split('::')[-1]

    if test_name == "test_login":
        # Perform login-specific actions
    elif test_name == "test_logout":
        # Perform logout-specific actions
    else:
        # Perform general actions

Real-World Example: Dynamic URL Generation

Consider a scenario where you need to dynamically generate URLs based on the test being executed. By examining the test name, you can determine the appropriate URL parameters.

import os

def test_prod():
    do_something(url="https://prod.example.com")

def test_qa():
    do_something(url="https://qa.example.com")

def do_something(url):
    # Perform actions using the provided URL

Additional Considerations

  • Test Naming Conventions: Adhering to consistent naming conventions for your test functions can simplify parsing and conditional logic.
  • pytest-xdist: If you're using parallel testing with pytest-xdist, be aware that the PYTEST_CURRENT_TEST environment variable might not be set for all worker processes.
  • Custom Markers: For more granular control, consider using pytest markers to categorize tests and apply conditional logic based on these markers.

Conclusion

By effectively utilizing the PYTEST_CURRENT_TEST environment variable and understanding how to parse test names, you can write more flexible, reusable, and maintainable Pytest automation scripts. This knowledge empowers you to create tailored test cases that adapt to different scenarios and enhance the overall effectiveness of your testing efforts.

August 20, 2024

Testing Without Representation

As the Democratic National Convention unfolds in Chicago, it's a fitting time to reflect on a concept that resonates deeply in both the political and software testing worlds: "Taxation without Representation." This phrase famously underpinned the American Revolution, voicing the frustration of citizens taxed by a government in which they had no say. In the realm of software quality assurance (QA), a parallel can be drawn to "testing without representation."

Taxation Q A

What Is Testing Without Representation?

Just as citizens should not be subject to laws and taxes without having a voice in government, software should not be tested without involving those who will ultimately use it. When the end-users, stakeholders, and other key representatives are not included in the QA process, the testing may fail to capture the real-world scenarios that the software will encounter. The result? Missed bugs, unmet requirements, and a product that doesn't align with user needs.

The Risks of Exclusion

When end-users and stakeholders are excluded from the testing process, several risks emerge:

  1. Unidentified Critical Bugs: Without a clear understanding of how the software will be used in the real world, QA teams might overlook bugs that could severely impact user experience.

  2. Misaligned Features: Features that developers see as valuable may not resonate with users, leading to a disconnect between the software's functionality and the users' needs.

  3. Increased Costs: Addressing issues after a product release is far more costly than catching them early. Testing without representation can lead to costly fixes, patches, and potentially even brand damage.

The Power of Inclusive Testing

To avoid these pitfalls, it's crucial that QA teams involve representatives from all relevant groups in the testing process. This includes:

  • End-Users: Those who will use the software daily can provide insights that no other group can.
  • Project Managers: They understand the broader business objectives and can ensure the software aligns with overall goals.
  • Developers: Collaboration between QA and development can lead to a more seamless testing process.
  • Designers: Their input ensures that the user interface is both functional and user-friendly.

By including these voices, QA teams can ensure a comprehensive testing process that accurately reflects the needs and expectations of all stakeholders.

Conclusion

Just as taxation without representation led to significant unrest and change, testing without representation can lead to unsatisfied users and costly errors. By embracing an inclusive approach to testing, QA professionals can deliver software that truly meets the needs of its users, resulting in a higher quality product and a better overall user experience.

In the spirit of the democratic ideals being discussed this week in Chicago, let's ensure our testing processes represent all voices, leading to better, more effective software.

About

Welcome to QA!

The purpose of these blog posts is to provide comprehensive insights into Software Quality Assurance testing, addressing everything you ever wanted to know but were afraid to ask.

These posts will cover topics such as the fundamentals of Software Quality Assurance testing, creating test plans, designing test cases, and developing automated tests. Additionally, they will explore best practices for testing and offer tips and tricks to make the process more efficient and effective

Check out all the Blog Posts.

Schedule

WednesdayiPhone 14 Pro Max
ThursdayNew England
FridayMacintosh
SaturdayInternet Tools
SundayOpen Topic
MondayMedia Monday
TuesdayQA