How to Perform Salesforce Testing

The key goal of any business is to ensure customer satisfaction. Businesses invest a lot of time and effort into satisfying the customer base with an emphasis on rapid and efficient customer interactions, thus underlining the need for efficient CRM products in the market.

Table of Contents

What is Salesforce?

Salesforce is a cloud-based customer relationship management (CRM) platform that provides a suite of business applications and tools to help organizations manage their sales, marketing, customer service, and other business operations. It is one of the leading CRM platforms in the market and offers a wide range of features and capabilities.

Salesforce allows businesses to store and manage customer data, track sales opportunities, automate sales processes, and gain insights into customer interactions. It provides a centralized platform for managing customer relationships, enabling organizations to improve their sales effectiveness, enhance customer service, and drive business growth.

As per a Gartner report, the global CRM market grew from $61.6 billion in 2019 to $69.3 billion in 2020, reflecting an increase of 12.6%, and is currently the world’s third-fastest growing segment in the IT space.

The Worldwide Semiannual Software Tracker by the International Data Corporation (IDC) has ranked Salesforce #1 in Customer Relationship Management Solutions for the eighth consecutive year running and its data clearly shows Salesforce rising head and shoulders above its competitors over the last few years.

Global CRM Market Share

Source

This clearly highlights the need for Salesforce Testing in particular and CRM testing in general to any QA Leaders intent on streamlining their process for a seamless customer experience.

What is Salesforce Testing?

Why test Salesforce Applications?

The main goal of Salesforce testing is to test the customized application features rather than those built into SalesForceDotCom (SDFC).

Since one of the most important USPs of SFDC is the fact that everything in it can be customized based on user requirements, Salesforce testing of these features serves to guarantee that any enhancements or custom features will not fail in production or throw a spanner in the works of other elements in the SF application.

Testing the custom features in SDFC is important because:

  • It allows us to check if the code is functional.
  • It helps verify that the application can cater successfully to client needs based on business requirements.
  • It helps catch issues early in testing, making them easier to fix.
  • With the help of functional flows, we can obtain a report on the basis of test case statuses.

Initially, Salesforce services were offered using its Classic Platform, popularly known as Aloha. This was in vogue during the 2000s and was supplemented by Force.com which was SF’s first PaaS (Platform as a Service) offering. This could allow clients to build custom applications on top of Salesforce without any additional software.

In more recent years, SF has offered the Lightning platform to its clients which comes with a number of additional functionality and security features, as well as an improved UI experience.

For the purposes of this article, we shall be dealing with the Salesforce Lightning platform.

How to perform Salesforce Unit Testing in APEX

The @isTest is used to define classes and methods that only contain code used for testing the application.

A sample format would be

@isTest private class MyTestClass { @isTest static void test1() { // Implement test code } @isTest static void test2() { // Implement test code } }

Below are a few examples of implementing Unit tests for some common Salesforce constructs:

For Triggers

A trigger is an APEX script that executes prior to or posts a Data Manipulation Event (DML). These allow the performance of custom actions before or after a record has undergone insertion, update, or deletion.

@isTest public class TriggerTestClass { static testMethod void testMethod1() { // Perform DML here only } }

For Standard Controllers

A standard controller takes a record and places it in a variable that it makes available to a page.

@isTest public class ExtensionTestClass { static testMethod void testMethod1() { Account testAccount = new Account(); testAccount.Name='Test Account record' ; insert testAccount; Test.StartTest(); ApexPages.StandardController sc = new ApexPages.StandardController(testAccount); myControllerExtension testAccPlan = new myControllerExtension(sc); PageReference pageRef = Page.AccountPlan; // Add your VF page Name here pageRef.getParameters().put('id', String.valueOf(testAccount.Id)); Test.setCurrentPage(pageRef); //testAccPlan.save(); call all your function here Test.StopTest(); } }

Some best practices for Unit testing in Salesforce include:

