Category Archives: Software QA Testing

Google Puppeteer

Puppeteer : Is it time to ditch Selenium?

Google has introduced a new library based on Chromium’s dev tool protocol. The library grants high-level API to interact with chromium and handle most tasks which you can perform using Chromium dev tools. The library is implemented in node.js and is really easy to get started once you install required packages using the node package manager.

……………………………………………………………………………………………………

Why Puppeteer?

Puppeteer flexes its muscle where selenium misses out. It is not just limited to interactions with the web application under test performing tasks like for e.g. interacting with dom, submitting forms, generating screenshots and pdf of web pages but also in intercepting network activity, throttling CPU and network, generating timeline trace and mocking API amongst some. The puppeteer can be easily be used to write end-to-end automation test suites with the benefit of getting a detailed timeline of the performance of all the assets (images, javascript files and so on).

Engineers can easily switch between headless and non-headless modes. While writing the automation suite, non-headless mode gives a good view of how the browser is interacting with the application under test and helps in debugging; just like in Selenium. But in production, we can execute suite in a headless mode as it reduces execution time and save resources.

……………………………………………………………………………………………………

Is it really that Good?

Yes, it enjoys the goodness of async code execution. You can always perform multiple tasks simultaneously following the latest javascript async await conventions. You can test the behavior of your application under different screen sizes. The network can be throttled on demand to find out how your application will run at low internet speeds. For e.g. if you want to test the error messages in an application when a user loses internet connectivity, puppeteer can easily handle such a scenario. Mocking APIs can also be achieved with utmost ease. For instance, if you want to test your “payment completed” screen but don’t want to go through the payment gateway flow, you can easily perform it with puppeteer by mocking the API response. With a detailed performance matrix, puppeteer can easily be used for performance testing.

So what are the drawbacks?

Google puppeteer supports only Chromium and Chrome out of the box. Third party implementations are available for Firefox and Internet Explorer. But they are experimental as of now and are missing a good chunk of the firepower. The documentation available is minimal as compared to selenium.

Why should you prefer Puppeteer over Selenium?

The targeted audience is the major deciding factor. If it majorly comprises of Chrome users you should go ahead with Puppeteer. Other factors include performing automation tasks which are not possible with selenium, like testing Chrome extensions, mocking API calls and so on. Selenium follows WebDriver protocol and has been from a very long time in the market compared to puppeteer hence itis better documented compared to puppeteer.

……………………………………………………………………………………………………

Conclusion

Puppeteer is a powerful library which has revolutionized the automation testing by overcoming functionalities missing in WebDriver protocol used by Selenium. Although it is still in the early stages, it promises a bright future, backed up as it is by the illustrious Chrome dev tools team.

……………………………………………………………………………………………………

If you have any queries in this field, talk to Mindfire Solutions. For over 19+ years now, we have been the preferred Software Development Partner of over 1000+ Small and Medium-sized enterprises across the globe.

Spread the love
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    1
    Share

Software Product Development Best Practices

Software Product Development Best PracticesThe digital technologies enable enterprises to automate various business processes and operations. But the technological needs differ from one enterprise to another. Based on the technological and business requirements, programmers nowadays have to write a variety of custom software products – desktop applications, web applications and mobile apps. Each type of application is built to meet specific business needs and based on predefined business requirements. Continue reading Software Product Development Best Practices

Spread the love
  • 6
  • 2
  •  
  •  
  •  
  • 1
  •  
  •  
  •  
    9
    Shares

Best Automation Testing Tools For 2018

Best Automation Testing Tools For 2018

A steady increase is being noted in the number of enterprises implementing agile methodology to deliver software applications rapidly. Many enterprises adopt DevOps – as an extension of agile methodology – to deliver high quality software applications by unifying software development and IT operations. Both agile methodology and DevOps emphasize on continuous delivery and test automation. The enterprises should coordinate the manual and automation testing efforts to get the best results. Continue reading Best Automation Testing Tools For 2018

Spread the love
  • 22
  • 1
  •  
  • 1
  • 1
  •  
  •  
  •  
  •  
    25
    Shares

Benefits of Outsourcing Web Application Testing

Benefits of Outsourcing Web Application Testing
Benefits of Outsourcing Web Application Testing

