SWTBot is a open source UI testing tool for SWT and Eclipse based applications. It requires bare minimum learning since it is Java based and integrates well with the JUnit framework.
An ideal unit testing tool for SWT and Eclipse based applications developers.
The document provides a template for an exploratory test charter. The charter includes sections for introduction, context, execution, and reporting. The context section describes the test environment, coverage area, and tasks. The execution section is for documenting testing notes, output files, issues, and bugs found. The reporting section summarizes the time spent on design, execution, issue investigation, and other phases of the exploratory test.
The document discusses Selenium, an open-source tool for automating web application testing. It provides an overview of Selenium components and how they work. It also discusses challenges with the traditional Selenium approach and how Tellurium addresses these challenges by defining the UI structure separately from tests using a Groovy DSL. This allows for easier refactoring and separation of UI and test code compared to the traditional "record and play" Selenium approach. The document concludes with best practices for test automation and references for further information.
MUTANTS KILLER (Revised) - PIT: state of the art of mutation testing system Tarin Gamberini
The document discusses mutation testing and the PIT mutation testing system. It begins by explaining the concepts of mutation testing, how PIT works, and the different mutators that PIT uses to generate mutants. It then provides examples of using PIT on a sample Ticket class to generate mutants and how the test results can help improve test coverage and discover weak tests.
JSON is a lightweight data format used to store and transport data between a server and web page. It stands for JavaScript Object Notation. JSON syntax follows JavaScript object syntax rules - data is in name/value pairs within curly braces for objects and square brackets for arrays. When exchanging data between a browser and server, it can only be text, so JSON text can be converted to JavaScript objects on the browser and back, allowing work with data as JavaScript objects without parsing. Arrays in JSON hold multiple objects within square brackets.
This document discusses JavaScript engines and event loops. It explains key concepts like the call stack, event queue, microtasks vs macrotasks, and how JavaScript creates the illusion of being asynchronous through the event loop. The event loop constantly checks the call stack and queue, executing functions to give the appearance of multithreading on a single thread. Web APIs also provide asynchronous capabilities that interact with the event loop.
Jetpack Compose is a new UI toolkit for Android that uses a declarative paradigm where the UI is defined as a function of app state, rather than as interacting objects. It allows defining UI using Kotlin instead of XML layouts. Compose provides composable functions to build UI in a declarative way and allows observing state changes. However, Compose is still in early development and requires unreleased versions of Android Studio, Kotlin, and the Android Gradle plugin to use.
This document provides an introduction to JUnit, a unit testing framework for Java. It discusses key concepts like unit testing, test phases (setup, exercise, verify, teardown), test fixtures, JUnit features, annotations like @Test and @Before, assertion statements to validate test results, and best practices for writing unit tests. The goal of JUnit and unit testing is to test code at the component level to find and fix bugs early in the development process.
Mutation testing is a technique that involves modifying code to generate "mutants" in order to test test quality. MuTalk is a mutation testing tool for Smalltalk that generates mutants by applying mutation "operators" that make small changes to code, such as changing logical operators. Tests are then run to determine if they can detect and "kill" the mutants. Surviving mutants indicate untested code cases. MuTalk optimizes the process by only mutating and testing covered code. Mutation testing is effective because complex faults are often coupled to simple faults detected by killing mutants.
Kotlin Bytecode Generation and Runtime Performanceintelliyole
In this talk, we'll dive into the details of how various language features supported by Kotlin are translated to Java bytecode. We'll use the JMH microbenchmarking tool to study the relative performance of various constructs and to understand how we can ensure top performance of the Kotlin code that we write.
- jQuery is a JavaScript library that simplifies HTML document traversal and manipulation, as well as event handling, animation, and Ajax.
- It works by allowing the selection of HTML elements and running functions on those elements via a simple and consistent API.
- Common uses of jQuery include modifying HTML content, CSS styling, handling user events, animating elements, and loading data from web servers via Ajax.
React Native allows developers to build mobile apps using JavaScript and React skills instead of Objective-C or Java. It uses native components and JavaScript to render apps that look and feel like native mobile apps. Getting started requires Node.js, React Native CLI, and Xcode or Android Studio depending on the target platform. Apps are run and tested using the React Native CLI. Styling uses JavaScript stylesheets and components accept a style prop. The pros are a unified codebase and faster development, while the cons include less control over styling and performance profiling challenges.
Agenda:
What is Artificial Intelligence ?
What is Machine Learning?
What is Deep Learning?
What is Data Science?
AI in software testing.
AI in software automation testing.
Demo using testim.io
The document discusses JUnit 5, the next generation of the JUnit testing framework for Java. Key aspects include a new programming model using extensions, support for Java 8 features, and ways to migrate from earlier JUnit versions. The new framework consists of the JUnit Platform launcher, the JUnit Jupiter API for writing tests, and the JUnit Vintage engine for running JUnit 3 and 4 tests.
This document discusses error management in ZIO compared to Future. It begins with an overview of ZIO and Future effects before comparing how each handles errors. Key differences noted are that Future throws errors away on a side channel while ZIO composes errors. The document recommends best practices for error handling in ZIO like extending exceptions in sealed traits and avoiding reflexive logging. It concludes by discussing how ZIO enables next-generation debugging by tracking fibers and continuations during asynchronous execution.
Functional Testing made easy with SWTBot for Developers and TestersAurélien Pupier
The document discusses using SWTBot, an automated testing framework for SWT applications. It provides an overview of SWTBot's capabilities and limitations, then describes how implementing the "Page Object Pattern" addresses some limitations by creating an application-oriented API that hides implementation details and allows testers to write tests without knowledge of underlying UI components. The implementation was successful in improving test code quality and robustness when used at Bonitasoft with their QA team.
British social customs emphasize punctuality, politeness, and respect. People are expected to arrive exactly on time for scheduled events and to notify the host if they cannot attend. It is considered polite to bring a small gift such as flowers or chocolate when invited to someone's home. Proper etiquette like shaking hands during introductions, saying "please" and "thank you", and covering one's mouth are important social norms in Britain.
This document provides information about conducting a "One-Touch Healthy Homes Check-Up" to assess homes for potential health hazards. It describes the steps of the check-up process which include assessing the home, educating occupants about any issues found, and making referrals to address problems. Key parts of the process are gaining consent from occupants, using a form to document potential issues in different areas of the home, providing educational materials and referring occupants to applicable programs or services for issues like heating problems, mold, lead hazards, or other repairs. Accurate documentation of visits and referrals allows the program to track outcomes.
PDHPE (Personal Development, Health and Physical Education) is an important subject in primary schools that helps children develop physically, socially, and with important life skills. It encourages daily physical activity, which improves strength, coordination, and reduces health problems like obesity. PDHPE programs also teach children knowledge and practical skills for better health, how to make informed health decisions, and develop communication skills and self-esteem by learning teamwork and fair play through sports. Promoting PDHPE in schools provides fun, interactive learning while instilling benefits that last throughout children's lives.
O documento discute a Revolução Industrial e a Revolução Francesa. A Revolução Industrial substituiu o trabalho artesanal pelo trabalho assalariado usando máquinas. A sociedade francesa era dividida em três grupos, com o clero e nobreza no topo e os trabalhadores na base, que desejavam melhores condições de vida. A Revolução Francesa acabou com o absolutismo real e os privilégios da nobreza, garantindo igualdade civil e direitos para o povo.
Avani Realtors & Developers, established in 2009, has emerged as a leading real estate developer in the Pune and Ratnagiri District. Our name has been associated with conquering the odds and building better homes that reflect your lifestyle.
S first year orientation history of university of san carlos 1 - copySis Mmfe Navarro
The University of San Carlos in Cebu City, Philippines traces its origins to 1595 when the Society of Jesus founded the Colegio de San Ildefonso, making it the oldest school in the country. In 1779, the school was reopened as the Seminario de San Carlos under the Diocese of Cebu. It later became known as the Colegio-Seminario de San Carlos and accepted secular students seeking advanced education in 1867. After changing hands between religious orders, the school became the University of San Carlos in 1948. Its mission is to provide relevant and transformable academic programs to serve local, national, and global communities through teaching, research, and community service.
The document discusses the Enigma machine and radar technology, how each worked, and major events involving them. It covers the basics of how the Enigma encryption machine operated and how radar was used to detect objects like planes and ships. Finally, it mentions some important historical moments related to Enigma codes and the development of radar during World War II.
This document discusses countable and uncountable nouns in English. It provides examples of countable nouns that can take singular and plural forms, as well as lists of uncountable nouns which only have one form. It also discusses quantifiers like 'some', 'any', 'much', and 'many' that are used with countable and uncountable nouns. Finally, it presents exercises for learners to practice using countable and uncountable nouns correctly.
Sustentabilidade no visual merchandising de modaMMdaMODA
Palestra apresentada no Fashion Revolution Campinas, sobre a importância do ponto de venda - e sua identidade visual - na busca por sustentabilidade para as marcas de moda.
Zurich Insurance Group is a global insurance company established in 1872 with over 60,000 employees worldwide. The document provides an overview of Zurich's global presence in key regions including Europe, North America, Latin America, Africa, and Asia-Pacific. It also summarizes Zurich's financial strength, international ratings and rankings, and its presence in Malaysia through Zurich Insurance Malaysia Berhad. The opportunities for growth in the Malaysian insurance market are highlighted. The document concludes by outlining Zurich's career opportunities and support for insurance advisors.
El documento presenta información sobre la toma de decisiones vocacionales. Explica que existen diferentes estilos para tomar decisiones (impulsivo, dependiente, autónomo y racional) y es importante identificar el propio estilo. También destaca la importancia de conocerse a sí mismo, incluyendo habilidades, rendimiento académico, intereses, valores y limitaciones, para elegir estudios o profesión de manera informada. Finalmente, recomienda investigar las opciones profesionales disponibles.
SWTBot is an open-source Java framework for testing SWT and Eclipse-based applications. It provides an easy API to automate UI testing similar to a click-robot by handling SWT complexity. SWTBot's API can be integrated into JUnit tests to develop and run test cases. It allows finding widgets using text, labels, groups, tooltips, or IDs, and performing common actions like clicking, typing, and selecting. SWTBot also takes screenshots on errors and supports different test execution modes like via launch configurations or from the command line.
San Francisco Java User Group presents Chris Bedford who talks about:
- How to write functional tests with Selenium (including explaining its IDE, architecture, RC, and alternatives like Canoo WebTest)
- How to set up Selenium testing for web apps in continuous integration using Maven, Ant, Cargo, etc.
- How to use Hudson for build server (brief overview)
January 12, 2010 in San Francisco, CA
http://www.sfjava.org/calendar/11982857/
Hosted by SUPINFO International University
Sponsored by TEKsystems, Guidewire Software, Sun, O'Reilly, JetBrains, and Marakana.
Video by Max Walker
Organized by Marakana
how to write functional tests with Selenium. how to set up Selenium Testing On Grails Apps In Continuous
Integration Using two approaches: The long way – using Maven and/or Ant The fast way, using the grails-
selenium-rc plug-in - ( see
http://buildchimp.com/wordpress/?p=241 )
Mastering Test Automation: How To Use Selenium SuccessfullySpringPeople
In this slide, identify what to test and choose the best language for automation. Learn to write maintainable and reusable Selenium tests and add UI layout test as part of automation using Galen framework. This slide will also guide you in reporting structure by using external plugin's, an illustration covering cross browser testing (Running selenium grid with Docker) and explain Code repository (Git) and Jenkins CI tool.
SoapUI Pro Plugin Workshop #SoapUIPluginsSmartBear
Ole Lensmar, CTO of SmartBear Software, explains how to develop your own plugins for SoapUI Pro, the world's most popular API testing tool. #SoapUIPlugins
This document provides an overview of Google Web Toolkit (GWT), including its architecture, key features, and how to implement common tasks. GWT is a development toolkit that allows web applications to be written in Java and compiled into JavaScript for better cross-browser compatibility. It discusses topics like building user interfaces with widgets, event handling, styling with CSS, making remote procedure calls, and accessing native JavaScript methods. Examples and demos are provided to illustrate concepts like creating custom widgets, handling events, and making asynchronous server calls. Resources for learning more about GWT are also listed.
Robot Framework is a generic test automation framework for acceptance testing. It uses a tabular syntax for creating test cases and supports keyword-driven, data-driven, and behavior-driven testing approaches. Its testing capabilities can be extended through libraries implemented in Python or Java. Tests are executed and results reported via HTML reports. The document provides information on installing Robot Framework and related tools like Selenium, and includes examples of test case creation, using setup and teardown keywords, variables, loops, and creating custom user keywords.
This document introduces JsUnit, an open source JavaScript unit testing framework that allows writing and running unit tests for JavaScript code in browsers. It discusses key aspects of JsUnit like how it conforms to the XUnit testing standard, how to write test functions and pages, how to group tests into test suites, and how JsUnit provides tools to automatically run tests across multiple browsers and operating systems for continuous integration and testing purposes.
Testing code through automated tests is important to ensure security and catch bugs early in the development process. There are different types of tests like unit tests which test individual functions and modules, and functional tests which test overall page behavior and interactions. Writing tests requires considering what to test, test organization, and dealing with limitations of testing tools.
Here are the 4 types of areas of the automation project explained in my own words:
1. Control Mapping - This contains all the mappings of the application controls being tested. It maps each control to a class so it can be referenced in the tests.
2. Implementation - This contains all the reusable methods that perform actions and validations on the application controls. Things like clicking buttons, entering text, validating text.
3. Modules - These are individual test steps or building blocks. Each one calls a method from the implementation to perform a single action.
4. Test Cases - These combine modules in a specific order or flow to test a particular scenario or functionality. They string together the individual test steps or modules to validate
Model driven testing (MDT) provides several advantages over traditional code-based testing approaches. MDT allows testing to be integrated into the design process, enabling frequent and early testing. Test architectures and test cases can be automatically generated from models, using techniques like animated sequence diagrams to simulate scenarios and effectively record test cases. This helps improve requirements and code coverage at lower cost and in less time compared to traditional testing approaches.
This document provides an introduction and overview of JsUnit, an open source unit testing framework for JavaScript that runs tests directly in web browsers. It describes the key components of JsUnit, including test functions, test pages, test suites, and a test runner. It also discusses options for automating test runs on multiple browsers and machines, such as using StandaloneTest to run tests on local browsers, and DistributedTest to coordinate running tests on remote machines. The goal is to easily run JavaScript unit tests across all target browsers and operating systems.
The presentation contains a definition and survey of the benefits of Unit Testing, and a little coding example to get the feeling of Unit Testing using JUnit, EasyMock and XMLUnit.
The document discusses various options for testing Oracle ADF applications, including:
1. JDeveloper primarily offers testing of the model layer using JUnit and Ant for automating test runs.
2. Other tools that can be used to test ADF applications at different levels include FitNesse, StrutsTestCase, ServletUnit, XMLUnit, Cactus, HttpUnit, HtmlUnit, and Selenium IDE.
3. Demos are planned to show testing model components with JUnit, running JUnit tests with Ant, and performing end-to-end testing with tools like HttpUnit and Cactus.
Selenium is an open source framework for automating web browser testing. TestingBot allows running Selenium tests across multiple browsers and platforms in the cloud. An example PHPUnit test is provided that runs against Firefox 8 on Windows using TestingBot's Selenium Grid which contains nodes on Amazon EC2 instances supporting major browsers. TestingBot also offers continuous integration features to regularly run tests and alert users of failures.
Siebel Open UI Debugging (Siebel Open UI Training, Part 7)Tech OneStop
The document discusses debugging Siebel Open UI JavaScript using the SiebelJS.log() function, debugger statements, and browser developer tools. It provides recommendations for verifying that JavaScript files are downloaded properly, using SiebelJS.log() to log variable values, adding breakpoints with debugger, and removing debugging tools before deployment. The document also highlights using the browser inspector to check JavaScript files and SiebelJS.log() to determine code execution points.
Transcript: Details of description part II: Describing images in practice - T...BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and slides: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
Details of description part II: Describing images in practice - Tech Forum 2024BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and transcript: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
In this follow-up session on knowledge and prompt engineering, we will explore structured prompting, chain of thought prompting, iterative prompting, prompt optimization, emotional language prompts, and the inclusion of user signals and industry-specific data to enhance LLM performance.
Join EIS Founder & CEO Seth Earley and special guest Nick Usborne, Copywriter, Trainer, and Speaker, as they delve into these methodologies to improve AI-driven knowledge processes for employees and customers alike.
An invited talk given by Mark Billinghurst on Research Directions for Cross Reality Interfaces. This was given on July 2nd 2024 as part of the 2024 Summer School on Cross Reality in Hagenberg, Austria (July 1st - 7th)
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsMydbops
This presentation, delivered at the Postgres Bangalore (PGBLR) Meetup-2 on June 29th, 2024, dives deep into connection pooling for PostgreSQL databases. Aakash M, a PostgreSQL Tech Lead at Mydbops, explores the challenges of managing numerous connections and explains how connection pooling optimizes performance and resource utilization.
Key Takeaways:
* Understand why connection pooling is essential for high-traffic applications
* Explore various connection poolers available for PostgreSQL, including pgbouncer
* Learn the configuration options and functionalities of pgbouncer
* Discover best practices for monitoring and troubleshooting connection pooling setups
* Gain insights into real-world use cases and considerations for production environments
This presentation is ideal for:
* Database administrators (DBAs)
* Developers working with PostgreSQL
* DevOps engineers
* Anyone interested in optimizing PostgreSQL performance
Contact info@mydbops.com for PostgreSQL Managed, Consulting and Remote DBA Services
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/07/intels-approach-to-operationalizing-ai-in-the-manufacturing-sector-a-presentation-from-intel/
Tara Thimmanaik, AI Systems and Solutions Architect at Intel, presents the “Intel’s Approach to Operationalizing AI in the Manufacturing Sector,” tutorial at the May 2024 Embedded Vision Summit.
AI at the edge is powering a revolution in industrial IoT, from real-time processing and analytics that drive greater efficiency and learning to predictive maintenance. Intel is focused on developing tools and assets to help domain experts operationalize AI-based solutions in their fields of expertise.
In this talk, Thimmanaik explains how Intel’s software platforms simplify labor-intensive data upload, labeling, training, model optimization and retraining tasks. She shows how domain experts can quickly build vision models for a wide range of processes—detecting defective parts on a production line, reducing downtime on the factory floor, automating inventory management and other digitization and automation projects. And she introduces Intel-provided edge computing assets that empower faster localized insights and decisions, improving labor productivity through easy-to-use AI tools that democratize AI.
MYIR Product Brochure - A Global Provider of Embedded SOMs & SolutionsLinda Zhang
This brochure gives introduction of MYIR Electronics company and MYIR's products and services.
MYIR Electronics Limited (MYIR for short), established in 2011, is a global provider of embedded System-On-Modules (SOMs) and
comprehensive solutions based on various architectures such as ARM, FPGA, RISC-V, and AI. We cater to customers' needs for large-scale production, offering customized design, industry-specific application solutions, and one-stop OEM services.
MYIR, recognized as a national high-tech enterprise, is also listed among the "Specialized
and Special new" Enterprises in Shenzhen, China. Our core belief is that "Our success stems from our customers' success" and embraces the philosophy
of "Make Your Idea Real, then My Idea Realizing!"
Sustainability requires ingenuity and stewardship. Did you know Pigging Solutions pigging systems help you achieve your sustainable manufacturing goals AND provide rapid return on investment.
How? Our systems recover over 99% of product in transfer piping. Recovering trapped product from transfer lines that would otherwise become flush-waste, means you can increase batch yields and eliminate flush waste. From raw materials to finished product, if you can pump it, we can pig it.
Quality Patents: Patents That Stand the Test of TimeAurora Consulting
Is your patent a vanity piece of paper for your office wall? Or is it a reliable, defendable, assertable, property right? The difference is often quality.
Is your patent simply a transactional cost and a large pile of legal bills for your startup? Or is it a leverageable asset worthy of attracting precious investment dollars, worth its cost in multiples of valuation? The difference is often quality.
Is your patent application only good enough to get through the examination process? Or has it been crafted to stand the tests of time and varied audiences if you later need to assert that document against an infringer, find yourself litigating with it in an Article 3 Court at the hands of a judge and jury, God forbid, end up having to defend its validity at the PTAB, or even needing to use it to block pirated imports at the International Trade Commission? The difference is often quality.
Quality will be our focus for a good chunk of the remainder of this season. What goes into a quality patent, and where possible, how do you get it without breaking the bank?
** Episode Overview **
In this first episode of our quality series, Kristen Hansen and the panel discuss:
⦿ What do we mean when we say patent quality?
⦿ Why is patent quality important?
⦿ How to balance quality and budget
⦿ The importance of searching, continuations, and draftsperson domain expertise
⦿ Very practical tips, tricks, examples, and Kristen’s Musts for drafting quality applications
https://www.aurorapatents.com/patently-strategic-podcast.html
Quantum Communications Q&A with Gemini LLM. These are based on Shannon's Noisy channel Theorem and offers how the classical theory applies to the quantum world.
What's Next Web Development Trends to Watch.pdfSeasiaInfotech2
Explore the latest advancements and upcoming innovations in web development with our guide to the trends shaping the future of digital experiences. Read our article today for more information.
GDG Cloud Southlake #34: Neatsun Ziv: Automating AppsecJames Anderson
The lecture titled "Automating AppSec" delves into the critical challenges associated with manual application security (AppSec) processes and outlines strategic approaches for incorporating automation to enhance efficiency, accuracy, and scalability. The lecture is structured to highlight the inherent difficulties in traditional AppSec practices, emphasizing the labor-intensive triage of issues, the complexity of identifying responsible owners for security flaws, and the challenges of implementing security checks within CI/CD pipelines. Furthermore, it provides actionable insights on automating these processes to not only mitigate these pains but also to enable a more proactive and scalable security posture within development cycles.
The Pains of Manual AppSec:
This section will explore the time-consuming and error-prone nature of manually triaging security issues, including the difficulty of prioritizing vulnerabilities based on their actual risk to the organization. It will also discuss the challenges in determining ownership for remediation tasks, a process often complicated by cross-functional teams and microservices architectures. Additionally, the inefficiencies of manual checks within CI/CD gates will be examined, highlighting how they can delay deployments and introduce security risks.
Automating CI/CD Gates:
Here, the focus shifts to the automation of security within the CI/CD pipelines. The lecture will cover methods to seamlessly integrate security tools that automatically scan for vulnerabilities as part of the build process, thereby ensuring that security is a core component of the development lifecycle. Strategies for configuring automated gates that can block or flag builds based on the severity of detected issues will be discussed, ensuring that only secure code progresses through the pipeline.
Triaging Issues with Automation:
This segment addresses how automation can be leveraged to intelligently triage and prioritize security issues. It will cover technologies and methodologies for automatically assessing the context and potential impact of vulnerabilities, facilitating quicker and more accurate decision-making. The use of automated alerting and reporting mechanisms to ensure the right stakeholders are informed in a timely manner will also be discussed.
Identifying Ownership Automatically:
Automating the process of identifying who owns the responsibility for fixing specific security issues is critical for efficient remediation. This part of the lecture will explore tools and practices for mapping vulnerabilities to code owners, leveraging version control and project management tools.
Three Tips to Scale the Shift Left Program:
Finally, the lecture will offer three practical tips for organizations looking to scale their Shift Left security programs. These will include recommendations on fostering a security culture within development teams, employing DevSecOps principles to integrate security throughout the development
2. AgendaPART I – About SWTBotIntroduction to SWTBotSWTBot FeaturesSupported WidgetsTest ExecutionsPART II - Integrating SWTBot tests execution with continuous build systemWhat more?Limitations
4. Introduction – What is SWTBot?Java based UI/functional testing tool for testing SWT and Eclipse based applicationsSet of API’s to access and manipulate widgetsCross platformFree and open sourceStill in Incubation Phase in Eclipse
5. Introduction – Why SWTBot?Why not QTP? Why not PDE Junit? Why not…Provides an intuitive way to access and test UI components in EclipseUI Testing covers all layers of softwareEasy to learn if someone is already familiar with Java and JUnitCan integrate very well within the IDE and provides excellent support for integration with Ant
6. Introduction – Who is it for?DevelopersUnit testsIntegration with build ensures quality buildsQATest automationQuality product
7. Setting up Eclipse environmentSWTBot update sitehttp://www.eclipse.org/swtbot/downloads.phpCreate a plugin project and setup dependenciesorg.eclipse.uiorg.eclipse.core.runtimeorg.eclipse.swtbot.eclipse.finderorg.eclipse.swtbot.junit4_xorg.eclipse.swtbot.swt.finderorg.junit4org.hamcrestOr, create a SWTBot test plugin
8. How does it work?SWTBot = bot which acts on SWT componentsEntry point: org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBotHelper classes for widgetsTo test:Instantiate botSWTWorkbenchBotbot = new SWTWorkbenchBot();Click on buttonSWTBotButton button = bot.button("Hello, World!“);button.click();Congrats! You have just written your first SWTBOT test
9. SWTBot FeaturesFinding controls based on visual cuesSupport for simulated mouse and keyboard inputQuerying widgets for stateUI specific assertions like: assertEnabled(Widget)Investigating test failures
10. SWTBot Features – Finding ControlsControls can be found based on visual cues like:TextLabelGroupTooltipIdsCombination of all or any of the above (Using matchers)Eg:Find textbox that has a label 'Username:‘SWTBotText username = bot.textWithLabel("Username:"); Identify button using tooltip SWTBotToolbarButton save = bot.toolbarButtonWithTooltip("Save");
11. SWTBot Features – Using matchersSimple matcherswithText(“Finish”)withLabel(“Username:”)withRegex(“Proceed to step * ”)widgetOfType(Button.class)withStyle(SWT.ARROW, “SWT.ARROW”)Combination of matchersallOf(matchers)anyOf(matchers)not(matchers)
12. Filtering controls using MatchersMatch : widgets of type 'Label' with regular expression 'Welcome, <USERNAME>' Matcher matcher = allOf( widgetOfType(Label.class), withRegex("Welcome, .*") ); Get the label that matches the matcher SWTBotLabel label = new SWTBotLabel((Label) bot.widget(matcher));
13. SWTBot Features – Simulate input SWTBot provides API to simulate actions on widgetsEg:Click a buttonbutton.click(); Select a item in comboboxcomboBox.select(“Option 12"); Type in a textboxtext.typeText(“This is a demo string"); Expand treetree.expandNode("MyProject", "src", "com", "example", "MyClass.java");
14. SWTBot Features – Querying widgetsProvides operations to query the state of widgetsSome generic queries like: getText(), isEnabled(), isVisible() are available on all widgetsEg:Check state of a checkboxbooleanchecked = checkbox.isChecked();Check if a radio button is selectedboolean selected = radio.isSelected();
15. SWTBot Features – Investigating test failuresStack trace in Junit viewCapturing screen shot when test case fails@RunWith(SWTBotJunit4ClassRunner.class)publicclassMessageCreateTest{... …}
16. Supported WidgetsSupport for most SWT controlsSupport for most UI operations on SWT controlsSupport for Eclipse based contributions:ViewsText Editors (autocompletion, typing, etc)View Toolbars and View Menus
17. SWT Test ExecutionBy launching them from launch configuration (same as Junit execution)From command line, using shell script or ant
18. DemoA small SWTBot example illustrating the simplicity of SWTBotYour first SWTBot
19. PART II – Integrating SWTBot tests execution with continuous build system
20. Integration of test execution with continuous buildBuild plugins to be testedBuild SWTBot test pluginsInstall plugins to be tested, test plugins and headless testing framework (http://www.eclipse.org/swtbot/downloads.php) into eclipseStart SWTBot test case executionFormat the generated report and mail if required
21. Pre-requisiteEach test plugin must contain test.xmlSet appropriate propertiesDelegate execution of test to a library fileTest plugins should always be ‘unpacked’
22. Under the covers…For each test pluginInvoke test.xml which willSet required properties like class name, plugin name, directory to use as temp workspace etcInvoke target ‘swtbot-test’ of library file located in ‘org.eclipse.swtbot.eclipse.junit4.headless’ plugin which will then launch and execute all test casesInvoke target ‘collect’ of library file located in ‘org.eclipse.swtbot.eclipse.junit4.headless’ plugin which will consolidate test case results in one fileFormat the generated results file (xml file) into desired format (usually html)
25. What more?Parse results file and fail build if any of the test fails – ensuring only quality builds go to QACode Coverage – write more tests to test uncovered code
QTP:Pre-work required – repositoryNot cross platform – runs only on windows – no linux supportEven though its one of the fastest tools in the market – its still slower than SWTBotLearning requiredBetter because multiple types of apps can be supportedSWTBot provides APIs that are simple to read and write.No-hassle tool for writing powerful tests
SWTBot provides APIs that are simple to read and write. These APIs hide away the complexities of SWT and Eclipse. This makes it suitable for use by everyone and not just developers.
If you scroll down the stack trace in the JUnit view, you’ll see the cause of the error.The@RunWith(SWTBotJunit4ClassRunner.class)annotation captures a screenshot in a screenshots directory in your project. Refresh your project to see the new folder.
List of Not Yet Supported SWT WidgetsButton Arrow,Browser,Canvas,Composite,CTabFolder,Link,ProgressBar,Sash,Scale, ScrolledComposite,Slider,Spinner,TabFolderNot Yet Supported UI ToolkitsGEFEclipse FormsNebulaeSWT & eRCPRAP (work in progress)Native Dialogs (MessageBox, FileDialog, ColorDialog etc.)Most of it is planned to be supported them ASAP
A demo mapping all the theory learnt so far into a practical example
It's generally accepted that writing tests as part of software development is a very good thing indeed. It's also generally accepted that automating the running of tests in an automated or nightly build is good engineering practice. Let's face it, if tests are not run automatically then there's a good chance they won't be run at all, and tests that are not run are next to useless.SWTBot provides an excellent framework to write and run unit tests for your plug-ins that can be run from within the Eclipse environment.Once you have taken the time and effort to write these valuable unit tests, how do you automate the running of these unit tests so that you can integrate them into your automated build?
A demo showing how execution on unit tests can be integrated with the regular build system
List of Not Yet Supported SWT WidgetsButton Arrow,Browser,Canvas,Composite,CTabFolder,Link,ProgressBar,Sash,Scale, ScrolledComposite,Slider,Spinner,TabFolderNot Yet Supported UI ToolkitsGEFEclipse FormsNebulaeSWT & eRCPRAP (work in progress)Native Dialogs (MessageBox, FileDialog, ColorDialog etc.)Most of it is planned to be supported them ASAP