<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Oracle - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Oracle - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 24 May 2026 19:48:39 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/oracle/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Oracle ERP Test Automation Guide – Examples and Best Practices ]]>
                </title>
                <description>
                    <![CDATA[ Oracle Enterprise Resource Planning helps businesses manage finance and supply chains. It also supports human resources and brings different functions together. Many growing businesses rely on it to handle complex tasks, as system failures or errors ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/oracle-erp-test-automation-guide/</link>
                <guid isPermaLink="false">68123ef3b70ffa1e4ce467ae</guid>
                
                    <category>
                        <![CDATA[ Testing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Oracle ]]>
                    </category>
                
                    <category>
                        <![CDATA[ test-automation ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Nazneen Ahmad ]]>
                </dc:creator>
                <pubDate>Wed, 30 Apr 2025 15:17:07 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1745527550725/45d7f400-d345-4448-ab84-d3327dc425a6.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Oracle Enterprise Resource Planning helps businesses manage finance and supply chains. It also supports human resources and brings different functions together. Many growing businesses rely on it to handle complex tasks, as system failures or errors can slow down work and affect productivity.</p>
<p>Regular testing is essential to keep Oracle ERP working correctly. But manual testing takes a lot of time and doesn’t scale well. It also can’t keep up with frequent updates and may miss important issues.</p>
<p>This is where automated testing comes in and can help you solve these problems. It makes testing faster, improves accuracy, and ensures the system works correctly.</p>
<p>In this article, we’ll cover how automated testing works, some best practices, common challenges, and future trends.</p>
<h3 id="heading-table-of-contents">Table of Contents</h3>
<ol>
<li><p><a class="post-section-overview" href="#heading-what-is-oracle-erp">What Is Oracle ERP?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-what-types-of-testing-matter-most-for-oracle-erp">What Types of Testing Matter Most for Oracle ERP?</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-understanding-oracle-erp-test-automation">Understanding Oracle ERP Test Automation</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-how-to-implement-oracle-erp-test-automation">How to Implement Oracle ERP Test Automation</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-testing-example">Testing Example</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-best-practices-for-oracle-test-automation">Best Practices for Oracle Test Automation</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-role-of-ai-driven-tools-in-oracle-erp-automation">Role of AI-driven Tools in Oracle ERP Automation</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-automating-testing-in-cicd-pipelines">Automating Testing in CI/CD Pipelines</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-challenges-and-solutions">Challenges and Solutions</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></p>
</li>
</ol>
<h2 id="heading-what-is-oracle-erp"><strong>What Is Oracle ERP?</strong></h2>
<p>Oracle ERP, or Oracle Enterprise Resource Planning, is a group of connected apps that help you manage daily business tasks. These include finance, procurement, project tracking, risk handling, supply chain, and more.</p>
<p>Instead of using different tools for each task, Oracle ERP puts everything in one place. It works like a central system that connects your business departments.</p>
<p>You can use it to track expenses, manage vendor deals, or process payroll. Everyone can work together on the same system. Since it runs core parts of your business, it is important to make sure it works well – and that is where testing helps.</p>
<h2 id="heading-what-types-of-testing-matter-most-for-oracle-erp"><strong>What Types of Testing Matter Most for Oracle ERP?</strong></h2>
<p>Oracle ERP covers many business areas. These include finance, procurement, supply chain, and project management. Because everything is connected, even a small change can affect many parts of the system. That is why testing is important. Below are the common types of testing you’ll want to perform on Oracle ERP:</p>
<h3 id="heading-1-functional-testing"><strong>1. Functional Testing</strong></h3>
<p>This test checks if each feature works as it should.</p>
<ul>
<li><p>Is tax applied correctly on invoices?</p>
</li>
<li><p>Do purchase orders go to the right people for approval?</p>
</li>
<li><p>Can a user create a report without issues?</p>
</li>
</ul>
<p>It helps make sure the system follows business rules. It also confirms that tasks are done the right way.</p>
<h3 id="heading-2-integration-testing"><strong>2. Integration Testing</strong></h3>
<p>Oracle ERP often connects with other tools like payroll, banking, or CRM systems. This test checks if:</p>
<ul>
<li><p>Data moves smoothly between systems.</p>
</li>
<li><p>No data is lost or mismatched.</p>
</li>
<li><p>ERP modules talk to each other properly.</p>
</li>
</ul>
<p>It is key for companies using more than one platform.</p>
<h3 id="heading-3-regression-testing"><strong>3. Regression Testing</strong></h3>
<p>Oracle rolls out updates often. Regression testing checks if those updates break anything.</p>
<ul>
<li><p>Do custom features still work?</p>
</li>
<li><p>Are old functions working after updates?</p>
</li>
</ul>
<p>This test is usually automated. It saves time and catches issues early.</p>
<h3 id="heading-4-security-testing"><strong>4. Security Testing</strong></h3>
<p>Oracle ERP holds sensitive business data. So, security checks are a must.</p>
<ul>
<li><p>Can only the right users see or change data?</p>
</li>
<li><p>Are login and role settings correct?</p>
</li>
<li><p>Are there any weak points in access control?</p>
</li>
</ul>
<p>This is very important in fields with strict data rules.</p>
<h3 id="heading-5-performance-testing"><strong>5. Performance Testing</strong></h3>
<p>This test checks how well the system runs.</p>
<ul>
<li><p>Can it handle large loads during busy times?</p>
</li>
<li><p>Do reports open fast?</p>
</li>
<li><p>Are batch jobs finishing on time?</p>
</li>
</ul>
<p>Slow systems hurt productivity. This testing helps catch those problems early.</p>
<h3 id="heading-6-user-acceptance-testing-uat"><strong>6. User Acceptance Testing (UAT)</strong></h3>
<p>Before going live, real users try out the system.</p>
<ul>
<li><p>Are custom workflows working?</p>
</li>
<li><p>Are the reports showing correct data?</p>
</li>
<li><p>Is the system easy for users to navigate?</p>
</li>
</ul>
<p>UAT helps confirm that the system fits the way people actually work.</p>
<h2 id="heading-understanding-oracle-erp-test-automation">Understanding Oracle ERP Test Automation</h2>
<p>Performing tests without automation requires a lot of time and effort. It also makes it hard to keep up with system updates.</p>
<p>Automated ERP testing runs tests using various automation tools, which reduces the amount of work you have to do and makes the process faster. It can also help you handle repetitive tasks, check crucial business processes, and make sure that system updates don’t create issues.</p>
<p>Different types of testing can benefit from automation, like regression testing, integration testing, and performance testing.</p>
<ul>
<li><p>Regression testing makes sure new updates don’t break existing processes.</p>
</li>
<li><p>Integration testing checks if data moves correctly between Oracle ERP and other systems.</p>
</li>
<li><p>And performance testing shows how well the system works during heavy use.</p>
</li>
</ul>
<p>Automation also helps improve security. It finds weaknesses and ensures the system follows certain rules and standards. It also reduces downtime and makes releases faster by working with CI/CD pipelines.</p>
<p>Finally, test automation helps you make sure that your testing processes remain consistent. It also helps you and your team apply updates quickly and improve system reliability.</p>
<p>So, to summarize, automating Oracle ERP testing results in:</p>
<ul>
<li><p>Better test coverage – Detects bugs early and improves reliability.</p>
</li>
<li><p>Faster development – Automates repetitive tests, saving time and costs.</p>
</li>
<li><p>Supports CI/CD – Helps with smooth updates and new features.</p>
</li>
<li><p>Scalability – Handles complex cases and large data sets.</p>
</li>
<li><p>System stability – Ensures all features work as expected.</p>
</li>
</ul>
<h2 id="heading-how-to-implement-oracle-erp-test-automation">How to Implement Oracle ERP Test Automation</h2>
<p>Automation testing for Oracle Cloud ERP needs a clear and structured plan. Follow these steps to get started:</p>
<h3 id="heading-step-1-create-and-implement-test-cases"><strong>Step 1: Create and Implement Test Cases</strong></h3>
<p>Start with detailed test cases. Identify key ERP functions that need testing. Write test scripts that are reusable and easy to maintain. Use data driven or keyword driven methods for better coverage.</p>
<p>Follow best practices like parameterization and modularization. This makes scripts more reliable. Strong test scripts help detect issues early, speed up testing, and give quick feedback.</p>
<h3 id="heading-step-2-set-up-a-test-environment"><strong>Step 2: Set Up a Test Environment</strong></h3>
<p>A stable test environment is important. Keep configurations and data similar to production. Use virtualization or containers for easy and repeatable testing.</p>
<h3 id="heading-step-3-run-test-cases"><strong>Step 3: Run Test Cases</strong></h3>
<p>Run test cases in the test environment. Check ERP functions and fix any issues. Use CI/CD pipelines to automate testing. This helps with faster feedback and regular testing.</p>
<h3 id="heading-step-4-analyze-results-and-report-issues"><strong>Step 4: Analyze Results and Report Issues</strong></h3>
<p>After running tests:</p>
<ul>
<li><p>Check for bugs.</p>
</li>
<li><p>Prioritize them based on impact.</p>
</li>
<li><p>Report issues to the development team.</p>
</li>
<li><p>Use test management tools to track defects and streamline reporting.</p>
</li>
</ul>
<h3 id="heading-step-5-perform-regression-testing"><strong>Step 5: Perform Regression Testing</strong></h3>
<p>Make sure new updates do not break existing functions. Run regression tests after every change. This ensures stability and smooth updates.</p>
<h2 id="heading-testing-example">Testing Example</h2>
<p>Let’s now break down how test automation works in Oracle ERP using a real-world case.</p>
<p>Say you want to test if a purchase order (PO) can be created and approved properly in Oracle ERP Cloud. Here is how you can do it, step by step.</p>
<h3 id="heading-1-identify-the-test-scenario">1. Identify the Test Scenario</h3>
<p>First, decide what you want to test.</p>
<p><strong>Example scenario:</strong><br>You create a PO. The right user approves it. Then you check if it shows up in the dashboard.</p>
<p>What you will need:</p>
<ul>
<li><p>User roles (like Procurement Requester and Manager)</p>
</li>
<li><p>Test data (supplier name, item, quantity, cost)</p>
</li>
<li><p>Expected result (status becomes ‘Approved’)</p>
</li>
</ul>
<h3 id="heading-2-choose-a-test-automation-tool">2. Choose a Test Automation Tool</h3>
<p>Now you’ll need to pick the right tool. Some good options are:</p>
<ul>
<li><p>Oracle Application Testing Suite (OATS)</p>
</li>
<li><p>Selenium</p>
</li>
<li><p>Tricentis Tosca</p>
</li>
<li><p>Katalon Studio</p>
</li>
</ul>
<p>Pick one that:</p>
<ul>
<li><p>Works well with Oracle UI (pop-ups, tables, and so on)</p>
</li>
<li><p>Connects with your CI/CD tools</p>
</li>
<li><p>Supports test data and reporting</p>
</li>
</ul>
<p><strong>Tip:</strong> Tosca is great if you want codeless testing. It is easy for non-developers.</p>
<h3 id="heading-3-create-the-automation-script">3. Create the Automation Script</h3>
<p>Let’s now see how to write the test. We will use Selenium and Java as an example.</p>
<p>What the script will do:</p>
<ul>
<li><p>Open Oracle ERP</p>
</li>
<li><p>Log in</p>
</li>
<li><p>Go to the Purchase Orders module</p>
</li>
<li><p>Enter order details</p>
</li>
<li><p>Submit the form</p>
</li>
<li><p>Check if the PO gets approved</p>
</li>
</ul>
<p><strong>Here is a sample script:</strong></p>
<pre><code class="lang-java">Copy codeimport org.openqa.selenium.By;
<span class="hljs-keyword">import</span> org.openqa.selenium.WebDriver;
<span class="hljs-keyword">import</span> org.openqa.selenium.WebElement;
<span class="hljs-keyword">import</span> org.openqa.selenium.chrome.ChromeDriver;

<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">OracleERPTest</span> </span>{
    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> </span>{
        WebDriver driver = <span class="hljs-keyword">new</span> ChromeDriver();
        driver.get(<span class="hljs-string">"https://your-instance.oraclecloud.com"</span>);

        <span class="hljs-comment">// Login</span>
        driver.findElement(By.id(<span class="hljs-string">"username"</span>)).sendKeys(<span class="hljs-string">"yourUser"</span>);
        driver.findElement(By.id(<span class="hljs-string">"password"</span>)).sendKeys(<span class="hljs-string">"yourPassword"</span>);
        driver.findElement(By.id(<span class="hljs-string">"signInButton"</span>)).click();

        <span class="hljs-comment">// Navigate to Procurement</span>
        driver.findElement(By.linkText(<span class="hljs-string">"Procurement"</span>)).click();
        driver.findElement(By.id(<span class="hljs-string">"createPO"</span>)).click();

        <span class="hljs-comment">// Enter PO details</span>
        driver.findElement(By.id(<span class="hljs-string">"supplierField"</span>)).sendKeys(<span class="hljs-string">"ABC Ltd"</span>);
        driver.findElement(By.id(<span class="hljs-string">"itemField"</span>)).sendKeys(<span class="hljs-string">"Laptop"</span>);
        driver.findElement(By.id(<span class="hljs-string">"quantityField"</span>)).sendKeys(<span class="hljs-string">"5"</span>);
        driver.findElement(By.id(<span class="hljs-string">"priceField"</span>)).sendKeys(<span class="hljs-string">"900"</span>);

        <span class="hljs-comment">// Submit PO</span>
        driver.findElement(By.id(<span class="hljs-string">"submitButton"</span>)).click();

        <span class="hljs-comment">// Verify status</span>
        String status = driver.findElement(By.id(<span class="hljs-string">"statusLabel"</span>)).getText();
        <span class="hljs-keyword">if</span> (status.equals(<span class="hljs-string">"Approved"</span>)) {
            System.out.println(<span class="hljs-string">"Test Passed: PO Approved."</span>);
        } <span class="hljs-keyword">else</span> {
            System.out.println(<span class="hljs-string">"Test Failed: PO Not Approved."</span>);
        }

        driver.quit();
    }
}
</code></pre>
<h3 id="heading-4-use-data-driven-testing">4. Use Data-Driven Testing</h3>
<p>Now run the same test using different data. You can store data in an Excel or CSV file.</p>
<p><strong>Example test data:</strong></p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Supplier</td><td>Item</td><td>Quantity</td><td>Cost</td></tr>
</thead>
<tbody>
<tr>
<td>ABC Ltd</td><td>Laptop</td><td>5</td><td>900</td></tr>
<tr>
<td>XYZ Inc</td><td>Printer</td><td>2</td><td>200</td></tr>
</tbody>
</table>
</div><p>Use a loop in your test to pick each row and submit a new PO.</p>
<h3 id="heading-5-run-and-validate">5. Run and Validate</h3>
<p>Now run your script. You can add checks to confirm:</p>
<ul>
<li><p>The status is "Approved"</p>
</li>
<li><p>The correct person approved it</p>
</li>
<li><p>The PO shows in reports or dashboards</p>
</li>
</ul>
<p><strong>Tip:</strong> Use <code>assertEquals()</code> or similar methods in your script to verify the result.</p>
<p>After creating your automation script, the next step is to run it and confirm that the PO creation process works correctly.</p>
<p>You should validate the following:</p>
<h4 id="heading-1-check-if-the-po-status-is-approved"><strong>1. Check if the PO status is "Approved"</strong></h4>
<p>Once the PO is submitted, use an assertion to confirm its approval status:</p>
<pre><code class="lang-java">Copy codeimport <span class="hljs-keyword">static</span> org.junit.Assert.assertEquals;

String status = driver.findElement(By.id(<span class="hljs-string">"statusLabel"</span>)).getText();
assertEquals(<span class="hljs-string">"Approved"</span>, status);
</code></pre>
<p>This code checks the displayed status and compares it with the expected value, "Approved." If the status doesn’t match, the test will fail.</p>
<h4 id="heading-2-verify-the-correct-approver"><strong>2. Verify the correct approver</strong></h4>
<p>If the UI shows the name of the person who approved the PO, you can confirm that as well:</p>
<pre><code class="lang-java">Copy codeString approver = driver.findElement(By.id(<span class="hljs-string">"approverName"</span>)).getText();
assertEquals(<span class="hljs-string">"John Manager"</span>, approver);
</code></pre>
<p>In Oracle ERP, this information is usually found in the Approval History or within the PO details page. This verifies that the person shown as the approver is indeed the correct one, such as "John Manager."</p>
<h4 id="heading-3-confirm-the-po-appears-in-the-dashboard-or-report"><strong>3. Confirm the PO appears in the dashboard or report</strong></h4>
<p>After approval, the PO should be listed in the procurement dashboard or reports. You can search for the PO number and verify its presence:</p>
<pre><code class="lang-java">Copy codedriver.findElement(By.id(<span class="hljs-string">"searchField"</span>)).sendKeys(<span class="hljs-string">"PO123456"</span>);
driver.findElement(By.id(<span class="hljs-string">"searchButton"</span>)).click();

String poNumber = driver.findElement(By.xpath(<span class="hljs-string">"//table//td[contains(text(), 'PO123456')]"</span>)).getText();
assertEquals(<span class="hljs-string">"PO123456"</span>, poNumber);
</code></pre>
<p>This code searches for the PO number and confirms that it appears in the report or dashboard.</p>
<p><strong>Optional: Take a screenshot if the test fails</strong></p>
<p>Capturing a screenshot can help with debugging issues:</p>
<pre><code class="lang-java">Copy codeimport org.openqa.selenium.OutputType;
<span class="hljs-keyword">import</span> org.openqa.selenium.TakesScreenshot;
<span class="hljs-keyword">import</span> java.io.File;
<span class="hljs-keyword">import</span> org.apache.commons.io.FileUtils;

File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, <span class="hljs-keyword">new</span> File(<span class="hljs-string">"failed_test_screenshot.png"</span>));
</code></pre>
<p>You can place this in a try-catch block or after any failure point to log visual evidence.</p>
<p>By following these steps, you’ll ensure that your PO creation process works correctly and is thoroughly validated in your test automation script.</p>
<h3 id="heading-6-add-screenshots-and-reports">6. Add Screenshots and Reports</h3>
<p>Adding screenshots and generating reports is essential for tracking test results and troubleshooting any issues. Let’s walk through how you can implement these actions in your automation script.</p>
<h4 id="heading-1-take-screenshots-at-each-step"><strong>1. Take Screenshots at Each Step</strong></h4>
<p>It’s important to capture screenshots at every critical step, especially when a test fails. This helps in identifying issues like incorrect approvals or errors in the process.</p>
<p>For instance, you can take a screenshot when the PO is not approved or if an error occurs during the test:</p>
<pre><code class="lang-java">Copy codeimport org.openqa.selenium.OutputType;
<span class="hljs-keyword">import</span> org.openqa.selenium.TakesScreenshot;
<span class="hljs-keyword">import</span> org.apache.commons.io.FileUtils;
<span class="hljs-keyword">import</span> java.io.File;

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">captureScreenshot</span><span class="hljs-params">(String stepName)</span> </span>{
    <span class="hljs-keyword">try</span> {
        <span class="hljs-comment">// Capture the screenshot</span>
        File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        <span class="hljs-comment">// Save the screenshot with a custom name based on the step</span>
        FileUtils.copyFile(screenshot, <span class="hljs-keyword">new</span> File(stepName + <span class="hljs-string">"_screenshot.png"</span>));
    } <span class="hljs-keyword">catch</span> (Exception e) {
        e.printStackTrace();
    }
}
</code></pre>
<p>You can call this method at critical points, such as after the approval check fails or when a PO is not found in the report.</p>
<p>Example of calling the method:</p>
<pre><code class="lang-java">Copy codeString status = driver.findElement(By.id(<span class="hljs-string">"statusLabel"</span>)).getText();
<span class="hljs-keyword">if</span> (!status.equals(<span class="hljs-string">"Approved"</span>)) {
    captureScreenshot(<span class="hljs-string">"PO_Approval_Failed"</span>);
}
</code></pre>
<h4 id="heading-2-generate-reports-with-passfail-results"><strong>2. Generate Reports with Pass/Fail Results</strong></h4>
<p>Generating a report with details like pass/fail results, time of execution, and error logs is crucial for understanding the outcome of your test. You can use reporting tools such as Allure or ExtentReports.</p>
<h5 id="heading-example-using-extentreports"><strong>Example using ExtentReports:</strong></h5>
<pre><code class="lang-java">Copy codeimport com.relevantcodes.extentreports.ExtentReports;
<span class="hljs-keyword">import</span> com.relevantcodes.extentreports.ExtentTest;