A very large percentage of consumers nowadays access websites and web applications on their mobile devices. But several studies suggest that consumers spend most of their digital media time on specific mobile apps. While developing a web application, an enterprise must focus on its mobile user experience to keep consumers engaged and persuade them to buy. The use experience delivered by a web application depends on a number of factors – accessibility, functionality, usability, performance, and security. Also, the user experience delivered by a single web application differs across browsers, devices, operating systems, and networks. An enterprise must implement a comprehensive web application testing strategy to measure its website’s user experience accurately. Continue reading Benefits of Outsourcing Web Application Testing

Spread the love
  • 3
  • 3
  •  
  •  
  • 1
  •  
  •  
  •  
  •  
    7
    Shares

Why should you outsource Software QA Testing?

Outsource Software QA Testing
Outsource Software QA Testing

Nowadays, consumers access the same software application on varying devices, platforms, and browsers. Your software application must functional flawlessly and deliver richer user experience across different user environments to become profitable. You need to perform elaborate software QA testing to assess the quality and user experience of the software properly. To assess the quality of the software properly, you need to perform various types of software testing – functional testing, performance testing, usability testing, integration testing, acceptance testing, and beta testing. Also, you have to repeat the tests across various devices, platforms, browsers, and networks to generate more reliable test results. Continue reading Why should you outsource Software QA Testing?

Spread the love
  • 7
  • 2
  •  
  • 2
  •  
  •  
  •  
  •  
  •  
    11
    Shares

18 Points Checklist for Software QA Testing

In the world of software QA testing, mastering the best practices is the key to success. This article presents 18 essential tips for QA professionals. From thorough test result analysis to maximum coverage and negative scenario testing, it covers a range of critical aspects. It emphasizes the importance of dividing applications into modules, early test case preparation, and involving testers from the start. The significance of regression testing, performance testing, and thinking beyond requirements is highlighted. Effective communication, prioritization, and continual learning round out the best practices, ensuring QA testers excel in their field and deliver high-quality software products.

Software Testing Best Practices: A Comprehensive Checklist

1) Thorough Analysis of the Test Results:

As a software QA testing professional, it is crucial to go beyond reporting bugs and provide a comprehensive analysis of the test results. Error logs can reveal valuable insights into the nature and root causes of defects. By including this analysis in the bug report, testers make it easier for developers to understand and address the underlying issues. This expedites the bug-fixing process and fosters effective collaboration between testers and developers, leading to improved software quality.

2) Attain Maximum Coverage:

While achieving 100% test coverage may be impractical, testers should strive to cover as many combinations and scenarios as possible. By employing a systematic and strategic approach, testers can maximize test coverage. This involves identifying key functionalities, critical paths, and representative data sets to ensure that the most critical aspects of the software are thoroughly tested. Additionally, testers can leverage techniques such as equivalence partitioning and boundary value analysis to optimize coverage and prioritize test cases.

3) Divide and Conquer:

To achieve maximum test coverage, it is beneficial to divide the application into smaller modules and write separate test cases for each module. This approach facilitates focused and detailed testing of individual components, ensuring comprehensive coverage across the entire system. By breaking down the testing effort into manageable units, testers can effectively address complexities, identify defects, and maintain a high level of quality throughout the software development lifecycle.

4) Emphasize Negative Scenarios:

In addition to testing positive scenarios, it is crucial to include test cases for negative scenarios or invalid conditions. This ensures that the software behaves correctly when exposed to unexpected inputs or error-prone situations. By deliberately testing edge cases, boundary conditions, and invalid inputs, testers can validate the system’s robustness, error-handling capabilities, and adherence to specifications. Thorough negative testing helps uncover vulnerabilities and ensures that the software remains stable, secure, and user-friendly in all scenarios.

5) The Right Mindset

Approach QA testing with the mindset of discovering defects and identifying areas for improvement. Instead of assuming the software is defect-free, maintain a critical perspective and actively seek out potential bugs. This mindset encourages a thorough examination of the software and motivates testers to conduct comprehensive tests, resulting in higher-quality products. A vigilant and inquisitive approach to testing helps uncover issues that may have otherwise gone unnoticed, promoting a culture of continuous improvement and defect prevention.

6) Early Test Cases preparation :

To optimize the testing process, it is beneficial to start test case preparation during the analysis and design phase. Involving testers early on enables a better understanding of the requirements and facilitates the creation of comprehensive test cases. By actively participating in requirements discussions, testers can gain insights into the system’s intended functionality, identify potential test scenarios, and ensure that test cases align with the expected outcomes. Early test case preparation contributes to improved test coverage and enhances the overall effectiveness of the testing effort.

