How to Perform Salesforce Testing
By Sourojit Das, Community Contributor - June 14, 2023
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.
- What is Salesforce?
- What is Salesforce Testing?
- Why test Salesforce Applications?
- How to perform Salesforce Unit Testing in APEX
- How to perform Manual and Automation Testing Salesforce
- Manual Tests in Salesforce
- Automated Tests in Salesforce using Selenium
- Best Practices of Salesforce Testing
- Common Challenges in Salesforce Testing
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.
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?
Salesforce testing refers to the process of evaluating and validating the functionality, quality, and performance of Salesforce applications and customizations. It involves conducting various tests to ensure that the Salesforce implementation meets the desired requirements, functions correctly, and delivers a positive user experience. Salesforce testing covers different aspects of the platform, including configuration, customization, integration, and data management.
Common types of testing performed in Salesforce include:
- Functional Testing: Functional testing focuses on verifying that the Salesforce application functions as intended. It involves testing various features and functionalities such as data entry, data manipulation, workflow automation, validation rules, and business logic.
- Unit Testing: Unit testing is conducted at the individual component level, such as triggers, classes, or Visualforce pages. It ensures that each unit of code behaves correctly and produces the expected results. Salesforce provides its own unit testing framework called Apex Testing, which allows developers to write and execute test methods for Apex code. Example: A developer has scripted a password input text field with its validation ar (8 characters long, must contain special characters.); makes a unit test to test out this one specific text field (has a test that only inputs 7 characters, no special characters, empty field)
- Integration Testing: Integration testing is performed to validate the interaction between Salesforce and external systems or applications. It ensures that data synchronization, API integrations, and other system interactions work correctly and produce the desired outcomes. Example: A tester writes a test case to ensure that the password is accurately saved in the database after generating one. This ensures that the code written by the developer is integrated with the system’s database.
- User Interface (UI) Testing: UI testing focuses on evaluating the user interface components of Salesforce applications, including layouts, forms, buttons, and navigation. It ensures that the UI elements are correctly displayed, responsive, and provide a seamless user experience.
- Performance Testing: Performance testing assesses the responsiveness, scalability, and stability of the Salesforce application under different loads and conditions. It helps identify any performance bottlenecks, such as slow response times, excessive resource consumption, or limitations in handling concurrent users.
- Security Testing: Security testing is crucial to ensure that sensitive data in Salesforce is adequately protected. It involves testing the application for vulnerabilities, access controls, data encryption, and compliance with security best practices.
- Data Management Testing: Data management testing focuses on validating data integrity, data migration, data transformation, and data import/export processes within Salesforce. It ensures that data is accurately stored, retrieved, and processed as required.
- Regression Testing: Regression testing involves retesting the previously tested functionalities after any changes or enhancements to ensure that existing features are not adversely affected. It helps ensure that new updates or modifications do not introduce unexpected issues or break existing functionality. Example: Checking for the login functionality after a new UI has been designed for the login page. Of these many types of testing, the Selenium Unit tests need to be written in the APEX programming language used by Salesforce, whereas the others can be done either manually or using an automation test tool like Selenium.
- User Acceptance Testing: Acceptance testing determines if a software system meets all predetermined specifications. It evaluates if the system complies with business, technical, and aesthetic requirements so that business stakeholders and end-users can be satisfied alike. Acceptance tests are generally divided into User Acceptance Testing and Business Acceptance Testing. The former checks to ensure that the product is meeting all performance standards from the users’ perspective while the latter establishes that the software aligns with business goals and requirements. Example: The client tests a particular functionality, like adding a customer to the CRM on a custom module on-site
Salesforce testing can be performed manually or using automated testing tools and frameworks. Automated testing helps improve efficiency, accuracy, and repeatability of tests, especially for large and complex Salesforce implementations.
Effective testing in Salesforce helps ensure the quality, reliability, and performance of the application, leading to enhanced user satisfaction and successful utilization of Salesforce capabilities in the business environment.
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.
Read More: UI Testing: A Detailed Guide
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
Read More: Best Practices for Unit 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.
Read More: What is Browser Sandboxing
A Variety of licenses can be purchased for these Sandbox types as per your requirement.
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.
Read More: Manual Testing for Beginners
Test Scenario: To authenticate a successful user login on Salesforce.com
Test Steps:
- The user navigates to the Salesforce login page.
- 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.
Read More: How to create Selenium test cases
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
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
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”);
Step 6: Click appearing after entering object in the Quick Find Box
driver.findElement(By.xpath("//a[@id=’CustomObjects_font’]”)).click();
Step 7: Click on the “Create New Objects Link”
driver.findElement(By.xpath("//a[@value=’New Custom Object’]”)).click();
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”);
Step 9: Click on Save button at the end of the page
driver.findElement(By.xpath("//a[@value=’ Save ’]”)).click();
Test Result
The Custom Object created can be seen below
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.
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.