{"id":155,"date":"2021-02-15T12:18:59","date_gmt":"2021-02-15T04:18:59","guid":{"rendered":"https:\/\/www.linyinghao.cn\/wordpress\/?p=155"},"modified":"2022-02-04T22:55:44","modified_gmt":"2022-02-04T14:55:44","slug":"automate-oracle-saas-testing-using-selenium","status":"publish","type":"post","link":"https:\/\/www.linyinghao.cn\/wordpress\/?p=155","title":{"rendered":"Automate Oracle SaaS Testing Using Selenium"},"content":{"rendered":"\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=155\/#Why_SaaS_Automation_Testing\" >Why SaaS Automation Testing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=155\/#Cases_Suitable_and_Not_Suitable_for_Automation_Testing\" >Cases Suitable and Not Suitable for Automation Testing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=155\/#Why_Selenium\" >Why Selenium<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=155\/#Data_Driven_Testing_and_Keyword_Driven_Testing\" >Data Driven Testing and Keyword Driven Testing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=155\/#Integration_with_Git_Maven_and_Jenkins_for_End_to_End_Automation\" >Integration with Git, Maven and Jenkins for End to End Automation<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"why-saas-automation-testing\"><span class=\"ez-toc-section\" id=\"Why_SaaS_Automation_Testing\"><\/span>Why SaaS Automation Testing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Oracle SaaS applications are normally being upgraded quarterly. This frequent upgrade cycle enables clients with rapid response capability to swiftly evolving business environment. On the flip side, it brings additional challenge to QA process.<\/p>\n\n\n\n<p>Most on-premise applications don&#8217;t have heavy requirement for regression testing because functionalities are relatively stable after initial build. However, for SaaS application, new features are involved every quarter. Typical business flow may consists of multiple applications, and to ensure the correct behavior of cooperation among multiple applications, regression testing is becoming more important and indispensable.<\/p>\n\n\n\n<p>Manual testing is both time-consuming and cost-consuming. It often involves multiple users to complete a complex test case. It is also tedious and easy to make mistake during the lengthy operation steps.<\/p>\n\n\n\n<p>Automation testing is an alternative option to enhance the QA process at a acceptable cost. It is designed to repeatly execute testing steps to ensure no existing function broken after upgrade or enhancement. It also increases the testing speed and coverage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cases-suitable-and-not-suitable-for-automation-testing\"><span class=\"ez-toc-section\" id=\"Cases_Suitable_and_Not_Suitable_for_Automation_Testing\"><\/span>Cases Suitable and Not Suitable for Automation Testing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"suitable-cases\">Suitable cases<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>Testing cases to be executed repeatedly<\/li><li>Testing cases which are tedious<\/li><li>Testing cases which are time consuming<\/li><li>Testing cases which are high risk and business critical<\/li><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"not-suitable-cases\">NOT Suitable cases<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>Testing cases which are newly designed and not manually tested for enough rounds<\/li><li>Testing cases which are executed less-frequently or even on adhoc basis<\/li><\/ol>\n\n\n\n<p><\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-selenium\"><span class=\"ez-toc-section\" id=\"Why_Selenium\"><\/span>Why Selenium<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Selenium is the most popular free web testing tool. It has following benifits:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Open source<\/li><li>Support multiple program languages including Java, Perl, Python, C#, Ruby, Groovy, JavaScript<\/li><li>Support multiple operations including Windows, Mac, Linux,&nbsp;and&nbsp;UNIX<\/li><li>Support all mainstream browsers including&nbsp;Internet Explorer, Chrome, Firefox, Opera,&nbsp;and&nbsp;Safari<\/li><li>Support testing framework in different language. For example, in Java its framework can be integrated with JUnit, TestNG etc.<\/li><li>Support testing across devices. Selenium Test Automation can be implemented for&nbsp;mobile&nbsp;web application automation on Android and&nbsp;iPhone<\/li><li>Easy to integrate into Continuous Integration tool chain<\/li><li>Less hardware requirement, each to deploy in development machine<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"data-driven-testing-and-keyword-driven-testing\"><span class=\"ez-toc-section\" id=\"Data_Driven_Testing_and_Keyword_Driven_Testing\"><\/span>Data Driven Testing and Keyword Driven Testing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"data-driven-testing\">Data Driven Testing<\/h3>\n\n\n\n<p>A typical regression testing is to repeatedly testing same business process for multiple times. However, in many cases, same data can not be tested for multiple times. It is necessary to change the testing data before every time the automation testing is executed. It is costly and unnecessary to modify the testing script by only changing the testing data.<\/p>\n\n\n\n<p>An effecient way is to build Data Driven framework to seperate testing process and testing data. Testing data can be stored in spreadsheet or even database. During runtime, testing data are fetched dynamically and fed to testing framework. It is easy to maintain testing data in a dedicated phase to reduce the overall effort required.<\/p>\n\n\n\n<p>Following is a sample of testing data. It is easy to understand and modify before execution.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-2-1024x43.png\" alt=\"\" class=\"wp-image-168\" width=\"797\" height=\"33\" srcset=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-2-1024x43.png 1024w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-2-300x13.png 300w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-2-768x32.png 768w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-2.png 1223w\" sizes=\"auto, (max-width: 797px) 100vw, 797px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"keyword-dirven-testing\"> Keyword Dirven Testing<\/h3>\n\n\n\n<p>Selenium provides native support for developing test cases in program languages. However, developing testing cases fully in program language need program skills and not flexible enough.<\/p>\n\n\n\n<p>To increase the maintenance efficiency, it is better to separate the testing process and testing script. An option is to store testing scripts in spreadsheet or even database. During runtime, testing scripts are fetched dynamically and fed to testing framework. It increases both testing scripts composition and maintenance efficiency. It provides better readability to the testing steps. And more important, It enables modulization of testing steps.<\/p>\n\n\n\n<p>Following is a sample of testing script. It is easy to read for what each step has done. It is also easy to adjust incase testing sequence has any change.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"899\" height=\"492\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-1.png\" alt=\"\" class=\"wp-image-167\" srcset=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-1.png 899w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-1-300x164.png 300w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-1-768x420.png 768w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"integration-with-git-maven-and-jenkins-for-end-to-end-automation\"><span class=\"ez-toc-section\" id=\"Integration_with_Git_Maven_and_Jenkins_for_End_to_End_Automation\"><\/span>Integration with Git, Maven and Jenkins for End to End Automation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Integration Selenium with Git, Maven and Jenkins provides automation build and execution capability. A typical use case is, once testing data or testing framework has been modified and pushed to SCM (source code management system) like Git, the jenkins job is triggerred and testing framework is built immediately using Maven. After that testing is executed and report is sent to stakeholder via mail or other approach. It can also be scheduled at regular frequency to build and test at hardware free time.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"612\" src=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-4-1024x612.png\" alt=\"\" class=\"wp-image-175\" srcset=\"https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-4-1024x612.png 1024w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-4-300x179.png 300w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-4-768x459.png 768w, https:\/\/www.linyinghao.cn\/wordpress\/wp-content\/uploads\/2021\/02\/image-4.png 1198w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>For detail implementation of the whole architecture, please refer to the other article: <a href=\"https:\/\/www.linyinghao.cn\/wordpress\/?p=184\">Integrate Git, Maven and Jenkins to Automate Selenium Testing<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article describes general Selenium framework used to test Oracle SaaS applications.<\/p>\n","protected":false},"author":1,"featured_media":846,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[8,4],"class_list":["post-155","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-2","tag-automation","tag-selenium"],"_links":{"self":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=155"}],"version-history":[{"count":23,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/155\/revisions"}],"predecessor-version":[{"id":860,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/155\/revisions\/860"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=\/wp\/v2\/media\/846"}],"wp:attachment":[{"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linyinghao.cn\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}