Overview

AppOps Test automates regression testing of complex Salesforce workflows, for example, Salesforce CPQ. Tests are fully API-based, instead of click-based UI walkthroughs. Using an intuitive visual user interface, you create and execute test cases, analyze the results, then rerun the test cases anytime to compare the state of the system at various moments in time.

Regression testing is a testing practice that ensures an app still functions as expected after any changes, updates, or improvements to the reference data, code, or environment.

With AppOps Test, you can:

  • Iteratively run sanity tests during development, deployment, and project go-live.
  • Define and run test cases throughout the development and release cycles, and rerun them again after major and minor Salesforce releases.
  • Reliably confirm that your low-code application implementations, like Salesforce CPQ, drive your users to the correct expected results.
  • Quickly answer questions like:
    • Have my price rule changes inadvertently introduced errors?
    • Are specific quote lines still receiving the values I expect?
    • Have the list amounts, list totals, net amounts, and net totals been affected by the latest Salesforce push upgrade?

AppOps Test Building Blocks

Test templates, test cases, and test runs are the building blocks of AppOps Test.

  • A test template is simply a list of fields (from one or more objects) for future use by test cases.
  • A test case tests specific functionality using the fields from the test template.
  • A test run is a collection of test cases and the results of executing those test cases.

Workflow

For maximum flexibility and versatility, you build AppOps Test components in this order:

  1. Start by identifying the object fields to test and storing the list of fields as a test template.

    A test template specifies a list of fields (from one or more objects) for future use by test cases. You can use a template as the basis for multiple test cases.

  2. Test templates are the building blocks for test cases. Create a test case by selecting a template and other parameters that define what to test. On save, the test case executes and captures the results in the test case to use later as a baseline.

    A test case specifies parameters for evaluating the accuracy of a particular feature during future test runs. Each test case consists of a test template (which specifies the objects and fields to test), the functionality to test, the ID of the Quote record to test, and baseline results (created on Save).

    Baseline results are an initial snapshot of values (results) for the specified object fields, stored in the test case. AppOps Test compares the stored values to the values in future test runs.

  3. Test cases are the building blocks for test runs. Create a test run by first selecting one or more test cases and then executing the test cases to generate test run results, which are then stored in the test run.

    A test run specifies a set of test cases and includes the results of running the test cases, indicting whether actual results differ from expected results.

    Test run results provide a snapshot of values (results) for all test cases in the test run at the time you executed the test run. AppOps Test compares the values in the test run results to the values in the baseline results.

  4. In the future, rerun (automatic clone and run) the test run to generate a new set of test run results.

Scope

The initial release of AppOps Test focuses exclusively on the Salesforce CPQ calculate quote functionality (using the Quote and Quote Line objects) and can test these field types for both standard and custom fields:

  • Text fields (255 characters or less)
  • Number fields
  • Currency fields
You can also include support for your custom fields. Refer to Adding Reference Fields for details.

Admins are responsible for many, many moving parts. Testing the Quote and Quote Line objects can alert you to record level failures resulting from unintentional changes or errors. Potential causes for failures include changes to:
  • Price rules
  • Price rule formulas
  • Custom scripting in the quote calculator plugin
  • Evaluation order
  • Discount schedules
  • Contracted pricing
  • Multi-dimensional quoting setup
  • Process builder
  • Workflow rules
  • Approval thresholds
  • Target amount functionality
  • Price waterfall impacts
  • Apex triggers on the Quote and Quote Line objects
  • Quote and Quote Line object-related formula fields, field metadata, and lookup table data
Information AppOps Test is not a debugging tool that identifies the cause of failures. Instead, AppOps Test reports unexpected output results, which in turn alerts you that something related to quote and quote line records has unexpectedly changed.

Future development plans that Prodly is evaluating include:

  • Support for multiple remote connections
  • Automatic test case generation
  • Automatic and scheduled test runs
  • Expanding test coverage for these CPQ functions:
    • Contracts
    • Amendments
    • Renewals
    • Orders
    • Product Configuration
  • Expanding test coverage to include other Salesforce low-code apps

What You See in AppOps Test

In the Prodly AppOps app, the AppOps Test functionality resides on the AppOps Test tab. Just as you might expect, the tab contains separate Test Templates, Test Cases, and Test Runs main pages, available in the left sidebar. You can navigate freely between the pages and their subpages.

Each page contains multiple actions you can take, such as creating a test template, refreshing baseline values, and viewing test run results.

Links to help resources are available at the bottom of the left sidebar.


      Current topic: Jump to Top    Next topic: Installation and Configuration

© Copyright 2020 Prodly, Inc. All rights reserved. Prodly, AppOps Release, and AppOps Test are trademarks of Prodly, Inc., as are other names and marks. Salesforce and other names are trademarks of salesforce.com, inc., and are used here with permission. Other marks and names appearing herein may be trademarks of their respective owners.