7) Ready with Test Cases before the completion of development :

Rather than waiting for the completion of development, testers should aim to have test cases ready in advance. Providing developers with test cases during the development process allows them to analyze and validate their work against the expected outcomes. This proactive approach enables early defect detection, smoother collaboration between testers and developers, and reduces rework efforts. It also enhances the overall development process by ensuring that quality considerations are integrated from the outset.

8) Address “Regression” effectively:

Regression testing plays a critical role in ensuring that modifications or enhancements to the software do not introduce new defects or cause regressions in existing functionality. By including regression test steps within test cases, testers can perform quick regression checks during system testing itself. This approach saves time and effort by identifying and addressing regression issues early on, minimizing the risk of functional regression and maintaining the stability of the software.

9) Test the “Performance”:

Thorough performance testing is essential for applications where response time is crucial. Testers should design and execute performance tests to assess the application’s behavior under various load conditions, stress scenarios, and unfavorable environments. By simulating realistic workloads and analyzing performance metrics, such as response times, resource utilization, and scalability, testers can identify performance bottlenecks, optimize system performance, and ensure a seamless user experience.

Another critical aspect to consider is how the application manages data during peak usage. Database performance testing ensures that queries run efficiently, data retrieval is optimized, and the system remains responsive even under high load, supporting overall application stability and speed.

10) Leave full spectrum Testing to QA:

To maintain objectivity and ensure a fresh perspective, it is generally advisable for testers not to test the code they have developed themselves. When individuals test their own code, there is a higher likelihood of overlooking mistakes or biases due to familiarity. Instead, encourage collaboration among developers and testers, enabling independent verification and validation of the software. This approach promotes rigorous testing and helps identify defects that may have been overlooked by the developer.

11) Think beyond Requirements:

While testing based on specified requirements is essential, testers should also explore scenarios that may not be explicitly mentioned in the documentation. By thinking creatively and applying domain knowledge, testers can identify potential risks, edge cases, and scenarios that may not have been considered during requirements gathering. This broader approach to testing helps uncover hidden defects, enhances software robustness, and contributes to a more comprehensive testing strategy.

12) Leverage Past Experiences and Data:

Learning from past experiences is invaluable in software QA testing. Testers can refer to historical data, statistics, graphs, and previous test results to identify defect-prone areas, determine common patterns, and allocate testing efforts accordingly. By leveraging this knowledge, testers can focus on critical areas, allocate resources effectively, and adapt their testing approach based on past trends and insights. This data-driven approach enhances the efficiency and effectiveness of the testing process.

13) Continuous Learning:

The field of software QA testing is continuously evolving, and testers should actively seek opportunities for learning and skill development. Throughout the testing process, testers encounter new terms, concepts, and technologies. Keeping a record of these learnings and documenting them in a personal knowledge base helps build a repository of valuable insights. These learnings can contribute to the preparation of test closure reports, facilitate knowledge sharing, and ensure continuous improvement in testing practices.

14) Early Involvement of the Testing team:

To achieve optimal results, it is advisable to involve testers from the early stages of the software development lifecycle. Engaging testers during requirements analysis and design phases allows them to gain a deep understanding of the application’s functional and non-functional aspects. This early involvement facilitates proactive test planning, identification of potential testing challenges, and the formulation of effective testing strategies. By participating in requirements discussions and design reviews, testers can contribute their expertise and ensure the development process is aligned with quality goals.

15) Share Best Practices:

To foster a culture of excellence and continuous improvement, testers should share their best practices with other QA testing professionals. By sharing insights, techniques, and lessons learned, testers can contribute to the growth and development of the testing community. This exchange of knowledge promotes collaboration, inspires innovation, and ensures that industry-wide best practices are shared and implemented consistently.

16) Effective Communication and Collaboration:

Testers should actively engage in discussions and maintain effective communication with developers, business analysts, and other stakeholders. Direct interaction helps clarify requirements, resolve conflicts, and ensure that everyone is on the same page regarding the expected behavior of the software. When conflicts or misunderstandings arise, timely face-to-face discussions or written communications (such as emails) should be used to address and resolve them. Effective communication fosters collaboration, reduces misunderstandings, and ensures a shared understanding of quality objectives.

17) Prioritization and Risk Management:

To optimize testing efforts, testers should prioritize their work based on risk analysis and project constraints. By identifying critical functionalities, high-risk areas, and potential showstoppers, testers can allocate their resources effectively. Prioritization ensures that testing efforts are focused on the most critical areas, reduces the risk of major defects slipping through, and facilitates risk-based decision-making throughout the project lifecycle..

18) Effective Bug Reporting:

Writing clear, concise, and detailed bug reports is crucial for effective communication between testers and developers. A well-crafted bug report includes not only the symptoms and steps to reproduce the bug but also provides the impact of the bug on the application. Testers should analyze the bug, include possible causes, and provide any additional information that aids in reproducing and fixing the issue. Well-documented bug reports expedite the debugging process, enable efficient collaboration between testers and developers, and ensure that issues are resolved accurately and promptly.

By implementing this software testing best practices checklist, QA and testing professionals can enhance their effectiveness, improve the overall quality of the software, and contribute to the success of projects.

Looking to ensure your product performs flawlessly before launch? Mindfire’s QA and Testing Services help businesses identify bugs early, enhance performance, and deliver seamless user experiences through customized, agile-driven testing solutions.

 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Software Testers: Who is your boss?

I was spending some time with a software test engineer (Software tester) recently and have a simple realization to share.

“How come this runs so slow?”
“Oh it runs just fine, just some problems only in IE browser”
“Why?”
“Probably IE’s Javascript doesn’t run so well”
“Yes but soooo slow?!?”
“Yes… but my Lead has seen it and knows about it”
“Which means it doesn’t matter?”
“Well not that… client has also agreed to Chrome-only support”
“The site will support only Chrome?”
“Yes, we described the problem and got client to agree to it”
“Do you have it in writing?”
“Yes”
“Very good. But why is this the case in first place?”
Developers told me the 3rd-party component doesn’t run on IE.” (look on face: how does it matter since client has agreed anyway)
“You mean a best-selling web UI component library doesn’t run well on IE???”
“Yes that’s what developers told me”

After some pushing and research, it finally turned out that developers had to use another method of data access and voila! – everything ran smooth on all browsers.

No doubt, the incident above and its subsequent resolution display several best practices. Get acceptance criteria in writing. Make sure client understands limitations. Don’t trust explanations! Be hard-nosed. Use common sense (how can a best-selling web UI library possibly not function well on IE!). Don’t let your personal love override the obvious (Chrome is great but that doesn’t mean you can force users to switch).

An aspect I would like to focus on is: to whom should the software tester be responsible? Project Manager? Team? CEO? Entity/person who is paying for work?

In the course of project teams and organization and “reporting structure” and salary and revenue and a zillion other things, we forget what is obvious. In reality, the Lead/Manager doesn’t matter. The developers do not matter. The CEO doesn’t matter. The client doesn’t matter! They are all illusion, maya.

The only person who matters, the only person who finally decides, is the user. A software tester is responsible towards only the system being tested, and users of that system.

In the short run, you can get away by keeping your Lead/Manager happy. You can get away by accepting superficial wave-of-hand explanations from web application developers. You can get away by getting clients to agree to something illogical. You can get away by using bureaucracy to cover your behind – “I have it in writing”.

You can get away because the short run is imperfect. The short run can hide. But the long run is all about the right thing. The good thing. The correct thing. Quality. Truth. Details. Finesse. Care. The long run exposes everything.

The right thing here is to find and fix the problem, or find a workaround if it cannot be fixed.

If you do not, all might be well at the surface. But when the user rejects it in the marketplace, everyone loses. And why? Because we ignored her when we should have paid attention. We got confused by irrelevant intermediaries (colleagues, lead, client, CEO) and forgot who the software is being built for.

In the example above, the user is taken for granted. The user is actually expected to tolerate slowness, or switch her browser if she wants to enjoy our system. The IE user votes No and many users are IE-only. Yikes, that pinched!

As a software QA tester (whether for a web site or web application or desktop system or mobile app or server software and so on), you are the user’s voice and warrior. Don’t accept reasons. Make your point. File issues where you see issues. Revolt till someone notices. Help in getting the right thing done. Ride alone if you have to, but ride the right path.

Honestly, you are not alone in getting deceived by quick things. It is the same thing in business. Business gets confused by targets and profits and “customer satisfaction metrics”, because those are the quick and measurable things, although they are not what business is about. Business is about doing the right thing for people, not only the legally right thing.

Software testing is about doing the right thing for users, not only the officially right thing.

Thanks!

Author – Chinmoy Panda

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •