Call us:
+92 322 769 7213
Call us:
+92 322 769 7213
GBOB Market

Blog Grid

selenium

Using Python vs Java for Selenium Scripting?

With so many programming languages to choose from, it can be tough to decide which is best for a given task. Java and Python are often used with the popular web application testing framework Selenium. Both have their own strengths when paired with Selenium for automation testing. As more companies adopt Selenium for testing, many are trying to determine if Selenium Java or Selenium Python is the better match.   This article compares Selenium Java and Selenium Python to highlight the pros and cons and help you determine which language works best with Selenium.   Defining Python and Java: Scripting vs Programming Language A key question when contrasting Python and Java is whether they are scripting or programming languages. This distinction influences factors like speed, flexibility, and learning curve.   Fundamentally, all scripting languages are types of programming languages. The critical difference lies in how they execute code. Programming languages first compile source code to platform-independent bytecode. This bytecode can run fast via interpretation as Java does on its virtual machine.   In contrast, scripting languages directly interpret source code line-by-line. The lack of a compilation step enables greater dynamism and rapid prototyping. But it sacrifices execution efficiency versus compiled code. Python Python blurs the lines between scripting and programming languages. It can work as both a compiler and interpreter, making it very versatile. While Python is primarily considered a general-purpose programming language, it also functions seamlessly as a scripting language.   An interpreter acts as a bridge between the program code and the system hardware, executing the code line-by-line. The Python interpreter specifically runs Python scripts, compiling Python code into bytecode and then interpreting it, similar to Java and C. This dual compiler/interpreter functionality allows Python to be used for both scripting and traditional programming. Java Java contrasts as a traditionally compiled language. It transforms source code into optimized bytecodes for the Java Virtual Machine (JVM). The JVM then interprets these artifacts at high speed. So, while Python embeds an interpreter, Java offloads this responsibility to its runtime platform. This compilation strategy provides fast and consistent execution critical for large programs. The tradeoff is Java enforces type-checking and other constraints early on. This makes Java code more verbose and restrictive but boosts structure and robustness. Comparing the Learning Curve When deciding which programming language to learn first, many beginners wonder how quickly they can master Java versus Python. There is no doubt that Python has a clear advantage when it comes to learning speed. Python’s syntax is more concise and easier to grasp than Java’s more complex and restrictive code requirements. If you need to get up to speed with a new language fast, Python is likely the better choice.   However, there are several other key factors to weigh when choosing between Java and Python: Job Opportunities – Java development jobs are still more plentiful than Python jobs, so Java may open more career doors initially. Career Changes – Thanks to its versatility for scripting, Python provides an easier transition if you later shift into a field like DevOps. Java is more siloed in traditional software engineering roles. Object-Oriented Design – Both Java and Python rely on object-oriented programming, so learning one provides a solid foundation for picking up the other. The core OOP concepts transfer between the two languages. Platform Independence – Java bytecode and Python bytecode can both run on any supported platform due to their virtual machines (JVM and PVM). This makes them portable and widely usable. Simplicity – Python’s minimalist and intuitive syntax allows beginners to start building programs more quickly than in Java. Java’s verbose coding style has a steeper initial learning curve. Execution – As an interpreted scripting language, Python code can run immediately line-by-line. Java requires ahead-of-time compilation before execution, adding complexity. Performance – Compiled Java applications execute faster and more efficiently than Python-scripted programs. Popularity – Java and the JVM are used much more broadly across the industry than Python. Thus, Java has a larger ecosystem of supporting tools, libraries, and a wider community. Static vs. Dynamic Typing – Java uses static typing, so type errors are caught at compile time. Python uses dynamic typing, so errors show up later at runtime. In brief, Python is easier and faster to learn, while Java opens more career opportunities. Consider what trade-offs matter most to you when deciding between the two programming languages. Why is Python with Selenium a good option? Python paired with Selenium is a powerful and versatile option for test automation. Here are the reasons why Selenium Python is a good choice:   Python is an open-source, high-level, user-friendly scripting language that is easy to learn and interpret. Its simple syntax and English keywords help testers ramp up quickly compared to other programming languages. Python can be used across a wide range of applications – web, mobile, network, GUI, games, etc. This flexibility allows testers to leverage their Python knowledge across many types of test automation projects. It is fast, both in terms of script execution speed and developer productivity. Its efficient runtime and concise coding style mean tests run quickly and can be coded rapidly. Python code is readable and maintains a clear, logical flow by using indentation instead of braces for denoting blocks. This results in code that is easy to understand and maintain. Python is dynamically typed and less verbose than many other languages, making test code more compact and focused. Less coding clutter means simpler test logic. Python offers easy integration with Selenium through native API bindings. Browser automation capabilities are built right in. Python removes the compile step as an interpreted scripting language, allowing for agile test execution and iteration. Changes can be tested immediately. The strong WebDriver bindings with Python Selenium make browser test automation highly flexible and easy to integrate.   Python with Selenium combines the strengths of an accessible language with a leading web testing framework. Developers who leverage these tools can maximize productivity and minimize test creation effort. Why
Read more
Parameterize

10 Parameterize Testing Data provider with Different Data Sources,

Parameterization, also known as parametric testing, is a vital technique in TestNG for automation testing of application behavior against multiple data values and configurations. While exhaustive testing with all user data permutations is impossible, validating how the application handles different input combinations that end-users may provide in production remains necessary. Running automated tests repeatedly with a range of test data values allows for identifying defects missed by any single hardcoded dataset.   However, manually coding myriad test data directly in test scripts is laborious, error-prone, and leads to poor maintenance. TestNG alleviates this problem effectively through inbuilt parameterization features tailored for test automation. TestNG parameterization provides a robust mechanism for essential automated, data-driven testing scenarios.   This article will explore how to parameterize the TestNG dataprovider with different data sources, such as Excel, JSON, or databases.   What is TestNG DataProvider? The DataProviders in TestNG allow passing multiple parameters to test functions in a single execution. Data Providers are annotated with @DataProvider and return test data as a two-dimensional object array. Using DataProviders, TestNG tests can intake parameters differently, enabling data-driven testing. DataProviders can be declared within the test class or created in a separate file, then referred to with annotations from test methods.   The DataProvider annotation differentiates these methods from others. When executed, DataProviders will feed various values into TestNG test cases, facilitating parametrized tests with a single run. Benefits of Using TestNG DataProviders Over Traditional Parameterization Approaches The traditional technique involves passing parameter values from XML config files, allowing only a single data set per test run. This proves limited for running the same test logic on multiple data ranges, a standard testing need.   TestNG DataProviders overcome this effectively by: DataProviders allow declarative annotation-based injection of multiple parameter inputs into a test method within a single test run. This enables efficient data-driven testing by running the same test logic repeatedly with different data. DataProviders promote simpler coding over XML since test data is specified directly in the test code via annotations instead of external files. They also facilitate dynamic parameterization and re-execution of tests at runtime versus the static nature of XML test parameters. The DataProvider syntax is less complex overall compared to traditional test parameters. DataProviders enable essential test scenarios like parameterized and data-driven testing that XML parameters cannot achieve. Using a tool like LambdaTest that integrates with TestNG enables seamless distributed execution of DataProvider-driven tests across browsers and environments for enhanced cross-browser testing. LambdaTest is an AI-powered test orchestration and execution platform that lets you run manual and automated tests at scale with over 3000+ real devices, browsers, and OS combinations.   DataProviders facilitate essential test scenarios like data-driven, parameterized testing, which traditional XML parameters could never achieve. Their capacity to feed various inputs into test methods without needing multiple test runs makes them far more powerful and versatile. How to Use TestNG Dataprovider with Excel? Excel spreadsheets serve as handy delimited data sources for feeding test data into TestNG test methods via dataprovider annotations. We construct an integration framework that enables externalized and reusable test datasets by leveraging lightweight Java libraries like Apache POI to access Excel contents programmatically. The workflow involves three simple steps: Design Test Data Sheet We lay out the dataset as a grid within an Excel workbook, defining columns to match the parameter order/types needed by the test methods expecting injection. Additional metadata like test case IDs or categories can guide reporting. Serialize Sheet Contents Next, we extract the sheet data at runtime. The Apache POI API provides helpful utilities like XSSFWorkbook and XSSFSheet for ingesting Excel contents into in-memory models. We traverse rows or cells using iterator style access, capturing into parameter array objects. Invoke Dataprovider Finally, our custom dataprovider method returns the extracted Excel-derived arrays, with @Test methods accessing rows as test iterations via input parameters. The testdata provisioning resides separately from the executing test body.   The Excel integration reliability, accessibility, and interface familiarity unlocked by Apache POI combined with TestNG dataprovider annotations provides a smooth conduit for consumerizing test data and accelerating test creation. With thoughtful design, we tame complexity. How to Use TestNG Dataprovider With JSON? JSON (JavaScript Object Notation) has become a ubiquitous data format for storing and exchanging information across systems and platforms. With its lightweight structure, readability for humans, and ease of parsing for machines, JSON acts as an ideal data source for testing applications.   TestNG DataProviders empower data-driven testing by allowing test methods to dynamically receive inputs from various sources at runtime. Enabling DataProviders to consume test data from JSON files combines the strengths of the two approaches.   Through a few simple steps, JSON test data can be fed into TestNG test methods efficiently using DataProviders:   Add a JSON Parser First, ensure a JSON parser like Jackson or GSON is available in the classpath. These libraries can read JSON content and convert it to Java objects like Maps, Lists, etc., which TestNG can use easily. Create DataProvider method next, create a DataProvider method to retrieve data from the JSON source. This would use the parser to deserialize JSON content to Objects[] or Collection of Objects and return the same. The @DataProvider annotation indicates this is not a regular method. Supply data to tests decorate test methods will consume JSON test data with the DataProvider reference. TestNG will execute those methods repeatedly, passing the datasets returned by the linked DataProvider. Any JSON attributes can be accessed within tests via the passed Objects. Parameterize for modularity for improved structure; tests should accept parameters instead of tightly coupled JSON objects. TestNG will pass individual data items from JSON arrays as parameters to test methods.   TestNG handles all the complexity of repeatedly executing tests and routing JSON data to test code behind the scenes. Configuring JSON DataProviders mainly involves one-time tasks like adding parsers and writing provider methods. This approach optimizes data-driven testing with easy maintenance of test data in JSON files external to test code. How to use
Read more
Automated Software Testing

6 TestNG and JUnit For Automated Software Testing?

Automated Software Testing frameworks provide the foundation for writing and executing automated tests as part of software quality assurance. TestNG and JUnit are the most widely used test automation tools in the Java ecosystem. Both frameworks allow testers to write test methods, organize them into classes, execute tests, and report the results.   The core purpose of both TestNG and JUnit is to enable automated testing of code units, APIs, user interfaces, or whole systems by providing the necessary test organization and execution capabilities. This article will comprehensively compare TestNG and JUnit across various parameters to help decide which framework better meets your automation needs.   What is JUnit? JUnit is an open-source unit testing framework for Java that has become the industry standard for testing Java applications and verifying small code sections. As an implementation of the xUnit architectural pattern for unit testing frameworks, JUnit promotes readable and repeatable testing practices.   JUnit facilitates writing repeatable and automated tests that can be executed anytime. Its annotations, like @Test, @Before, @After, etc., provide a standardized structure to write clean and easily readable test cases. The ability to automate the execution of these test cases seamlessly integrates JUnit with build tools like Maven and IDEs like Eclipse. This enables continuous testing without manual intervention, saving considerable time and effort during development cycles.   JUnit tests are typically written for small code units to validate their behavior. Any bugs manifest themselves as failing tests immediately after changes are made. This pinpoints the root cause faster and makes debugging efficient compared to finding defects later through manual testing. The separation of failing and passing test cases guides the developer to focus only on the problematic areas.   JUnit promotes test-driven development (TDD), i.e., writing tests even before the actual business logic. The failure of initial test cases drives the implementation. This results in modular, flexible, and well-tested code with minimal defects. The availability of assertions like assertEquals(), assertTrue(), etc., makes writing test cases simple and intuitive.   JUnit’s extensible architecture is another key benefit. It can be easily integrated with frameworks like Mockito, Selenium, Cucumber, etc., to enable integration testing, behavior-driven development, and UI testing. This expands the scope and capability of JUnit significantly. What is TestNG? TestNG is an open-source automated testing framework for Java that builds on and extends the capabilities of the JUnit framework. The “NG” stands for “next generation,” indicating its focus on advancing test automation for Java.   TestNG covers a broader scope of test types than JUnit, including unit testing, functional testing, integration testing, end-to-end testing, and more. It helps organize test cases clearly and maintains readable test scripts.   Some key features of TestNG: Annotations – TestNG provides annotations like @Test, @BeforeMethod, @AfterClass, etc., to define test cases and set up the test environment. This makes tests more readable and maintainable. Test grouping – Tests can be organized into groups, which can then be executed separately. This allows flexibility in test runs. Test parametrization – TestNG allows passing parameters to test methods through the XML file. This facilitates data-driven testing. Dependent tests – Tests can be made dependent on other tests, enabling prioritization of test execution. Parallel execution – Tests can run parallelly, significantly reducing overall test execution time. Flexible test configuration – TestNG provides XML files to configure tests and suites flexibly with control over ordering and grouping. Extensive test reports – Rich HTML test reports are generated with details about passed, failed, and skipped tests.   TestNG introduces a simplified test authoring process compared to older frameworks. It also handles dependencies between test methods automatically for more robust test runs. You can leverage online cloud-based platforms such as LambdaTest to enhance the capabilities of TestNG. LambdaTest is AI-powered test orchestration and execution platform that allows businesses to run automated tests, cross browser testing over 3000+ test environments, including real devices cloud. Difference between TestNG and JUnit To find which framework is best for Selenium automation—JUnit or TestNG—let’s first examine the differences. Test Suites Test suites allow grouping a set of test cases and running them together. TestNG has built-in support for defining test suites in XML configuration files and running them. The XML contains details about which test classes and methods belong to a test suite. This allows for executing groups of related tests together.   In contrast, JUnit did not initially have the concept of test suites. It was introduced in JUnit 5 later on. JUnit uses annotations like @RunWith and @Suite to define suites in Java code. So, the test classes have to be wired up together in code.   The XML-based approach of TestNG works better for most testers as there is a cleaner separation of test code and execution configuration. Also, TestNG provides more flexibility in terms of executing multiple suites, tests in different threads, reporting at different levels, etc. Annotations Both JUnit and TestNG use annotations to decorate test methods, setup/teardown logic, etc. This allows the framework to recognize the methods meant for specific purposes. The annotations between both frameworks are quite similar in function but differ slightly in name.   The naming conventions differ slightly between the two frameworks, requiring some learning when switching. But they serve the same purpose. JUnit Annotations   @Test This annotation denotes that a method is a test method. JUnit will run all methods annotated with @Test. @BeforeAll Applied at class level. Denotes that the annotated method should run before all test methods in the current class. Useful for expensive setup tasks. @AfterAll Applied at class level. Denotes that the annotated method should run after all test methods in the current class. Useful for cleanup activities. @BeforeEach  Denotes that the annotated method should run before each test method is executed. It is commonly used to set up pre-conditions for each test. @AfterEach Denotes that the annotated method should run after each test method is executed. It is commonly used to clean up activities after each test. @Tag Used to declaratively add tags
Read more
RPA

How do you assess the risks of automation in your RPA projects?

As organizations embrace the revolutionary power of RPA (Robotic Process Automation), the journey also comes with a set of challenges and potential pitfalls, mainly concerning the risks related with automation. Assessing risks in RPA projects isn’t merely a precautionary step; it is a strategic move to ensure the security, success, and resilience of automation initiatives. By systematically determining the scope, scrutinizing data flows, aligning with compliance requirements, implementing robust security controls, and fostering a culture of security awareness, companies can navigate the intricacies of RPA projects with full confidence. Every single step in this risk assessment path contributes to a robust framework that not only fixes immediate concerns but also positions RPA projects for long-term benefit and success. This article delves into the complex landscape of risks in RPA projects, aiming to give organizations a comprehensive knowledge and understanding of how to navigate potential pitfalls. We will explore key considerations and strategies, with a specific emphasis on the pivotal role of automation testing in fortifying RPA initiatives. Why is it essential to assess Risks in RPA projects? Evaluating risks in RPA (Robotic Process Automation) projects is crucial for myriad key reasons: Concerns to Security and Data Breaches: Robotic Process Automation (RPA) projects often include handling sensitive data. Evaluating risks helps detect potential vulnerabilities that could result in data breaches, protecting the confidentiality and integrity of crucial information. Operational Stability: Automation errors can disturb operations, resulting in inefficiencies and possible financial losses. Evaluating risks allows companies to detect and mitigate bugs, confirming the seamless functioning of automated procedures. Regulatory Compliance Requirements: Various industries are subject to specific regulations & compliance standards. Evaluating risks and vulnerabilities helps ensure that Robotic Process Automation projects align with these requirements, avoiding legal consequences and reputational harm. Resource Optimization: Risk and potential vulnerabilities assessment assists in defining the scope of automation. By identifying suitable procedures, businesses can optimize resources and focus efforts on regions that offer the most significant advantages while reducing potential pitfalls. Financial Implications: Operational disruptions and errors can incur potential financial expenses. By proactively measuring risks, organizations can reduce the financial effect linked with potential automation-related concerns. Security Cultural Awareness: Evaluating risks fosters a culture of security consciousness within the organization. It encourages teams to understand the significance of security measures, decreasing the likelihood of inadvertent security lapses. Adherence to Industry Standards and Best Practices: Assessing potential risks ensures that Robotic Process Automation projects stick to industry best practices. This not just improves the overall quality of automation executions but also positions organizations as leaders in their respective fields. Continuous Improvement and Learning from Threats: The method of risk evaluation encourages organizations to learn from potential drawbacks and pitfalls. It promotes a culture of continuous improvement, enabling teams to refine and improve Robotic Process Automation processes over time. Operational Readiness and Preparedness for Disruptions: Evaluating risks prepares companies for potential operational disruptions. This readiness includes contingency planning effective mitigation strategies to manage business continuity. Strategic Alignment for Long-Term Success: Understanding and fixing risks strategically contribute to the long-term success of Robotic Process Automation projects. It confirms that automation initiatives not just deliver instant benefits but also remain adaptable and resilient in the face of growing challenges. In short, risk assessment in Robotic Process Automation (RPA) projects isn’t just a precautionary measure; it is a strategic and proactive approach to ensuring the efficiency, security, and long-term success of automation initiatives in a fast-growing digital landscape. Navigating the Risks and Pitfalls of Automation in RPA Projects: A Strategic Approach Automation in RPA (Robotic Process Automation) projects brings huge efficiency, but it also introduces potential threats that companies should navigate adeptly. Let’s explore key pointers to confirm a secure and compliant automation journey. Identify Your Automation Scope and Objective Before diving into automation, you need to define the scope and goals of your automation project. What procedures are you going to automate, and why? What are the projected advantages and results? What are the potential threats and effects of automation on your customers, business, and stakeholders? Detect processes suitable for automation, considering factors such as data sensitivity, complexity, and criticality. By answering these queries, you can prioritize the more feasible and valuable automation prospects, and avoid unnecessary or risky ones. This initial step lays the foundation for a risk-aware and targeted automation strategy. Scrutinize Your Data Sources and Flows Comprehensive data analysis and flow are critical. Determine the sources of data that automation procedures interact with and examine data flows. Understanding potential vulnerabilities and data dependencies confirms data integrity and mitigates risks related to improper data handling. It is crucial to implement security measures and controls to protect the data they handle from malware, cyberattacks, or human errors. Encrypting data at rest and in transit, using secure authorization and authentication mechanisms for data access, applying the norm of least privilege and segregation of duties for bot responsibilities and roles, auditing and monitoring, and data activities and logs, updating and patching software and dependencies, and implementing recovery backup plans for data failures or disasters are all best practices to guarantee your safety. Execute Security Controls & Measures One of the main security and compliance concerns of Robotic Process Automation is data safety and protection. Security should be the foundation of your automation strategy. Your bots will access, process, and accumulate confidential and sensitive information, such as medical records, personal information, or financial transactions. You need to scrutinize the data flows and sources involved in your automation procedures and find the data types, locations, owners, formats, and users. You also have to map out the data lifecycle, from formation to removal, and confirm that your bots follow the data governance standards and policies of your organization and industry. Execute robust security controls throughout the automation lifecycle. Encryption, secure coding practices, and secure access controls are essential elements. Regularly assess and update security controls and measures to stay resilient against growing threats. Align Your Automation with Compliance Requirements Depending on your industry and jurisdiction, ensure your RPA projects
Read more
Powered Automation Testing