<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TestReport</span> </span>{
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> ExtentReports extent;
    <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> ExtentTest logger;

    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setupReport</span><span class="hljs-params">()</span> </span>{
        extent = <span class="hljs-keyword">new</span> ExtentReports(<span class="hljs-string">"TestReport.html"</span>, <span class="hljs-keyword">true</span>);
        logger = extent.startTest(<span class="hljs-string">"PO Approval Test"</span>);
    }

    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">logResult</span><span class="hljs-params">(String result, String message)</span> </span>{
        <span class="hljs-keyword">if</span> (result.equals(<span class="hljs-string">"pass"</span>)) {
            logger.log(com.relevantcodes.extentreports.LogStatus.PASS, message);
        } <span class="hljs-keyword">else</span> {
            logger.log(com.relevantcodes.extentreports.LogStatus.FAIL, message);
        }
    }

    <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">endReport</span><span class="hljs-params">()</span> </span>{
        extent.endTest(logger);
        extent.flush();
    }
}
</code></pre>
<p>You can log the results of each validation, like this:</p>
<pre><code class="lang-java">Copy codeTestReport.setupReport();

<span class="hljs-comment">// After PO status validation</span>
String status = driver.findElement(By.id(<span class="hljs-string">"statusLabel"</span>)).getText();
<span class="hljs-keyword">if</span> (status.equals(<span class="hljs-string">"Approved"</span>)) {
    TestReport.logResult(<span class="hljs-string">"pass"</span>, <span class="hljs-string">"PO approved successfully"</span>);
} <span class="hljs-keyword">else</span> {
    TestReport.logResult(<span class="hljs-string">"fail"</span>, <span class="hljs-string">"PO approval failed"</span>);
    captureScreenshot(<span class="hljs-string">"PO_Approval_Failed"</span>);
}

<span class="hljs-comment">// After checking approver</span>
String approver = driver.findElement(By.id(<span class="hljs-string">"approverName"</span>)).getText();
<span class="hljs-keyword">if</span> (approver.equals(<span class="hljs-string">"John Manager"</span>)) {
    TestReport.logResult(<span class="hljs-string">"pass"</span>, <span class="hljs-string">"Correct approver verified"</span>);
} <span class="hljs-keyword">else</span> {
    TestReport.logResult(<span class="hljs-string">"fail"</span>, <span class="hljs-string">"Incorrect approver"</span>);
    captureScreenshot(<span class="hljs-string">"Approver_Verification_Failed"</span>);
}

TestReport.endReport();
</code></pre>
<p>This will generate a report with pass/fail results and timestamps for each test step.</p>
<h4 id="heading-3-generate-error-logs"><strong>3. Generate Error Logs</strong></h4>
<p>You can capture error logs and include them in your report. For example, when an assertion fails, you might want to log the error message and save it to a log file.</p>
<p>Here’s how you can generate an error log in Java:</p>
<pre><code class="lang-java">Copy codeimport java.io.FileWriter;
<span class="hljs-keyword">import</span> java.io.IOException;

<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">logError</span><span class="hljs-params">(String message)</span> </span>{
    <span class="hljs-keyword">try</span> (FileWriter log = <span class="hljs-keyword">new</span> FileWriter(<span class="hljs-string">"error_log.txt"</span>, <span class="hljs-keyword">true</span>)) {
        log.write(message + <span class="hljs-string">"\n"</span>);
    } <span class="hljs-keyword">catch</span> (IOException e) {
        e.printStackTrace();
    }
}
</code></pre>
<p>You can call this method whenever a test fails:</p>
<pre><code class="lang-java">Copy codetry {
    String status = driver.findElement(By.id(<span class="hljs-string">"statusLabel"</span>)).getText();
    assertEquals(<span class="hljs-string">"Approved"</span>, status);
} <span class="hljs-keyword">catch</span> (AssertionError e) {
    logError(<span class="hljs-string">"PO approval failed: "</span> + e.getMessage());
    captureScreenshot(<span class="hljs-string">"PO_Approval_Failed"</span>);
    <span class="hljs-keyword">throw</span> e;  <span class="hljs-comment">// Re-throw to let the test fail</span>
}
</code></pre>
<p>By following these steps, you’ll be able to:</p>
<ol>
<li><p><strong>Capture screenshots</strong> at key points, particularly when the test fails.</p>
</li>
<li><p><strong>Generate reports</strong> that include pass/fail results, timestamps, and detailed messages.</p>
</li>
<li><p><strong>Log errors</strong> to help identify issues when they occur.</p>
</li>
</ol>
<p>This process will greatly improve the clarity and traceability of your test execution.</p>
<h3 id="heading-7-add-to-cicd-pipeline">7. Add to CI/CD Pipeline</h3>
<p>Finally, plug your tests into the release process. You can use tools like Jenkins or GitHub Actions for this.</p>
<h4 id="heading-1-set-up-jenkins">1. Set Up Jenkins:</h4>
<p>First, you’ll want to install Jenkins on a server or use a cloud-based Jenkins service.</p>
<p>Then, install the necessary plugins:</p>
<ul>
<li><p><strong>Git Plugin</strong> (to pull code from a Git repository)</p>
</li>
<li><p><strong>Maven Plugin</strong> (to run Java-based projects)</p>
</li>
<li><p><strong>JUnit Plugin</strong> (to report results)</p>
</li>
</ul>
<h4 id="heading-2-create-a-new-jenkins-job">2. Create a New Jenkins Job:</h4>
<p>Go to Jenkins Dashboard and click on "New Item". Then select "Freestyle Project" and name it (for example, "PO Automation Test"). Click OK.</p>
<h4 id="heading-3-configure-source-code-management-git">3. Configure Source Code Management (Git):</h4>
<p>In the "Source Code Management" section, choose Git. Enter the URL of your Git repository where your Selenium test scripts are stored.</p>
<p>If the repository is private, provide authentication details.</p>
<p>Example:</p>
<pre><code class="lang-bash">Copy codeGit Repository URL: https://github.com/your-repo/po-automation.git
Credentials: Jenkins-Git-Credentials
Branches to Build: */main
</code></pre>
<h4 id="heading-4-add-build-steps">4. Add Build Steps:</h4>
<p>Under "Build", click on "Add Build Step" and choose "Invoke top-level Maven targets" (assuming you are using Maven as the build tool).</p>
<p>Then set up the Maven goals to compile and run tests.</p>
<p>Example Maven command:</p>
<pre><code class="lang-bash">Copy codeclean <span class="hljs-built_in">test</span>
</code></pre>
<p>This will clean the previous build and run your tests. Make sure JUnit or TestNG is set up in your project to handle the tests.</p>
<h4 id="heading-5-run-tests-in-selenium">5. Run Tests in Selenium:</h4>
<p>Make sure your <strong>test scripts</strong> are included in the project and that Maven knows how to run them. The following Maven <code>pom.xml</code> configuration will ensure that Selenium tests can be executed through the JUnit test framework:</p>
<p>Example <code>pom.xml</code> dependencies:</p>
<pre><code class="lang-xml">Copy code<span class="hljs-tag">&lt;<span class="hljs-name">dependencies</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.seleniumhq.selenium<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>selenium-java<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>3.141.59<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.junit.jupiter<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>junit-jupiter-api<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.7.0<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">scope</span>&gt;</span>test<span class="hljs-tag">&lt;/<span class="hljs-name">scope</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>org.junit.jupiter<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>junit-jupiter-engine<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>5.7.0<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">scope</span>&gt;</span>test<span class="hljs-tag">&lt;/<span class="hljs-name">scope</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">dependencies</span>&gt;</span>
</code></pre>
<p>Ensure your test class is set up for JUnit execution. For example:</p>
<pre><code class="lang-java">Copy code<span class="hljs-meta">@Test</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">testPOApproval</span><span class="hljs-params">()</span> </span>{
    <span class="hljs-comment">// Selenium test code here</span>
}
</code></pre>
<h4 id="heading-6-set-up-post-build-actions">6. Set Up Post-Build Actions:</h4>
<p>Under "Post-build Actions", you can choose to:</p>
<ul>
<li><p>Publish JUnit test results to Jenkins for reporting.</p>
</li>
<li><p>Send notifications (for example to Slack or Email) based on test results.</p>
</li>
<li><p>Archive test reports as artifacts for later access.</p>
</li>
</ul>
<p>Example configuration for JUnit test results:</p>
<pre><code class="lang-bash">Copy codeTest report XMLs: target/<span class="hljs-built_in">test</span>-*.xml
</code></pre>
<h4 id="heading-7-triggering-the-job">7. Triggering the Job:</h4>
<p>To make sure your tests run automatically whenever you push changes to the Git repository, you need to set up a trigger.</p>
<p>In the "Build Triggers" section, you can select:</p>
<ul>
<li><p>GitHub hook trigger for GITScm polling (if using GitHub)</p>
</li>
<li><p>Poll SCM (to periodically check for changes in the repository)</p>
</li>
</ul>
<h4 id="heading-8-save-and-run-the-job">8. Save and Run the Job:</h4>
<p>Once the job is configured, click "Save". You can now either run the job manually by clicking "Build Now" or let Jenkins automatically trigger the tests based on your configuration (for example, after every commit).</p>
<h4 id="heading-9-viewing-test-results">9. Viewing Test Results:</h4>
<p>After the tests run, Jenkins will provide a report on the build’s status. You’ll see:</p>
<ul>
<li><p>Whether tests passed or failed.</p>
</li>
<li><p>Any errors captured in the JUnit report.</p>
</li>
</ul>
<p>If there are failures, you can review logs and screenshots (if configured). You can also view detailed logs and reports for troubleshooting.</p>
<h2 id="heading-best-practices-for-oracle-test-automation">Best Practices for Oracle Test Automation</h2>
<p>Test automation for Oracle ERP is key to ensuring smooth operations. But, like any tool, it’s important to follow best practices to make it effective, efficient, and scalable. Here are some practices that will help you succeed:</p>
<h3 id="heading-1-choose-the-right-test-cases">1. Choose the Right Test Cases</h3>
<p>Not all tests should be automated. Focus on those that bring the most value.</p>
<p><strong>Best Practice:</strong></p>
<ul>
<li><p><strong>Automate repetitive tests:</strong> These tests are done often, like verifying login or creating users. Automating them saves time in the long run.<br>  <strong>Example:</strong> Automate login tests to check user roles and access permissions across Oracle ERP modules. This is a repetitive and critical task.</p>
</li>
<li><p><strong>Focus on high-risk tests:</strong> Automate tests for areas that could break and cause major issues, like financial reporting or inventory management.<br>  <strong>Example:</strong> Automate tests that check if purchase orders trigger supplier notifications and update inventory. Errors in this area could have a big business impact.</p>
</li>
<li><p><strong>Automate time-consuming tasks:</strong> Automate tests that require a lot of manual effort. This frees up testers for more complex tasks.<br>  <strong>Example:</strong> Automate regression tests after every Oracle ERP update to save time and ensure no core functions break.</p>
</li>
</ul>
<h3 id="heading-2-define-a-strong-strategy">2. Define a Strong Strategy</h3>
<p>Automation isn't a "set it and forget it" solution. A solid strategy ensures your automation aligns with project goals and delivers lasting value.</p>
<p><strong>Best Practice:</strong></p>
<ul>
<li><p><strong>Careful planning:</strong> Before writing scripts, understand the requirements and goals of automation. Know which Oracle ERP modules need testing, like finance or HR.<br>  <strong>Example:</strong> For financial module automation, focus on tests for tax calculations, balance sheets, and accounts payable. Align your efforts with high-priority workflows.</p>
</li>
<li><p><strong>Assess feasibility and ROI:</strong> Some parts of Oracle ERP may not be suited for automation. Evaluate if automating will save time and effort compared to manual testing.<br>  <strong>Example:</strong> If a purchase order approval workflow often changes, it might not be worth automating. But tests for data validation between modules would likely give better ROI.</p>
</li>
<li><p><strong>Align with project goals:</strong> Your automation strategy should align with your business objectives. Consider release cycles, ERP size, and available resources.<br>  <strong>Example:</strong> For a global Oracle ERP rollout, automate tests for multi-language support, performance, and cross-browser compatibility to ensure smooth performance everywhere.</p>
</li>
</ul>
<h3 id="heading-3-select-the-right-tool">3. Select the Right Tool</h3>
<p>Choosing the right tool for Oracle ERP automation is critical. The wrong tool can slow down productivity and add complexity.</p>
<p><strong>Best Practice:</strong></p>
<ul>
<li><p><strong>Evaluate based on needs:</strong> Don't pick a tool just because it's popular. Assess if it supports your Oracle ERP setup and integrates with your CI/CD pipeline.<br>  <strong>Example:</strong> If you're using Oracle ERP Cloud, Tricentis Tosca may be a good fit because it supports Oracle out-of-the-box. Oracle Application Testing Suite (OATS) is another tool designed specifically for Oracle applications.</p>
</li>
<li><p><strong>Consider long-term viability:</strong> Choose a tool that can scale with your project as it grows. This ensures long-term success.<br>  <strong>Example:</strong> Selenium is a popular choice for web-based applications like Oracle ERP. It supports many languages and integrates well with other tools.</p>
</li>
<li><p><strong>Look for good reporting and debugging:</strong> A tool with solid reporting features helps identify issues quickly and streamlines communication between testers and developers.<br>  <strong>Example:</strong> Katalon Studio offers great reporting features and detailed error logs, which is helpful when running large test suites.</p>
</li>
</ul>
<h3 id="heading-4-maintain-test-scripts">4. Maintain Test Scripts</h3>
<p>Like the ERP system, your test scripts need regular updates. Oracle ERP frequently changes, so your automation scripts must keep up.</p>
<p><strong>Best Practice:</strong></p>
<ul>
<li><p><strong>Update regularly:</strong> Keep test scripts up to date with Oracle ERP changes, especially after releases or workflow updates.<br>  <strong>Example:</strong> If Oracle ERP updates the procurement module's UI, update your automated tests to reflect the new field names or button placements.</p>
</li>
<li><p><strong>Modularize test scripts:</strong> Break your scripts into smaller, reusable components. This makes maintenance easier and faster.<br>  <strong>Example:</strong> Instead of one long script, create smaller ones like "Login Verification," "Create PO," and "PO Approval." That way, only the "Create PO" script needs to be updated if there’s a change.</p>
</li>
</ul>
<h3 id="heading-5-prioritize-parallel-testing">5. Prioritize Parallel Testing</h3>
<p>Oracle ERP is large and complex. Running tests in parallel can help speed up your testing process.</p>
<p><strong>Best Practice:</strong></p>
<ul>
<li><strong>Use parallel testing for efficiency:</strong> Many tools, like Selenium Grid and Katalon Studio, let you run tests in parallel across multiple browsers or environments.<br>  <strong>Example:</strong> Run tests on different Oracle ERP environments at the same time. This helps catch issues specific to certain configurations quickly.</li>
</ul>
<h2 id="heading-role-of-ai-driven-tools-in-oracle-erp-automation">Role of AI-driven Tools in Oracle ERP Automation</h2>
<p>AI-driven testing tools can make testing easier by handling system changes. They can automatically adapt to modifications in the system under test, without the need for manual intervention in the test scripts. They also reduce the need to fix test scripts.</p>
<p>By leveraging machine learning, these tools can detect patterns, identify errors, and continuously improve the test cases, ensuring they remain relevant and effective. Some AI-driven tools also utilize self-healing scripts that automatically adjust to changes in the system, such as UI updates or code modifications. This eliminates the need for manual updates to the scripts and allows tests to continue running smoothly.</p>
<h3 id="heading-example-using-panaya-smart-testing-for-oracle-erp-automation">Example: Using Panaya Smart Testing for Oracle ERP Automation</h3>
<p>Panaya Smart Testing is an AI-driven tool. It’s designed to optimize the testing process for Oracle ERP systems. The tool addresses the complexities of Oracle environments, which ensures that your Oracle applications run smoothly with minimal manual effort.</p>
<h3 id="heading-what-does-panaya-smart-testing-do">What Does Panaya Smart Testing Do?</h3>
<p>You can use Panaya Smart Testing to automate testing your Oracle ERP applications. It ensures that updates, upgrades, and configurations don’t break existing functionality.</p>
<p>The tool uses AI and machine learning algorithms to analyze your ERP system. It generates automated test cases based on how the application behaves. It also performs impact analysis to detect the potential effects of changes before they are applied.</p>
<p>In Oracle ERP environments, changes happen often. Panaya Smart Testing helps reduce the time you spend on manual regression testing. It automates testing for both functional and non-functional requirements. These include system performance and UI behavior.</p>
<h3 id="heading-results-of-panaya-smart-testing">Results of Panaya Smart Testing</h3>
<h4 id="heading-faster-testing-and-feedback">Faster Testing and Feedback</h4>
<p>Panaya’s AI-driven engine generates test cases and runs tests. This speeds up the testing cycle. You get faster feedback on system changes.</p>
<h4 id="heading-reduced-risk-of-errors">Reduced Risk of Errors</h4>
<p>Panaya detects issues caused by changes or upgrades. It helps prevent defective updates from being deployed. The system will work as expected after the changes.</p>
<h4 id="heading-continuous-test-coverage">Continuous Test Coverage</h4>
<p>Panaya maintains continuous test coverage throughout the development cycle. It tests all parts of the Oracle ERP system. This prevents regressions and new bugs from appearing.</p>
<h4 id="heading-reduced-manual-effort">Reduced Manual Effort</h4>
<p>Panaya reduces the need for manual testing. It automatically runs tests, analyzes impacts, and suggests improvements. This helps QA teams focus on more important tasks.</p>
<h3 id="heading-how-to-use-panaya-smart-testing-for-oracle-erp-automation">How to Use Panaya Smart Testing for Oracle ERP Automation</h3>
<h4 id="heading-set-up-your-oracle-erp-system-on-panaya">Set Up Your Oracle ERP System on Panaya</h4>
<p>Start by linking your Oracle ERP environment to Panaya. The tool integrates seamlessly with Oracle E-Business Suite, Oracle Cloud, and other Oracle applications. Setup is quick and testing capabilities are immediate.</p>
<h4 id="heading-perform-impact-analysis">Perform Impact Analysis</h4>
<p>Panaya’s impact analysis engine detects changes to your Oracle ERP system. It identifies affected areas and suggests tests to run.</p>
<h4 id="heading-how-to-set-up-panaya-for-test-automation">How to Set Up Panaya for Test Automation</h4>
<p>First, you need to create your test scripts in Panaya. You typically do this by recording or scripting your test cases within the Panaya Test Automation platform. Let's break it down:</p>
<p><strong>1. Record Test Cases in Panaya:</strong></p>
<ul>
<li><p>Log into Panaya and navigate to the Test Management section.</p>
</li>
<li><p>Create a new test case or use an existing one.</p>
</li>
<li><p>Use the recording feature to simulate user interactions with your application (for example, logging in, clicking buttons, navigating between pages).</p>
</li>
<li><p>Save and publish your tests.</p>
</li>
</ul>
<p><strong>Example Test Case:</strong> Let’s say you are automating a login test for an enterprise app. The Panaya test will look like this:</p>
<ul>
<li><p><strong>Step 1</strong>: Open the application URL.</p>
</li>
<li><p><strong>Step 2</strong>: Enter the username and password.</p>
</li>
<li><p><strong>Step 3</strong>: Click the login button.</p>
</li>
<li><p><strong>Step 4</strong>: Verify that the homepage is displayed.</p>
</li>
</ul>
<h4 id="heading-2-exporting-panaya-test-scripts">2. Exporting Panaya Test Scripts</h4>
<p>Once you have your test cases ready in Panaya, you can export them to integrate with your CI/CD pipeline. This step usually involves generating test scripts in a format compatible with your testing tools (for example, Java, Python, or Selenium scripts).</p>
<p><strong>Export Steps:</strong></p>
<ol>
<li><p>From the Panaya interface, choose the test case you want to export.</p>
</li>
<li><p>Panaya can export the test cases in different formats, but for this guide, we will focus on exporting as JUnit or TestNG compatible scripts.</p>
</li>
</ol>
<h4 id="heading-3-how-to-integrate-panaya-with-jenkins">3. How to Integrate Panaya with Jenkins</h4>
<p>Now that we have the test scripts, let's integrate them with Jenkins to run them automatically.</p>
<h5 id="heading-step-1-set-up-a-jenkins-job"><strong>Step 1: Set Up a Jenkins Job</strong></h5>
<ol>
<li><p><strong>Create a Jenkins pipeline job:</strong></p>
<ul>
<li><p>In Jenkins, go to New Item, select Pipeline, and name it something like "Panaya_Test_Job".</p>
</li>
<li><p>Click OK.</p>
</li>
</ul>
</li>
<li><p><strong>Set Up Git Repository</strong> (for the test scripts):</p>
<ul>
<li>Under Source Code Management, choose Git and provide the URL to your repository where the exported Panaya test scripts are stored.</li>
</ul>
</li>
<li><p><strong>Configure Pipeline:</strong></p>
<ul>
<li>Define the pipeline script under the Pipeline section. Here's an example script that pulls the test scripts and runs them:</li>
</ul>
</li>
</ol>
<pre><code class="lang-plaintext">groovyCopy codepipeline {
    agent any
    stages {
        stage('Checkout Code') {
            steps {
                git 'https://github.com/your-repo/panaya-tests.git'
            }
        }
        stage('Run Tests') {
            steps {
                script {
                    // Run the Panaya tests using Maven or Gradle
                    sh 'mvn clean test'
                }
            }
        }
        stage('Publish Test Results') {
            steps {
                junit '**/target/test-*.xml'
            }
        }
    }
}
</code></pre>
<ul>
<li><p>This pipeline:</p>
<ul>
<li><p>Checks out your repository (where Panaya test scripts are stored).</p>
</li>
<li><p>Runs the tests using Maven (assuming your test scripts are in Java).</p>
</li>
<li><p>Publishes test results in JUnit format so you can see the results in Jenkins.</p>
</li>
</ul>
</li>
</ul>
<h5 id="heading-step-2-trigger-jenkins-job-automatically"><strong>Step 2: Trigger Jenkins Job Automatically</strong></h5>
<p>To trigger the Jenkins job on each commit or pull request, under Build Triggers, enable GitHub hook trigger for GITScm polling (if using GitHub).</p>
<h5 id="heading-step-3-jenkins-test-execution"><strong>Step 3: Jenkins Test Execution</strong></h5>
<p>After the job is triggered (via Git push, pull request, or manual), Jenkins will pull the latest code and run the tests. The test results will appear in the Test Results section in Jenkins.</p>
<h4 id="heading-4-how-to-integrate-panaya-with-github-actions">4. How to Integrate Panaya with GitHub Actions</h4>
<p>If you're using <strong>GitHub Actions</strong> instead of Jenkins, here's how to automate the process:</p>
<h5 id="heading-step-1-set-up-github-actions-workflow"><strong>Step 1: Set Up GitHub Actions Workflow</strong></h5>
<ol>
<li><p><strong>Create a Workflow File:</strong></p>
<ul>
<li><p>In your GitHub repo, create a <code>.github/workflows</code> folder.</p>
</li>
<li><p>Add a YAML file (for example, <code>ci.yml</code>).</p>
</li>
</ul>
</li>
</ol>
<pre><code class="lang-yaml"><span class="hljs-attr">Copy codename:</span> <span class="hljs-string">Panaya</span> <span class="hljs-string">Test</span> <span class="hljs-string">Automation</span>

<span class="hljs-attr">on:</span>
  <span class="hljs-attr">push:</span>
    <span class="hljs-attr">branches:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">main</span>
  <span class="hljs-attr">pull_request:</span>
    <span class="hljs-attr">branches:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">main</span>

<span class="hljs-attr">jobs:</span>
  <span class="hljs-attr">test:</span>
    <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>

    <span class="hljs-attr">steps:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">code</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v2</span>

    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Set</span> <span class="hljs-string">up</span> <span class="hljs-string">Java</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/setup-java@v2</span>
      <span class="hljs-attr">with:</span>
        <span class="hljs-attr">java-version:</span> <span class="hljs-string">'11'</span>

    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">dependencies</span>
      <span class="hljs-attr">run:</span> <span class="hljs-string">mvn</span> <span class="hljs-string">install</span>

    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Run</span> <span class="hljs-string">Panaya</span> <span class="hljs-string">Tests</span>
      <span class="hljs-attr">run:</span> <span class="hljs-string">mvn</span> <span class="hljs-string">clean</span> <span class="hljs-string">test</span>

    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Upload</span> <span class="hljs-string">test</span> <span class="hljs-string">results</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/upload-artifact@v2</span>
      <span class="hljs-attr">with:</span>
        <span class="hljs-attr">name:</span> <span class="hljs-string">test-results</span>
        <span class="hljs-attr">path:</span> <span class="hljs-string">target/test-*.xml</span>