  • Test class should be annotated with @isTest.
  • Classes with @isTest annotation can’t be an interface or enum.
  • Test method should be static and no void return type.
  • Starting with the Salesforce API 28.0 test method can not reside inside non-test classes.
  • To deploy to production at least 75% code coverage is required

Start Salesforce Testing

How to perform Manual and Automation Testing Salesforce

Once the developers are happy with the test coverage through Unit Tests in Salesforce, it is time to perform a variety of manual or automation tests. However, before we start testing the SF applications, we must ensure to set up a Sandbox that allows us to perform these tests in isolation.

Salesforce Sandbox testing can be done on a variety of Sandbox types like:

  • Developer Sandbox: This is intended for development and testing in an isolated environment. This contains a copy of the production environment’s configuration.
  • Developer Pro Sandbox: This can host larger sets of data than the vanilla Developer Sandbox and has the capacity for increased development and quality assurance tasks and for integration testing or user training.
  • Full Sandbox: This is meant as a dedicated testing environment, and supports performance testing, load testing, and staging. They are intended as a replica of the production org, including all data, such as object records and attachments and metadata. However, the significant lag due to the refresh interval makes them unsuitable for development purposes.

A Variety of licenses can be purchased for these Sandbox types as per your requirement.

Salesforce Sandbox

Source

Pro Tip: No emulator or simulator can replicate real user conditions. Software needs to be tested on real devices to work in real-world circumstances such as a low battery, incoming calls, weak network strength, and so on. If an in-house lab is not accessible, opt for a real device cloud.

Manual Tests in Salesforce

Manual testing, as the term suggests, refers to a test process in which a QA manually tests the software application in order to identify bugs. To do so, QAs follow a written test plan that describes a set of unique test scenarios. The QA is required to analyze the performance of the web or mobile application from an end user’s perspective.

For the purposes of this article, take a simple positive test scenario of a successful login to the Salesforce site and write a brief test case accordingly.

Test Scenario: To authenticate a successful user login on Salesforce.com

Test Steps:

  • The user navigates to the Salesforce login page.Salesforce Testing
  • In the ’email’ field, the user enters their registered email address.
  • The user enters the registered password.
  • The user clicks ‘Login.’
  • The user is redirected to the Home page
  • Test Salesforce Manually on Real Device Cloud

    Automated Tests in Salesforce using Selenium

    Selenium Salesforce Automation Tests can help automate functional testing in Salesforce, checking the user flows functionality. Salesforce Automation Testing with Selenium is largely recommended because:

    • It is compatible with multiple operating systems like Windows, Linux, Solaris, and Macintosh.
    • It also supports multiple browsers like Chrome, Safari, IE, Edge, and Firefox.
    • Also, Selenium is easy to integrate with tools like Jenkins, Maven, and Docker to achieve a continuous testing approach.
    • Tools like TestNG and JUnit further help in structuring the Selenium tests for easy maintainability and generating reports.

    For the purposes of this test, we shall build upon the example for manual testing shown above and add a few features. This Selenium Salesforce test will demonstrate how to create a custom field for a custom object using Selenium with Java.

    Step 1: Login to the Salesforce

    To launch the website in a browser of your choosing, set the system properties to the path of the required driver for the browser. Since this example uses Google Chrome, it should be set to the ChromeDriver. The code for the same is as follows.

    Webdriver driver = new ChromeDriver(); System.setProperty("webdriver.chrome.driver", "Path of the chrome driver");

    Maximize the browser for a clear picture of test cases being executed using the following command.

    driver.manage.window.maximize();

    Step 2: Navigate to salesforce.com

    driver.get("https://login.salesforce.com");

    It will appear as seen below

    Salesforce Login

    Step 3: Enter Username and Password using the following command