Advancements in AI-Powered Automation Testing

With the introduction of Automation Testing, various new testing processes have improved the accuracy and productivity of the testing infrastructure. Some of the notable mentions in this list include automated visual regression testing, automated cross-browser testing, and automated performance testing.   In recent times, integrating artificial intelligence with test automation has further boosted the productivity and reliability of the entire application development life cycle. For instance, now, the test cases can automatically adjust themselves according to the changing parameters and requirements of the testing cycle.   So, with this article, we are going to explore some of the major advancements in AI-powered automation testing. We will also discuss some of the primary integrations that can help app developers and testers improve the productivity of their overall application development and testing environment.   Exploring the Basics of Automation Testing   For general knowledge, automation testing is a modern software testing technique that utilizes automated tools and scripts for performing tests on a software application. The main objective of automation testing is to increase the effectiveness, efficiency, and overall coverage of the software testing process.   Let us now glance through some of the basic ideas relevant to the automated testing process:   Objectives of Automation Testing   Automation testing aims at improving the efficiency of the testing process by conducting the test cases faster than manual testing.   Using this advanced testing process, the developers can also ensure that the test cases can be repeated to improve the consistency of the test results.   Using this process, the testers can quickly check whether any new code change negatively impacts the functioning of the existing elements of the application.   Using automation testing, the application testers can execute multiple test cases simultaneously on different configurations and environments.   Categories of Automation Testing   The basic category of automation testing involves separating all the elements present in the application into individual entities known as units. Unit testing is the simplest form of automation testing as it tests all the components in isolation.   Using integration testing, the developers can check the proper integrity of different components or systems present in the application.   Functional testing aims at verifying the functionality of the application as per the specified requirements or the intentions of the app developing company.   Using regression testing, the developers can ensure that new code does not impact the functioning of the existing code in the application architecture.   Performance Testing aims at validating the performance of the application on multiple devices and use cases. It also assesses the scalability and responsiveness of the application infrastructure.   Using load testing, the developers can analyze how the application behaves to unusual traffic or certain specified load conditions.   The developers can verify the reliability and functionality of the application programming interface using automated API testing.   Finally, using user interface testing, the developers can automatically verify the graphical user interface for responsive errors, misplacement of UI elements, and other functional issues.   Automated Testing Tools   Selenium is one of the most popular names in the segment of automated testing tools. Using this test suite, the developers can automatically verify the functioning of modern web applications.   Appium is another popular name in this segment and is used for running automated testing on mobile applications across multiple platforms like Android, iOS, and Windows.   Using Jenkins, the automation testers can access an open-source server for continuous integration and continuous delivery.   Cucumber supports the execution of behavior-driven development along with plain text descriptions.   Best Practices for Automation Testing   Before executing automation testing, it is crucial to clearly define the objectives, scope, and criteria for the testing phase.   The developers need to choose the correct testing instances that can benefit from this process. Some of the initial options include repetitive test cases that are time-consuming or critical for automation.   It is a good practice to use external data sources to provide random data sets crucial for executing the test cases.   It is important to regularly maintain the test cases and ensure that they align with the application changes. The developers should also include automation testing with the CD/CI pipelines for a faster feedback cycle.   What is AI-Based Automation Testing   AI-based automation testing involves the integration of machine learning and artificial intelligence with the process of software testing and test automation. Using this approach, the developers can use intelligent algorithms to enhance various aspects of the testing cycle. This can range from designing the test cases and executing them to analyzing the results and maintaining the test cases.   The primary objective of this advanced testing process is to make the testing process more efficient, adaptable, and accurate based on the dynamic nature of modern software apps.   Let us now understand some of the critical areas of automation testing that are directly influenced by the integration of artificial intelligence:   ●      Test Case Generation   Using artificial intelligence algorithms, the system can analyze the application behavior, user interactions, and historical data. This approach will help automatically generate test scripts and reduce the manual effort of designing the test cases.   ●      Test Execution and Analysis   Artificial intelligence can adapt test execution based on the application changes. So, it can identify and execute the relevant test cases in response to all these modifications in the application source code.   Moreover, using AI algorithms, the system can detect and address changes in the application. It can also automatically update the test scripts to match the modified elements in the application.   ●      Managing Test Data   AI can assist modern automation testers in creating diverse and realistic test data for optimizing the testing process and improving the overall test coverage.   Using AI, app-developing companies can also mask sensitive information during the testing process for complying with the data protection regulations.   ●      Defect Prediction and Analysis   AI algorithms can analyze historical test data to
Read more
Marketing