</code></pre>
<h5 id="heading-step-2-run-and-view-results"><strong>Step 2: Run and View Results</strong></h5>
<p>Once the code is pushed to the <code>main</code> branch or a pull request is created, GitHub Actions will trigger the workflow. The tests will run automatically.</p>
<p>Then the test results will be uploaded as artifacts for easy viewing.</p>
<h4 id="heading-5-how-to-review-test-results">5. How to Review Test Results</h4>
<p>After tests are executed in both Jenkins and GitHub Actions:</p>
<ul>
<li><p><strong>Jenkins</strong>: Go to the Jenkins job's Build History. You can view the test results and logs. If you configured the JUnit plugin, it will show a detailed breakdown of passed and failed tests.</p>
</li>
<li><p><strong>GitHub Actions</strong>: You can find test results in the Actions tab of your GitHub repository. The results will be available under the workflow run.</p>
</li>
</ul>
<h3 id="heading-key-benefits-of-using-panaya-smart-testing">Key Benefits of Using Panaya Smart Testing</h3>
<ul>
<li><p><strong>AI-powered automation:</strong> Panaya automates testing with AI. This leads to quick execution and accurate results.</p>
</li>
<li><p><strong>Adaptability to Oracle ERP:</strong> Panaya is specifically designed for Oracle ERP systems, such as E-Business Suite and Oracle Cloud.</p>
</li>
<li><p><strong>Self-healing test scripts:</strong> Panaya adjusts test scripts dynamically. This ensures smooth execution even after system updates.</p>
</li>
<li><p><strong>Efficient impact analysis:</strong> Panaya predicts how changes will affect the system. This reduces the risk of regressions.</p>
</li>
</ul>
<p>By using Panaya Smart Testing, you can automate testing for Oracle ERP. It helps reduce manual testing, speeds up feedback on system changes, and maintains high-quality standards throughout the process. This tool allows businesses to stay agile while managing their Oracle ERP systems.</p>
<h2 id="heading-automating-testing-in-cicd-pipelines">Automating Testing in CI/CD Pipelines</h2>
<p>Automating testing in your CI/CD pipelines speeds up the release process. It helps maintain high-quality Oracle ERP applications. Automated tests run at each stage of the pipeline. This ensures updates or changes to the ERP system are tested without slowing development.</p>
<p>Continuous testing is essential. It catches errors early, before they reach production. By running automated tests at each stage – whether it’s build, deploy, or merge – issues are found quickly and your team can resolve them faster. This reduces downtime and keeps the ERP system ready for deployment.</p>
<p>For Oracle ERP, automated tests check updates, customizations, and integrations. These tests cover many scenarios. Functional tests ensure features work as expected. Performance tests check the system’s behavior under different loads. This approach reduces the risk of failures and allows faster releases.</p>
<p>Automated testing integrates smoothly with DevOps tools managing Oracle ERP modules. These tools coordinate testing across environments. Each module is tested both independently and as part of the system. Whether working with Oracle E-Business Suite or Oracle Cloud, CI/CD tools ensure consistency and continuous feedback.</p>
<h3 id="heading-example-how-automated-testing-works-in-cicd-for-oracle-erp">Example: How Automated Testing Works in CI/CD for Oracle ERP</h3>
<p>Let’s look at an example where your team works on a custom update for Oracle E-Business Suite. Here’s how the process might go:</p>
<h4 id="heading-code-commit-and-build">Code Commit and Build:</h4>
<p>Let’s say you commit new code or update to the version control system (for example, Git). This triggers the CI pipeline.</p>
<p>The CI tool (like Jenkins) automatically runs unit tests. These tests check if the code changes break any existing functionality.</p>
<p><strong>Code Example:</strong></p>
<p>You then commit and push changes to Git:</p>
<pre><code class="lang-bash">Copy codegit add .
git commit -m <span class="hljs-string">"Implement new feature in Oracle ERP"</span>
git push origin feature-branch
</code></pre>
<p><strong>CI Tool:</strong> Jenkins, GitLab CI, CircleCI, and so on</p>
<ul>
<li>Jenkins or another CI tool detects the new code commit and automatically triggers the build process.</li>
</ul>
<p><strong>Action:</strong></p>
<ul>
<li>The build process starts automatically. Unit tests are executed to ensure no existing functionality breaks due to the new code changes.</li>
</ul>
<p><strong>Code Example:</strong></p>
<p>In Jenkins, you might configure the <code>Jenkinsfile</code> for running unit tests after the build:</p>
<pre><code class="lang-plaintext">groovyCopy codepipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        sh 'mvn clean install'  // Example for Maven-based project
      }
    }
    stage('Unit Tests') {
      steps {
        sh 'mvn test'  // Run unit tests to check for broken functionality
      }
    }
  }
}
</code></pre>
<h4 id="heading-continuous-integration-testing">Continuous Integration Testing:</h4>
<p>After the build, automated tests run in a test environment. These tests cover different scenarios:</p>
<ul>
<li><p><strong>Functional tests:</strong> Does the new feature in the ERP module work as expected?</p>
</li>
<li><p><strong>Regression tests:</strong> Does the update break any existing features?</p>
</li>
<li><p><strong>Integration tests:</strong> Does the update work smoothly with other Oracle ERP modules?</p>
</li>
</ul>
<p><strong>Code Example:</strong></p>
<p>In Jenkins, use the following commands to execute different test suites:</p>
<pre><code class="lang-bash">Copy code<span class="hljs-comment"># Functional Test Example</span>
./runFunctionalTests.sh --module ERP