    driver.findElement(By.xpath("//input[@id=’username’]”)).sendKeys(“<Enter email>”); driver.findElement(By.xpath("//input[@id=password]”)).sendKeys(“<Enter Password>”);

    Step 4: Click the Login Button using the following command

    driver.findElement(By.xpath("//input[@class=’button r4 wide primary’]”)).click();

    Since you may encounter some issues while loading the page, add a wait to let the page load completely

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    This will lead to the Home Page as seen below

    Salesforce Testing

    Step 5: Find the Quick Find Search Field in the UI on the home screen and enter object in the Quick Find Search field.

    driver.findElement(By.xpath("//input[@class=’quickfindInput version2 ’]”)).sendKeys(“object”);

    Salesforce Testing Example

    Step 6: Click appearing after entering object in the Quick Find Box

    driver.findElement(By.xpath("//a[@id=’CustomObjects_font’]”)).click();

    Salesforce Testing Screenshot

    Step 7: Click on the “Create New Objects Link

    driver.findElement(By.xpath("//a[@value=’New Custom Object’]”)).click();

    Test Salesforce Modules

    Step 8: Choose the Label text box to input the object name and do the same for Plural Label

    driver.findElement(By.xpath("//input[@id=’MasterLabel’]”)).sendKeys(“abc”); driver.findElement(By.xpath("//input[@id=PluralLabel’]”)).sendKeys(“abc’s”);

    Create Object for Salesforce Testing

    Step 9: Click on Save button at the end of the page

    driver.findElement(By.xpath("//a[@value=’ Save ’]”)).click();

    Salesforce Testing Steps

    Test Result

    The Custom Object created can be seen below

    Final Output

    Best Practices of Salesforce Testing

    Now that it is identified what to test, where to test, and how to test in terms of testing Salesforce applications, let’s discuss some best practices for testing Salesforce effectively.

    • Have an effective test strategy and test plan: A proper test strategy and test plan are absolutely critical for Salesforce testing as it encompasses many components and business processes. A clear view of the high-level objectives, the stakeholders present, the different phases of testing involved, and the tools to be used must all be determined in this phase.
    • Have an integrated test environment: Salesforce offers a variety of Sandbox options for isolated Salesforce Sandbox testing. To satisfactorily test business-critical functions, all systems should be properly integrated in the sandbox so that proper integration testing can be performed in real-time scenarios like on production.
    • Use Automation to speed up test coverage: Automating critical and often repeated business processes, like a checkout or order fulfillment flow, in Salesforce saves lots of time when testing. Salesforce supports several types of API endpoints that can be used for automation testing. API endpoints can be automated by using tools like Postman, REST-Assured & Soap UI.

    Read More: How do you ensure maximum test coverage?

    Common Challenges in Salesforce Testing

    Some of the core challenges that QA professionals face during Salesforce Automation are:

    • Navigating through frames
    • Executing against dynamic content
    • Handling tables
    • Object dependency
    • Heavy DOM structure and shadow DOMs
    • Driving data
    • Reusability
    • Long steps for end-to-end testing

    It is best to choose the correct test automation framework that provides solutions to these challenges. However, an even bigger challenge is the issue of successful cross browser testing in Salesforce, regardless of whether it is done manually or through an automation framework.

    Cross-Browser based challenges in Salesforce testing and how Browserstack can help overcome them

    Since Salesforce customers have an option of using the Classic or the Lightning platform features, there is an amount of variation involved in performing some tasks based on the platform of choice as well as the browser being used. For example:

    • SF Classic supports the latest IE 11 version, but it is not supported by Lightning.
    • SF Lightning does not support private browsing in the latest version of firefox but classic does
    • Certain features in Salesforce, like the Standard mail merge or extended mail merge (Salesforce Classic only Feature), and some client applications like Connect Offline work only on the Internet Explorer.

    Since all organizations cannot allocate funds for infrastructure to test have a massive test environment for Salesforce Testing, cloud-based platforms like Browserstack to implement cross-browser testing for all your Salesforce testing needs

    Using BrowserStack’s real device cloud that provides 3000+ real browsers and devices makes testing Agile with wider coverage. The cloud allows parallel testing and supports integrations with popular CI/CD tools such as Jira, Jenkins, CircleCI, TeamCity, and Travis CI, to ensure streamlined Automation Testing. This would help in leveraging Automation Testing for your CI/CD pipeline.

    Test on BrowserStack for Free

    Salesforce is a leading CRM equipped with a large feature set that can be customized and reconfigured to suit an organization’s business needs. However, only focusing on developing SF modules is not enough. Salesforce testing is critical in ensuring customer satisfaction and delivering processes that not only work seamlessly but also enable the maximum leverage of Salesforce’s unique capabilities to ensure customer success.

    ncG1vNJzZmivp6x7o77OsKqeqqOprqS3jZympmeXqralsY6smKWdo5u8s6%2FEZqueq6Seu6g%3D