5 Incorporating Parallel Testing with Appium for Faster Results

Mobile test automation is associated with the Appium most of the time. There are reasons for that. Appium is an open-source, easy-to-use, and much more efficient mobile app testing tool. It is the most preferred testing tool by software application developers and testing teams. Appium can be used to perform mobile app testing for both Android and iOS. Appium also supports most of the popular programming languages and many types of operating systems.   Parallel testing makes your mobile app testing faster, and multiple test sessions can be held simultaneously. Due to the growing competitiveness, a quicker time to market (TTM) has become crucial for any organization to compete in the market today. And Appium is capable of meeting this requirement.   In this article, first, you will see a brief introduction to Appium and its various aspects. Then, you will see how to incorporate parallel mobile app testing with Appium for better results. What is Parallel Testing? Parallel testing is defined as a software testing process in which multiple apps or features are tested simultaneously, resulting in reduced time consumption of the testing process. It is mostly done when a new version is released for an application. Many types of cloud-based tools and frameworks can be used to perform parallel or distributed test automation on the cloud.   The purpose of parallel testing is to determine if the legacy version and new version behave the same or differently and ensure whether a new version is more efficient.  Parallel testing with Appium for mobile app testing on the cloud is time-efficient and provides better testing results.   Any testing expert should prefer automated tools that function on a cloud to allow for correlation. By testing on a cloud like LambdaTest, the testing experts reduce the number of manual tests and get more access to various hardware options. LambdaTest is an AI-powered test orchestration and execution platform to run manual and automated tests at scale. The platform allows you to perform real-time and automation testing across 3000+ environments and real mobile devices.   Generally, two or more parts in parallel testing are used to check the features and functionality of an application separately. Unlike traditional testing processes, where you must execute each test individually, parallel or distributed testing allows you to run multiple tests simultaneously. Parallel or distributed testing accelerates your release cycles, resulting in fast and more accurate testing results with minimal effort. Advantages of Parallel Testing in Mobile App Testing for Faster Results Let’s look at some of the benefits of parallel testing for the mobile application process.   Better Development Flow: Parallel testing in mobile app testing is essential to the software development process. It allows the developers to share the test results with all the stakeholders. Using parallel testing also helps to boost CI (continuous integration) efforts. This effort helps the developers and QA team save time and deliver the software in the given time period. Parallel testing helps developers to communicate efficiently and the communication between the QA team and developers as the testing and reporting is done promptly, and this results in the better development flow of the software application.   Better Test Coverage: Test coverage is defined as the various configurations, types of devices, and device browser-OS combinations for which you can test your mobile app. The testing coverage increases when you perform software testing using parallel or distributed testing on more and more devices simultaneously. It also helps to ensure that the software experience increases and the end user gets the best possible experience while using the software application. Thus, using parallel testing for mobile app testing helps to deliver a better software experience, which means better ROI.   Time Efficient: Parallel testing helps software developers save time, and that saved time can be used to perform exploratory testing. Suppose you are performing a parallel test of your application on two devices; your testing speed needs to increase by two times. Also, there are chances of human error that may give you incorrect data, so using parallel testing for repetitive testing is recommended, which can also be boring.   Less Script: When you use parallel or distributed testing for mobile app testing, you just need to write the test scenarios once, and you can use them many times. Then, these test scenarios get replicated in another version and on other devices. You can install older and new versions of your software applications on various devices to check compatibility and software consistency. The aim is to ensure that the new version of the software application works well in the new versions and that the existing features and functionality work well. Parallel Testing with Appium for Faster Results You have seen the various aspects of parallel testing execution and Appium. Let us see how you can perform parallel testing with the Appium mobile app testing tool. You will see two designs that you can use to execute the parallel tests using the Appium tool. The first method is parallel testing using the client side, and the second is parallel testing using the server side. Let us discuss them one by one. Parallel Testing using Appium – Client Side There are many options that a QA team and developers can choose for the parallel test execution using Appium. But regardless of this factor, one major part must be tackled with precision and accuracy. It is the client side. You can not say you are executing parallel testing because you have multiple Appium servers on the cloud. You also need a way for your test runner or framework to kick off the tests in parallel. The feature to run testing scripts in multiple sessions or threads at a time is not a part of the Appium tool. You need to configure this in the runner itself. All the programming language and test runners have their approaches to completing the task execution process. The Java language is very popular, so the most preferred choice for this testing
Read more
Appium Automation Testing

Appium Automation Testing