<span class="hljs-comment"># Regression Test Example</span>
./runRegressionTests.sh --module Core

<span class="hljs-comment"># Integration Test Example</span>
./runIntegrationTests.sh --modules Sales, Finance
</code></pre>
<p>In your testing script (<a target="_blank" href="http://runFunctionalTests.sh"><code>runFunctionalTests.sh</code></a>), you might have something like this:</p>
<pre><code class="lang-bash">Copy code<span class="hljs-comment"># runFunctionalTests.sh</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Running functional tests for ERP module..."</span>
mvn <span class="hljs-built_in">test</span> -Dtest=FunctionalTests
</code></pre>
<h4 id="heading-deployment-amp-end-to-end-testing">Deployment &amp; End-to-End Testing:</h4>
<p>Once the tests pass, the update is deployed to a staging environment. Here, end-to-end automated tests simulate real user interactions with the Oracle ERP system.</p>
<p>These tests ensure the system works correctly from a user’s perspective. They check workflows, data accuracy, and UI functionality.</p>
<p><strong>Code Example:</strong></p>
<p>The deployment script can deploy the build to the staging environment and then run end-to-end tests:</p>
<pre><code class="lang-bash">Copy code<span class="hljs-comment"># Deploy the latest build to staging</span>
./deployToStaging.sh

<span class="hljs-comment"># Run End-to-End Tests</span>
./runEndToEndTests.sh --env staging
</code></pre>
<p>The <a target="_blank" href="http://runEndToEndTests.sh"><code>runEndToEndTests.sh</code></a> script could look like:</p>
<pre><code class="lang-bash">Copy code<span class="hljs-comment"># runEndToEndTests.sh</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Running end-to-end tests..."</span>
<span class="hljs-comment"># Example command to run a tool like Selenium</span>
java -jar selenium-tests.jar --env staging
</code></pre>
<h4 id="heading-feedback-amp-rollback">Feedback &amp; Rollback:</h4>
<p>If tests fail, the CI/CD pipeline sends feedback to the development team. This lets them fix issues before production. For critical failures, the pipeline can trigger an automatic rollback. This ensures the system stays stable and functional.</p>
<p>This feedback loop helps teams fix issues quickly, before they affect end users. With automated testing in the CI/CD pipeline, your Oracle ERP system stays up-to-date, efficient, and reliable.</p>
<p><strong>Code Example:</strong></p>
<p>If tests fail, the pipeline sends feedback:</p>
<pre><code class="lang-bash">Copy code<span class="hljs-comment"># Sample error message from failed tests</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Test failed: Functional test on Module A"</span>
</code></pre>
<p>Here’s the rollback script:</p>
<pre><code class="lang-bash">Copy code<span class="hljs-comment"># rollback.sh</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"Rolling back to the last stable version..."</span>
git checkout last-stable-commit
git push origin master
</code></pre>
<h4 id="heading-monitoring-amp-feedback-loop">Monitoring &amp; Feedback Loop</h4>
<p>Continuous monitoring ensures that any further changes or issues are captured early. If any issues are found, feedback is sent back to the developers for quick resolution.</p>
<p>If the pipeline detects any failure at any stage (build, test, deploy), it notifies the team instantly via Slack, email, or other communication tools.</p>
<p><strong>Code Example:</strong></p>
<p>Sending feedback to developers via Slack:</p>
<pre><code class="lang-bash">Copy code<span class="hljs-comment"># Notify Slack if a test fails</span>
curl -X POST -H <span class="hljs-string">'Content-type: application/json'</span> \
  --data <span class="hljs-string">'{"text":"Build Failed: Test failure detected!"}'</span> \
  https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
