DEV Community

Cover image for Safe path to progress in Quality Assurance
Nikola
Nikola

Posted on • Edited on

Safe path to progress in Quality Assurance

Where to Start?

Ah, from the beginning, but let me give you an intro you’re probably familiar with. Technology has evolved significantly in every area and impacted every role and job, including Quality Assurance (QA). AI is now everywhere, but don't worry—it's clear we're not easily replaceable.

There will be a lot of text, but trust me, it will be helpful if you're at the start of your QA career.

In this article, we won't delve into trivial matters. If you can use artificial intelligence, use it to benefit yourself and learn something new, not just to avoid effort. I used AI to create the cover image for this post. It’s a lot better than doing it by myself in MS Paint, don’t you think?


Start with Manual Testing

yusuf-dikec-qa-meme
Here are a few things you need as a Junior QA engineer. And no, you don’t need to know everything you come across online.

Build a solid foundation in every aspect. Even if you’ve already started, revisit, refresh, and stay on track with your goal.


Basics of Testing

  • What is Manual Testing? Manual testing involves executing test cases manually, without automation tools. You play the role of an end user to ensure the application behaves correctly.
  • What is Test Documentation? Test documentation is crucial in QA to track testing needs, methods, and outcomes. Key components include:
    • Test Case: Detailed procedures to test a feature or aspect of a feature.
    • Test Plan: Outlines scope, approach, resources, and schedule for testing activities.
    • Test Strategy: Describes the overall testing approach for the software development cycle.
    • Test Report: Summarizes testing activities and results for stakeholders.
    • Bug Report: Documents defects found during testing, including steps to reproduce and fix.
  • What Types of Testing Exist? Different types of testing include:
    • Manual vs. Automated Testing: Manual involves human execution, while automated involves tools and scripts.
    • Functional Testing: Ensures the application meets requirements.
    • Non-Functional Testing: Focuses on performance, usability, and reliability.
    • Blackbox Testing: Tests without knowledge of internal workings.
    • Whitebox Testing: Tests with knowledge of internal code structure.
    • Ad-Hoc Testing: Unplanned testing without test cases.
    • Regression Testing: Verifies new changes haven’t affected existing functionalities.
    • Smoke Testing: Preliminary checks of basic functionality.
    • Sanity Testing: Verifies specific functionalities after changes.
    • Integration Testing: Tests interactions between different application modules.

Familiarize Yourself with Tools

Essential tools include:

  • Screenshot Tools: Snagit, and Lightshot for capturing visual issues.
  • Note-Taking Tools: Evernote, and OneNote for documenting findings.
  • DevTools: Browser tools (F12) for inspecting elements, monitoring network requests, debugging JavaScript, etc.

Explore DevTools

DevTools offer powerful features for manual testing:

  • Breakpoints: Debug JavaScript step-by-step.
  • Responsiveness: Test app on different responsive breakpoints.
  • Network Requests: Monitor data transfer.
  • Console: Execute JavaScript snippets and view logs.
  • Elements: Inspect and modify HTML and CSS.

Writing Test Cases

A key skill is writing clear, concise test cases. Use:

  • Gherkin Syntax: A domain-specific language with a simple structure:
    • Given: Initial context.
    • When: Action or event.
    • Then: Expected outcome.

Manual Testing Beyond the Front-End

When we talk about manual testing, it’s not just about front-end testing. Here’s a breakdown of how manual testing applies to different parts of an application:

  1. Front-End Testing
    • User Interface (UI): Testing the visual aspects of the application—layout, colors, fonts, and responsive design.
    • User Experience (UX): Evaluating how intuitive and user-friendly the interface is—navigation, form validation, usability.
    • Cross-Browser Testing: Ensuring consistent performance across different web browsers and devices.
  2. Back-End Testing
    • Database Testing: Checking data integrity and consistency by manually verifying database records and CRUD operations.
    • API Testing: Testing API functionality by sending requests and verifying responses.
    • Server-Side Logic: Validating server-side logic, business rules, and data processing.
  3. Integration Testing
    • Component Interactions: Ensuring seamless interaction between different application components.
    • End-to-End Testing: Validating the complete workflow from start to finish.
  4. Performance Testing
    • Load Testing: Assessing application performance under various load conditions.
    • Stress Testing: Evaluating how the application handles extreme conditions like high traffic or data volumes.
  5. Security Testing
    • Vulnerability Assessment: Checking for common security issues like SQL injection and XSS.
    • Access Controls: Verifying security permissions and access controls.
  6. Usability Testing
    • User Interaction: Observing real user interactions to identify usability issues.
    • Accessibility Testing: Ensuring accessibility for users with disabilities.
  7. Exploratory Testing
    • Ad-Hoc Testing: Conducting unscripted tests based on intuition and experience.
    • Scenario Testing: Creating and testing various user scenarios to identify potential issues.

Different Project Methodologies and Tools

Understanding project methodologies is crucial for a QA engineer, as they influence testing planning, execution, and reporting. We won’t discuss the Waterfall model or other methodologies; instead, we'll focus on Agile methodology.

Agile is a popular methodology emphasizing iterative development, collaboration, and flexibility. Key aspects include:

  • Iterative Development: Work divided into sprints (2-4 weeks) to deliver incremental product improvements.
  • Collaboration: Close teamwork among developers, testers, and product owners, with daily stand-up meetings.
  • Flexibility: Adaptability to changes in requirements based on user feedback and market needs.

For effective project management in Agile environments, popular tools include:

  • JIRA: Task and bug tracking, sprint management.
  • Azure DevOps (ADO): Project management, version control, CI/CD.
  • ClickUp: Task management, collaboration, and goal setting.

Don’t Rush into Coding But Keep Learning

Depending on your project, you might start with automation, manual testing, or both. Manual testing is irreplaceable, even if I’ve always loved coding and automation.

  • You Can’t Automate Everything: Automation isn’t a cure-all. Understand when automation is appropriate and when manual testing is more effective.
  • Prioritize Automation for Repetitive Tasks: Automate repetitive, time-consuming tests like regression or smoke tests to focus on complex scenarios.
  • Collaborate on Finding the Right Framework: Work with your Development or Tech Lead to choose the best automation framework for your project.
  • Keep Learning and Adapting: Stay updated with trends, tools, and methodologies. Continuous learning will help you stay ahead and use automation effectively.

Real-Life Example: Case Study

Consider this scenario: You're testing a new feature on a website's payment gateway. You'd start with manual testing to ensure the UI is intuitive, the backend processes transactions correctly, and no integration issues exist between the payment API and the database. Once this is thoroughly tested, you can automate the regression tests to save time on future releases.


Summary

We’ve reached the end, and I know it’s been a lot of text for a single blog post. But take what you need from it—those lists you can use as steps through your career. Start with manual testing without overthinking it. Begin with the basics; Google is your friend. Research what QA is all about and its significance. Then, move on to understanding the types and kinds of testing, documentation, and so on.

In the world of testing, the biggest mistakes often happen when you try to rush things. It’s crucial to take your time to thoroughly understand each aspect and build your knowledge gradually.

Remember, manual testing is the foundation upon which you’ll build your skills. Familiarize yourself with test documentation, different testing types, and essential tools like DevTools. Once you’re comfortable with manual testing, you can start exploring automation frameworks, but don’t rush into it. Master the basics first and use the lists and resources provided as your guide.

In summary, don’t rush—take your time to learn and understand each component of QA. Your thorough approach will pay off in the long run.


Happy learning! If you have any questions or need further clarification, don’t hesitate to ask.

Top comments (0)