Automation is an inescapable part of software testing. Automation testing furnishes a valuable asset for software development across various platforms, including web applications and mobile apps. Given the necessity of automation in quality assurance pipelines, the market is drenched with diverse tools for automation, out of which Appium is often used for mobile app testing. Appium is an open-source test automation framework specifically designed for mobile apps. It authorizes testers to write and execute automated tests for Android and iOS applications. As a result, it diminishes the time and effort required for manual testing while ensuring accuracy. The unique features of Appium make it a favorite choice of app testers. This article will provide an overview of Appium automation testing, its benefits, and how to get started. Appium: The Go-To Automation Tool Appium has emerged as the go-to automation tool for mobile app testing due to its versatility and robust features. Appium furnishes developers and testers with a convenient solution for automating the testing process across various platforms, such as iOS and Android, utilizing a unified codebase. This eradicates the need for separate automation frameworks for each platform, saving time and effort. Appium’s compatibility with various programming languages, such as Java, Python, and Ruby, enables teams to work with their preferred language, promoting seamless integration into existing development workflows. Furthermore, Appium’s support for both native and hybrid apps, as well as web-based applications, furnishes comprehensive coverage for testing different types of mobile applications. Its extensive community support and regular updates ensure that Appium remains at the forefront of mobile app automation. Setting Up Your Testing Environment Setting up a well-equipped testing environment is crucial for guaranteeing a smooth and efficient testing process with Appium. Firstly, install the required tools and software on your designated testing device. This incorporates the latest version of the Appium server and the relevant drivers for the target mobile platform(s) you will be testing on. Additionally, ensure that you have the appropriate SDKs (Software Development Kits) installed for the respective platforms, as they deliver essential resources and libraries for testing mobile apps. Subsequently, establish a stable network connection and configure the necessary settings to facilitate communication between the testing machine and the mobile devices. Establish a dependable device lab or emulator setup that meets your testing needs. This will authorize you to establish connections and control the devices throughout the testing procedure. Lastly, establish a version control system to effectively track and manage your test scripts and other testing assets. Setting up a well-structured testing environment lays a solid foundation for successful Appium automation and mobile app testing. Understanding the Appium Architecture Appium follows a client-server architecture, where the Appium server is the central component responsible for managing and executing test scripts. The client libraries, such as Selenium WebDriver, facilitate seamless communication with mobile devices by interacting with the Appium server. The Appium architecture revolves around the JSON Wire Protocol, which facilitates the seamless transmission of commands and subsequent responses between the client and server. This protocol furnishes a standardized way to interact with different mobile platforms, allowing developers to write tests in a language-agnostic manner. Appium supports multiple platforms, including Android and iOS, by leveraging platform-specific automation frameworks. The UIAutomator framework is utilized for Android, whereas the XCUITest framework is employed for iOS devices. These frameworks provide access to the native elements and functionalities of the respective platforms, facilitating comprehensive testing of mobile applications. To establish a connection with mobile devices, Appium relies on device-specific automation APIs, such as Android Debug Bridge (ADB) for Android devices and Xcode for iOS devices. The APIs facilitate the installation and launching of applications on devices, as well as the interaction with UI elements and the execution of various testing actions by Appium. Understanding the Appium architecture authorizes testers to design and implement automation scripts effectively, leveraging the capabilities of the underlying frameworks and APIs. Tips for Writing Effective Tests Tips for writing effective tests: Start with Clear Test Objectives: Before drafting any test cases, it is imperative to establish the objectives and goals of the test professionally. Clearly outline what functionality or behavior you are testing and the expected outcome. Use Descriptive and Concise Test Names: Test names should accurately describe the purpose of the test and the specific scenario being tested. Avoid generic or vague names that can cause confusion or make it difficult to understand the test case’s intention. Follow a Logical Test Structure: Organize your test cases logically and structured. Group related test cases together and ensure a clear flow. This can make it leisurely to navigate and maintain your tests. Keep Test Cases Independent and Isolated: Each test case should be independent and not rely on the success or failure of other tests. This assists in isolating issues and makes debugging easier. Include Assertions and Verifications: Ensure each test case incorporates assertions or verifications to check the expected results. These assertions should verify that the actual results match the expected results, assisting in identifying any discrepancies or failures. Use Meaningful and Readable Test Steps: Write test steps that are easy to understand and follow. Use clear language and avoid technical jargon when possible. This makes it leisurely for other team members to read and review your tests. Provide Proper Test Data: Use relevant and valid test data for your test cases. This assists in covering different scenarios and guaranteeing comprehensive test coverage. Regularly Review and Update Tests: Review and update your tests to guarantee they remain relevant and effective. As the application being tested evolves, test cases may need to be modified or added to accommodate changes. Remember, effective test writing is a continuous learning process. Continuously strive to improve your tests and adapt them to the specific requirements of your project. Leveraging XPath for Element Selection Leveraging XPath for element selection is a powerful technique in Appium automation testing for mobile app testing. XPath is a language used to navigate through XML documents and is widely supported by Appium to locate and
Read more
Python

Selenium Python Automation: Testing Strategies for Modern Web Applications

Python, renowned for its simplicity and versatility, has garnered widespread acclaim as a programming language. Its extensive array of libraries and frameworks significantly simplifies and streamlines automation tasks. Conversely, Selenium WebDriver, an extensively utilized open-source tool, specializes in automation testing of web browsers. It empowers interaction with web elements, is equipped with diverse APIs, manages various operations, and executes intricate testing scenarios. What is Selenium? Selenium is a freely available automation testing framework crafted specifically for web applications. It is lightweight and supports various browsers, encompassing Safari, Firefox, Chrome, and Internet Explorer. Through Selenium, users can automate interactions within web browsers, emulating actions like clicking links, completing forms, and conducting website transactions. Frequently paired with other software testing tools like JUnit or TestNG, Selenium contributes to crafting all-encompassing automated tests for web applications. Moreover, it finds utility in evaluating the functionality and performance of web applications while also being capable of generating reports and conducting website data extraction. What is Python? Python, a high-level programming language, offers diverse functionalities and dynamic semantics. Its applications span website construction, software development, data analysis, and automation scripting. In the Quality Assurance (QA) realm, Python is the primary choice for crafting automation scripts. While Python encompasses various applications in application testing, our focus will be on Python’s integration with Selenium. What do Selenium-Python Bindings entail? Selenium Python bindings offer an intuitive API for creating functional acceptance tests through the Selenium WebDriver. This API grants users easy access to diverse Selenium WebDriver functionalities within Python. Additionally, it enables seamless interaction with various Selenium WebDrivers like Chrome, Firefox, and IE. Through Selenium-Python Bindings, users can efficiently execute Python functions to automate browser actions for testing. Tools Required for Selenium-Python Binding: Python Selenium’s Python Binding Selenium Package Browser Drivers Exploring Advanced Functionalities Using Selenium Python Bindings Selenium Python bindings offer a plethora of advanced functionalities that can significantly elevate your test automation endeavors. Beyond basic browser interactions, these capabilities empower users to navigate complex scenarios and execute sophisticated interactions. Below are advanced techniques and features that you can delve into using Selenium Python bindings: Handling iframes: Iframes (Inline Frames) are commonly utilized to embed external content within a webpage. Selenium Python bindings allow switching to and interacting with elements inside iframes. The switch_to.frame() method allows you to seamlessly focus on a specific iframe, perform actions within it, and revert to the default content. Managing multiple windows or tabs: Selenium Python bindings equip users with functions to handle scenarios where web applications launch multiple browser windows or tabs. Utilizing the window_handles property enables the retrieval of a list of window handles, facilitating smooth navigation between windows using the switch_to.window() method, thereby executing operations on individual windows efficiently. Exploring these advanced techniques and features using Selenium Python bindings enables users to handle intricate test scenarios, execute sophisticated interactions, and extend automation endeavors to mobile app testing. Regularly monitoring the Selenium community and documentation ensures staying informed about the latest updates and advancements in Selenium Python bindings, enabling users to maximize the potential of this robust automation tool. Benefits of Selenium-Python Bindings Selenium Python binding is a robust tool for automating web browsers and testing web applications. It offers several advantages: Accessibility for Beginners: Python ranks among the most widely adopted programming languages, featuring a clear and understandable syntax. As a result, Selenium Python binding is easily learnable, especially for novices.   Integration with Python Libraries: Python boasts an extensive array of libraries and frameworks that harmonize well with Selenium, including Pytest, Behave, and Robot Framework. These complementary tools augment the capabilities of Selenium Python binding, streamlining the testing process.   Enhanced Readability: Python’s simplicity and readability ensure that code crafted using Selenium Python binding remains clear and understandable, even for individuals without programming backgrounds. This attribute simplifies the sharing of test scripts among team members, including those unfamiliar with the Selenium framework.   Robust Debugging Capabilities: Python offers robust error reporting and debugging features, facilitating the identification of issues and bolstering the stability of test scripts. Consequently, this contributes to more reliable test automation processes.   Extensive Community Support: Python boasts a sizable and engaged community of developers who continuously create and maintain libraries, frameworks, and tools for Selenium Python binding. This active community provides a wealth of resources, tutorials, and documentation, aiding in learning and troubleshooting Selenium Python binding. Selenium Python binding is invaluable for automating web browsers and testing web applications due to its beginner-friendly nature, cross-platform adaptability, seamless integration with libraries, readability, potent debugging features, and strong community support. Selenium is a potent asset in the Quality Assurance (QA) Engineers toolkit, offering robust capabilities. Yet, harnessing its potential often involves time-consuming test script creation and maintenance headaches. To streamline your testing journey with Selenium and Python, here’s a set of quick tips to enhance your testing endeavors’ efficiency. Encountering Challenges: Automated test script creation often presents numerous challenges, from unique to widespread. The complexity varies based on the testing objectives. Here are some recurrent challenges frequently encountered by developers and QA professionals: Dynamic Content: Testing websites or web applications featuring static content poses minimal hurdles in Selenium automation. However, with the prevalence of dynamic content—varying from visitor to visitor in today’s digital landscape—testing becomes more intricate (especially in AJAX-based apps).   Pop-up Windows: Though irksome for users, pop-up windows can significantly impede test processes in Selenium testing environments.   Reporting: Acquiring detailed and comprehensible reports for each test execution is pivotal in any test automation setup. Selenium WebDriver offers several possibilities for reporting mechanisms, although these typically necessitate code implementation through third-party integrations.   While having its limitations, Selenium remains a top choice for automated testing due to its robust framework, effectively automating diverse web-based tests. LambdaTest, a cloud-based AI-powered test orchestration and execution platform, addresses Selenium Python testing constraints testers face on the local grid. LambdaTest resolves these challenges through several key approaches: Cross Browser Testing: LambdaTest enables comprehensive testing of web applications across various browsers and operating systems, ensuring compatibility across diverse environments.
Read more
Automation Testing