</code></pre>
<h2 id="heading-challenges-and-solutions">Challenges and Solutions</h2>
<p>Oracle ERP test automation can improve reliability, but there are some common challenges you might come across:</p>
<ol>
<li><p><strong>Frequent UI and Workflow Changes:</strong> Oracle ERP updates often change the UI and workflows. These changes can break automation scripts.</p>
<p> To address this issue, you can use AI-driven tools like Panaya Smart Testing or Tricentis Tosca. These tools have self-healing features that adjust to UI changes and help you minimize manual intervention. Also, you can use modular test scripts to focus on functionality, not just specific UI elements.</p>
</li>
<li><p><strong>Complex Business Processes:</strong> Oracle ERP involves complex workflows across multiple modules, making testing difficult.</p>
<p> To fix this, focus on critical workflows. Use tools like Selenium or Katalon Studio to create reusable scripts. You can also implement Business Process Testing (BPT) with Tricentis Tosca to model and automate business processes.</p>
</li>
<li><p><strong>Test Data Management:</strong> Inconsistent test data can lead to inaccurate results.</p>
<p> To deal with this, use test data management tools like Delphix or Informatica to generate consistent test data. Data virtualization can create a test environment that mimics real systems without affecting live data.</p>
</li>
<li><p><strong>Integration Issues:</strong> Oracle ERP integrates with third-party applications, which can cause compatibility issues.</p>
<p> To address this problem, you can automate integration tests with tools like Postman or SoapUI. If third-party systems aren’t available, try using service virtualization tools like Parasoft Virtualize.</p>
</li>
<li><p><strong>High Costs:</strong> Licensing, setup, and maintenance of test tools can be expensive.</p>
<p> Try using open-source tools like Selenium or Appium instead. Cloud-based platforms like LambdaTest or Sauce Labs offer flexible pricing. Managed services can also reduce costs while maintaining quality.</p>
</li>
<li><p><strong>Limited Customization:</strong> Oracle ERP Cloud may not fit all business needs, requiring customizations that need testing.</p>
<p> To handle this, you can use custom test scripts for unique customizations. Tools like Tricentis Tosca or Katalon Studio can automate testing for custom workflows. Also, try implementing regression tests to ensure customizations don’t break existing features.</p>
</li>
<li><p><strong>Steep Learning Curve:</strong> Oracle ERP systems can be complex, especially with updates or customizations.</p>
<p> Try providing user training and detailed documentation for your team. You can also use codeless test tools like TestComplete or Katalon Studio to help non-technical users automate tests.</p>
</li>
<li><p><strong>Regulatory Compliance:</strong> Global regulations require constant compliance testing.</p>
<p> You can use tools like Panaya Smart Testing for automated compliance checks. You can also integrate regulatory checks into the CI/CD pipeline to ensure compliance throughout development.</p>
</li>
<li><p><strong>Ongoing Maintenance:</strong> Regular updates to Oracle ERP and test scripts require constant maintenance.</p>
<p> To manage this, use AI-powered tools like Tricentis Tosca to automatically update test scripts. Centralized test management platforms like TestRail help track and manage test cases, making updates easier.</p>
</li>
</ol>
<h3 id="heading-future-of-oracle-erp-test-automation">Future of Oracle ERP Test Automation</h3>
<p>AI and automation are transforming Oracle ERP testing. AI-driven tools can now self-heal test scripts, reducing maintenance efforts when UI changes occur. Machine learning improves testing by finding patterns and spotting issues before they happen.</p>
<p>More companies are using cloud-based test automation. It allows testing from anywhere and makes scaling easier. Low-code and no-code tools help create tests without needing advanced technical skills. Business users can also take part in the process. Oracle ERP is constantly changing. Automation will help keep systems stable, lower costs, and speed up updates.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Oracle ERP test automation makes testing faster and improves accuracy. Manual testing takes too much time and effort when systems become more complex. Automation helps manage updates and ensures that different system parts work well together. It also reduces the workload for teams.</p>
<p>Having a good automation plan helps businesses keep systems stable. Regular testing finds errors early and keeps daily operations running without issues. Picking the right tools and using the best methods improve efficiency over time.</p>
<p>This Oracle ERP test automation playbook ebook hints that a clear testing approach helps Oracle ERP stay reliable and grow with business needs. Using the right strategies helps reduce problems and keeps systems working without disruptions.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Run a Postgres Docker Container on Oracle Cloud Infrastructure ]]>
                </title>
                <description>
                    <![CDATA[ In this article, I will show you how I quickly set up and ran a Docker container for free on Oracle Cloud Infrastructure.  In short, I used a VM in the Always Free Tier of OCI, and for a side project I set up a dockerised Postgres database. Let's ]]>
                </description>
                <link>https://www.freecodecamp.org/news/run-a-postgres-docker-container-on-oracle-cloud-infrastructure/</link>
                <guid isPermaLink="false">66bb459002bd925c2f723222</guid>
                
                    <category>
                        <![CDATA[ Cloud Computing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Docker ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Oracle ]]>
                    </category>
                
                    <category>
                        <![CDATA[ postgres ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Rohit Jacob Mathew ]]>
                </dc:creator>
                <pubDate>Thu, 28 Oct 2021 15:33:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/10/1QBgoEFNf.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>In this article, I will show you how I quickly set up and ran a Docker container for free on Oracle Cloud Infrastructure. </p>
<p>In short, I used a VM in the Always Free Tier of OCI, and for a side project I set up a dockerised Postgres database.</p>
<p>Let's get into the details a bit more now.</p>
<h2 id="heading-why-oracle-cloud-infrastructure">Why Oracle Cloud Infrastructure</h2>
<p>Oracle offers an Always Free cloud services option. You can see the details below:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1627392039154/de-tKbxcu.png" alt="Oracle Cloud Free Offering" width="2880" height="1146" loading="lazy"></p>
<p>Note that the workload of a container has to fit in the shape of this always free VM: VM.Standard.E2.1.Micro, 1/8 OCPU, 1 GB RAM and up to 480 Mbps network bandwidth (see the <a target="_blank" href="https://docs.cloud.oracle.com/en-us/iaas/Content/FreeTier/resourceref.htm">docs</a>). The boot volume offers just over 45GB of disk storage.</p>
<p>In order for the container to be accessible, the ports mapped on the VM to container also have to be configured in ingress rules in the security list. We need to install Docker ourselves in the VM – it's provisioned with just an Oracle Linux image.</p>
<p>Lets get started.</p>
<h2 id="heading-step-1-get-yourself-a-tenancy-and-create-a-virtual-machine">Step 1 – Get yourself a tenancy and create a virtual machine</h2>
<p>The first thing we need to do is create a VM. If you've got a cloud tenancy then you probably already know how to create an instance. If you're new to Oracle Cloud, then watch the below video and create an "always free" VM by signing up at <a target="_blank" href="https://cloud.oracle.com/free">https://cloud.oracle.com/free</a>:</p>
<div class="embed-wrapper">
        <iframe width="560" height="315" src="https://www.youtube.com/embed/Fiu9BiNocJ4" style="aspect-ratio: 16 / 9; width: 100%; height: auto;" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" loading="lazy"></iframe></div>
<p>Note: Most of the details like availability zone, image details, and networking options are already pre-filled by Oracle. But you can adjust them if you want something specific. I went ahead with the standard settings.</p>
<p>The VM will now be provisioned as is indicated here:</p>
<p><img src="https://miro.medium.com/max/1400/0*xGhUET08TkqbImko.png" alt="Example of provisioned VM from Oracle Developer Blog" width="600" height="400" loading="lazy"></p>
<p>After a little while, the VM will be up and running — and has a public IP address assigned to it:</p>
<p><img src="https://miro.medium.com/max/1400/0*h0JYNsMZtsitKN2t.png" alt="Example of running VM from Oracle Developer Blog" width="600" height="400" loading="lazy"></p>
<p>The situation at this point can be visualized as is shown in the below figure:</p>
<p><img src="https://miro.medium.com/max/1272/0*buppgWcJ5Wqgm3TK.png" alt="Visualization of the VM setup from Oracle Developer Blog" width="600" height="400" loading="lazy"></p>
<h2 id="heading-step-2-setup-the-ingress-rules-in-the-security-list-for-your-vm">Step 2 – Setup the Ingress Rules in the Security List for your VM</h2>
<p>This lets you open up the ports required for whatever container you want to run.</p>
<p>The VM is associated with a public subnet in a Virtual Cloud Network. The security list(s) for this subnet should be configured with ingress rules that make the required traffic possible to the port(s) that will be mapped to the container image.</p>
<p>Open the details page for the public subnet. Click on the security list (or create a new one):</p>
<p><img src="https://miro.medium.com/max/1400/0*fgaHDl-hyONzSeh9.png" alt="Subnet Screen from Oracle Developer Blog" width="600" height="400" loading="lazy"></p>
<p>We will run the Postgres container image. The port we map in the VM to the Postgres container is one we can choose ourselves. Let’s pick 5432 which is the default port for Postgres. </p>
<p>We need to configure an ingress rule as below:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1627395159097/36GiB4i22.png" alt="Ingress Rule Screenshot" width="1440" height="1212" loading="lazy"></p>
<p>Source CIDR is set to 0.0.0.0/0, and Source Port Range is left blank (that is, All) which means that this rule applies to any client.</p>
<h2 id="heading-step-3-ssh-into-the-vm-and-install-docker">Step 3 – SSH into the VM and install Docker</h2>
<p>At this point, we have a running VM instance with just a Linux Operating System but no Docker. Let’s SSH into the VM using this command:</p>
<pre><code>ssh opc@public-id-address -i private-key-file
</code></pre><p>Replace the public-id-address with the public IP assigned to the VM. Replace private-key-file with a reference to the file that contains the SSH private key.</p>
<p>Now to install Docker, execute these commands:</p>
<pre><code>sudo yum-config-manager --enable ol7_addons 
sudo yum install docker-engine -y 
sudo systemctl start docker 
sudo systemctl enable docker
</code></pre><p><img src="https://miro.medium.com/max/1400/0*tAhI8bQyLIaDPQ3T.png" alt="Docker installation screenshot from Oracle Developer Blog" width="600" height="400" loading="lazy"></p>
<p>To run Docker as a non-root user, read <a target="_blank" href="https://docs.docker.com/engine/security/rootless/">these instructions</a>.</p>
<h2 id="heading-how-to-run-the-docker-container-image">How to Run the Docker Container Image</h2>
<p>With Docker installed, we can now run the Postgres container image.</p>
<p>Run the container image with this command. Don't forget to add a different password for <code>POSTGRES_PASSWORD</code>:</p>
<pre><code>sudo docker run -d -p <span class="hljs-number">5432</span>:<span class="hljs-number">5432</span> --name postgres -e POSTGRES_PASSWORD=mysecretpassword postgres
</code></pre><p>Use <code>sudo docker ps</code> to verify if the container is running. The above command will start a PostgreSQL database and map ports using the following pattern: <code>-p &lt;host_port&gt;:&lt;container_port&gt;</code>.</p>
<p>Port 5432 of our container will be mapped on port 5432 of our host or server.</p>
<p>Access the container on your host or server. We will create a database inside our Postgres container.</p>
<pre><code>sudo docker exec -it postgres bash
</code></pre><p>Now you are ‘inside’ your container. We can access Postgres and create the database.</p>
<pre><code>root@<span class="hljs-number">12</span>d48fde2627:/# psql -U postgres
psql (<span class="hljs-number">13.3</span> (Debian <span class="hljs-number">13.3</span><span class="hljs-number">-1.</span>pgdg100+<span class="hljs-number">1</span>))
Type <span class="hljs-string">"help"</span> <span class="hljs-keyword">for</span> help.

postgres=# CREATE DATABASE testdb;
CREATE DATABASE
postgres=# \q
</code></pre><p>And with that we're done! You can exit your container (<code>\q</code>) and go to your local machine. </p>
<p>Here you need a PostgreSQL Client tool installed like <a target="_blank" href="https://dbeaver.io/">DBeaver</a> or <a target="_blank" href="https://www.pgadmin.org/">pgAdmin</a>. Connect to the DB server by using the public IP as the host, <code>5432</code> as the port, <code>postgres</code> as the username, the <code>POSTGRES_PASSWORD</code> as the password and connect to the <code>testdb</code>. Save the connect and you should now be able to access your DB.</p>
<h2 id="heading-congrats-you-have-now-run-a-postgres-docker-container-on-oracle-cloud-infrastructure">Congrats, you have now run a Postgres Docker Container on Oracle Cloud Infrastructure!</h2>
<p>Thanks for reading! I really hope that you find this article useful. I'm always interested to know your thoughts and happy to answer any questions you might have in your mind. If you think this post was useful, please share it to help promote this piece to others.</p>
<p>Thanks for reading! :)</p>
<p>P.S. Do feel free to connect with me on <a target="_blank" href="https://www.linkedin.com/in/rohitjmathew">LinkedIn</a> or <a target="_blank" href="https://twitter.com/iamrohitjmathew">Twitter</a>.</p>
<h2 id="heading-resources">Resources</h2>
<p>This article leans heavily on the following material:</p>
<ul>
<li><a target="_blank" href="https://medium.com/oracledevs/run-always-free-docker-container-on-oracle-cloud-infrastructure-c88e36b65610">Run Always Free Docker Container on Oracle Cloud Infrastructure</a> - Lucas Jellema</li>
<li><a target="_blank" href="https://betterprogramming.pub/connect-from-local-machine-to-postgresql-docker-container-f785f00461a7">Connect From Your Local Machine to a PostgreSQL Database in Docker</a> - Lorenz Vanthillo</li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Oracle Cloud Certification – Pass the Exam With This Free 3-Hour Course ]]>
                </title>
                <description>
                    <![CDATA[ By Andrew Brown This Oracle Cloud Certification exam will take – on average – about one week of study to prepare for. Most people who seriously commit to their studies are ready to pass the exam within about four days. My attitude is that you should ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/oracle-foundations-associate-certification-cloud-course/</link>
                <guid isPermaLink="false">66d45db54a7504b7409c333a</guid>
                
                    <category>
                        <![CDATA[ Certification ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Cloud Computing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Devops ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Oracle ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Sat, 02 May 2020 11:10:58 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2020/05/oraclefoundations.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Andrew Brown</p>
<p>This Oracle Cloud Certification exam will take – on average – about one week of study to prepare for. Most people who seriously commit to their studies are ready to pass the exam within about four days.</p>
<p>My attitude is that you should attempt the exam even if you feel you are not ready, so that you gain practice through the examination experience.</p>
<h2 id="heading-what-is-oracle-cloud-infrastructure">What is Oracle Cloud Infrastructure?</h2>
<p>Oracle is a technology company that been around since the late 70s and is well known for building enterprise on-premises software and specifically their Oracle database.</p>
<p>Oracle has its own cloud provider just like AWS, and they call their platform Oracle Cloud Infrastructure (OCI) – also know as Oracle Cloud.</p>
<p>Oracle does not have as many cloud services and cloud integration as AWS. But consider that Oracle was the second-largest software company by revenue and market share in 2019.</p>
<p>Oracle has carved its niche in the cloud market by doing what they know best: providing rich cloud features around their Oracle database.</p>
<h2 id="heading-the-oracle-foundations-associate-certification">The Oracle Foundations Associate Certification</h2>
<p>The Oracle Foundations Associate is the entry-level certification for Oracle Cloud Infrastructure. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/05/certimage.png" alt="Image" width="600" height="400" loading="lazy">
<em>A chart of Oracle's 6 cloud certifications. The certification covered in this course serves as the foundation for all the other certifications.</em></p>
<p>This certification is very similar to the <a target="_blank" href="https://www.freecodecamp.org/news/aws-certified-cloud-practitioner-training-2019-free-video-course/">AWS Certified Cloud Practitioner</a>. It focuses on getting you familiar with:</p>
<ul>
<li>Cloud Concepts</li>
<li>Oracle's Global Infrastructure</li>
<li>Oracle Cloud's Core Services (Computing, Storage, Databases, Networking)</li>
<li>Oracle Cloud's Billing and Pricing</li>
<li>Oracle Cloud's Security Services</li>
</ul>
<p>If you are new to the Cloud, then you can pass exam this with under a week of study.</p>
<p>If you already hold the AWS Certified Cloud Practitioner, you could pass this exam with a few hours of study. You would just need to familiarize yourself with OCI's terminologies and some concepts around their account management and billing.</p>
<p>In this course, I'll show you a few examples of how AWS and OCI have very similar offerings in terms of technologies, but are just named differently. To name a few:</p>
<ul>
<li>AWS Virtual Private Cloud (VPC) is the equivalent of Oracle Virtual Cloud Network (VCNs)</li>
<li>AWS Availability Zones (AZs) is the equivalent of Oracle Availability Domains (ADs)</li>
<li>AWS Key Management System is the equivalent of Oracle Vault</li>
<li>AWS S3 is the equivalent of Oracle Object Storage</li>
<li>AWS Elastic Block Store (EBS) is the equivalent of Oracle Block Storage</li>
<li>AWS EC2 is the equivalent of Oracle VM</li>
</ul>
<p>The passing score for this exam is 68%. There are 60 questions – both multiple-choice and multiple-answer. This means you can afford to get about 19 questions wrong and still pass. Which is a considerable margin for error.</p>
<p>The exam fee generally costs $95 USD, and this Oracle Certification is valid for 1.5 years before you have to retake the exam.</p>
<h2 id="heading-the-free-oracle-foundations-course">The Free Oracle Foundations Course</h2>
<p>My course will remain free forever. And it's ad-free, too.</p>
<p>This free course is nearly 3 hours in length. It includes hands-on exercises. You can follow along and set up your own Oracle Cloud account. Together, we will explore the Networking, Computing, Storage and Database services.</p>
<p>You can create an Oracle Cloud account for free. You will have to provide a valid credit card to complete the registration. But as long as you remember to cancel, you won't have to worry about unexpected charges because Oracle will give you $300 USD credits for 30 days. And you will be in a sandbox account. A sandbox account means you will never be billed unless you choose to leave the sandbox. So you are safe to explore without getting charged.</p>
<p>Then at the end of the course, I'll show you how to book your exam.</p>
<p>OK – now you know everything you need get started with your Oracle Cloud Certification journey.</p>
<p><a target="_blank" href="https://www.youtube.com/watch?v=si9tjcnxruU">Head on over to freeCodeCamp's YouTube channel to start working through the full 3-hour course</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