5 Business Case for Automation Testing: Benefits and ROI

Automation testing is essential to product development, especially to guarantee quality. Many companies adopt manual testing, but there are other standard approaches than this. Automation testing helps you upgrade your software products to the next level. An organization should not stop by just choosing automation testing. Instead, it should extend the plans on how to implement it smoothly. While there are more benefits of automation testing in a business, drafting the budget for testing can be challenging.   The business case for automation testing refers to the justification for implementing the automation testing process in a particular software development project. Automation testing involves using scripts and specialized technologies to execute test cases. It also involves comparing actual and expected outcomes and reporting the results. A positive Return On Investment (ROI) depends on the decision to invest in automation testing techniques with benefits.   This article will specifically discuss the benefits of automation testing in business environments, the ROI of automation testing, and how to measure it. Benefits of Automation Testing in Business Here are the ten benefits of using automation testing in a business:   Decreased Business Expenses:   When your organization uses a good test automation environment, it allows you to achieve cost savings by minimizing the allocation of resources compared to manual testing activities. But, the main thing to note is eliminating manual testing usage. Over the entire course of the project, this can create a huge impact.     Faster Feedback Cycle Without automation testing, organizations may struggle to get swift feedback on their software product’s new features. Automation testing helps speed the feedback process and quickly validates different product improvement stages. This mechanism is useful for identifying and fixing problems in the early stages of development, which makes the team work more efficiently.   Saves Time   By automating your testing process, your team has to spend less time assessing recently developed features. Automation testing also develops communication with all the software departments involving design, marketing, or product owners who depend on the outcomes of the tests. All the sectors in the development team can easily check the logs of the automated tests and what’s happening.   Higher Test Coverage   With manual testing, you can access a limited amount of test environments. But with test automation, you can effortlessly write modern test cases and add them to your business suite. This increases the scope for testing your project, which can help include all the features.   Reusability of Test Suite   Making an automated test case can be tough initially. However, once you set it up, using the same tests for different situations or even other projects is easy. The advantage is that you can connect another project to your already prepared test suite.   Better Insights with Automation Testing   Automation testing provides more insights when a test fails than a manual testing mechanism. It evaluates the product’s performance and tells us the details such as memory, file, and data tables. This detailed information helps developers identify and fix errors more effectively.   Create Products speedier   Testing cycles and shorter feedback times are made possible via speedier automation testing, which enables continuous testing of recently produced features. This aids an organization’s adoption of business agility techniques and quicker product establishment.   There Are More Features in Automation Testing   Complex scenarios can be prototyped using an automated test suite. Even several virtual users interacting with a single web application can be simulated by it. Manual testing is undoubtedly not capable of achieving this level of testing. Time and effort are saved by automation testing. Cloud Testing is the process of using the resources of a third-party cloud service provider to test software applications.   One of the most commonly used cloud testing tools is LambdaTest. It is an AI-powered test orchestration and execution platform to run manual and automated tests at scale.  LambdaTest stands out as a prominent and widely adopted cross-browser testing tool, providing a comprehensive solution for modern software testing needs. Leveraging artificial intelligence, LambdaTest is a sophisticated test orchestration and execution platform designed to handle diverse testing scenarios. Whether it’s manual testing or automated testing, LambdaTest excels in facilitating these processes at scale, offering a dynamic environment for running tests seamlessly.   With support for over 3000 environments, LambdaTest enables users to validate their applications on various browser versions, operating systems, and devices, ensuring comprehensive test coverage.   The real-time testing feature allows testers to interact with applications in live environments, providing valuable insights into their behavior. Additionally, LambdaTest extends its capabilities to include automation testing, making it a versatile tool for quality assurance teams.   The inclusion of real mobile devices in the testing matrix further enhances its practicality, allowing for thorough testing of mobile applications. In essence, LambdaTest emerges as a powerful and AI-driven solution, streamlining the testing process and contributing to delivering high-quality software in today’s complex and dynamic development landscape.         Less Stress for the QA Staff   The QA team can avoid tedious manual testing by implementing an automation testing technology. This makes the QA team’s job easier, enabling them to concentrate more on important assignments. Cloud automated testing can be helpful for organizations to test the architecture, SaaS, and Cloud Native products easily.   Enhanced Accuracy   Even skilled QA engineers can make mistakes during tricky scenarios in manual testing. However, automated testing ensures accuracy. The QA team is also stress-free to work with the test cases. Return on Investment (ROI) ROI, which stands for return on investment, is a way to determine how to make a good investment. In this section, we will see the ROI of test automation in a typical business scenario. Nowadays, competition is getting tougher, and companies aim to work more in less time and a minimal amount. You can achieve this by automating test scenarios. The initial implementation can be costly, but it becomes cheaper as you keep going with automation testing.   Why
Read more
Appium Mobile Testing Issues

Troubleshooting Common Appium Mobile Testing Issues

Mobile app testing is a crucial aspect of the development process, guaranteeing that mobile applications function flawlessly on diverse devices. In recent years, Appium has emerged as a popular open-source tool for automating mobile app testing, furnishing a comprehensive solution for developers and testers alike. Appium is the most preferred automation testing tool for mobile apps.   The tool provides flexibility and has a highly active and best-supported community of specialists. Despite its capabilities, Appium is not immune to technical issues and errors that can interfere with the testing process. As such, testers must possess the necessary skills and expertise to resolve these common Appium mobile testing problems efficiently. Here are a few common Appium Mobile Testing issues:   Properly Set up your Environment   To guarantee facile and efficient mobile app testing with Appium, setting up your testing environment appropriately is crucial. This entangles configuring your devices, simulators, and emulators and establishing a stable network connection. To begin, it is imperative to verify that the intended device or simulator is properly connected to your testing system and duly recognized by Appium. This may entangle installing the necessary drivers or SDKs for the specific mobile platforms you are targeting. Besides, consider device orientation, screen resolution, and system language to simulate real-world user experiences accurately. Furthermore, a stable network connection is vital for seamless communication between the testing system and the mobile devices. You can establish a reliable Wi-Fi connection or use USB debugging for physical devices to achieve this objective. By properly setting up your testing environment, you can minimize potential technical issues and enhance the efficiency of your Appium mobile app testing process.   Ensure Device and App Compatibility   To achieve effective mobile app testing utilizing Appium, it is imperative to prioritize device and app compatibility. This entangles conducting thorough research and analysis to determine which devices and operating systems your target audience typically uses. By thoroughly understanding your user base, you can effectively prioritize testing endeavors on the devices that are most widely used and pertinent to your target audience. This strategic approach will guarantee a facile user experience for most users.   Check for the Correct Appium Configuration   To successfully address and resolve typical problems encountered during Appium mobile testing, verifying that the Appium configuration is properly set up is essential. To begin, verify that the latest version of Appium and all necessary dependencies have been installed on the testing environment. Check that the required Android SDK or iOS SDK is appropriately installed and configured, including the necessary environment variables.   Besides, check that the desired capabilities for your test are accurately set, including the device name, platform version, and app package/activity for Android or bundle ID for iOS. Confirm that the correct device or simulator is connected and accessible for testing. By comprehensively checking and verifying the Appium configuration, you can avoid potential issues and ensure a smooth and successful mobile testing process.   Utilize Desired Capabilities for Testing   Desired capabilities authorize you to specify the desired behavior and configurations of the mobile device or emulator during testing. This includes parameters such as device name, platform version, app package/activity for Android, or bundle ID for iOS.   By accurately setting these desired capabilities, you can guarantee that your tests are conducted on the intended device or emulator with the appropriate settings. This level of control facilitates you to comprehensively test the functionality and compatibility of your mobile app across different devices and operating systems.   Resolve Device Connection Issues   During mobile app testing with Appium, it is common to encounter connection problems that complicate the testing process. These issues may involve difficulties establishing a connection between the testing environment and the mobile device or intermittent disconnections that disrupt the testing flow.   To address these device connection issues effectively, verify the correct installation of all essential drivers and dependencies. Besides, double-checking the USB connections, restarting the device and testing environment, and adjusting the USB debugging settings on the device can often help troubleshoot and resolve these issues. You can promptly maintain a smooth and efficient mobile app testing workflow by addressing and resolving device connection problems.   Verify Appium Server is Running   To attain a facile mobile app testing experience with Appium, it is crucial to guarantee the proper functioning of the Appium server. Examining the server logs to identify and address any problems or notifications that could obstruct the Appium server’s correct operation is crucial. The server acts as a link between the testing environment and the mobile device, making it essential to ensure its proper functioning. By reviewing the server logs, you can detect and resolve any technical issues, ensuring a smooth testing process and optimal mobile application performance.   To ensure the Appium server is functioning properly, you can check its status by referencing the designated port where it is configured to run. This straightforward step helps verify that the server is active and ready to support the testing process and can identify any potential problems.   Troubleshoot App Installation Problems   One prevalent challenge testers may face during mobile app testing is installation issues. App installation issues can prevent the successful installation of the application on the target device, hindering the testing process. To troubleshoot app installation problems, there are several steps you can take.   Before proceeding with the installation of the app, it is imperative to verify that the target device possesses ample storage space. Clearing out unnecessary files or apps can help free up space. Furthermore, verify the application’s compatibility with your device’s OS version. If not, updating the operating system or finding an alternative app version may resolve the issue.   Address App Crashes During Testing   App crashes hinder the testing progress and indicate potential issues that can impact the app’s performance and user experience. When encountering app crashes, it is essential to adopt a structured methodology to uncover and rectify the underlying reasons. To begin with, assess the device’s memory
Read more

Our purpose is to build solutions that remove barriers preventing people from doing their best work.

Melbourne, Australia
(Sat - Thursday)
(10am - 05 pm)
Cart

No products in the cart.

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
Click outside to hide the comparison bar
Compare