Skip to content

Testing Procedures

Bill Sacks edited this page Jun 1, 2021 · 6 revisions

This page gives a brief overview of the testing procedures for each component / repository that makes up CESM. The audience is CESM software engineers who are familiar with CESM / CIME system testing in general, but who need to run testing on a component that they do not regularly work with.

Many components have different testing procedures that are run depending on what has changed. This page is not meant to be exhaustive, but rather is meant to capture the most common testing procedures – e.g., procedures that should cover about 90% of cases.

[This section provides a template that can be copied to provide a starting point for the documentation of a given component's testing procedure. Replace "Template" above with the component's name. Any text in brackets – like this overview text – should be removed from the final version.]

[This should give the GitHub URL of the repository. This is assumed to be the location into which a Pull Request should be opened.]

[Does this component support a standalone checkout for testing, or does it need to be checked out in the context of CESM or some other "umbrella" repository? If the latter, describe how to determine a reasonable version of the umbrella repository to use for testing – and in particular, how to determine what versions will have baselines available for system tests of the component.]

[Give details of the exact test commands to run to achieve full system testing, and on what machine(s). As noted above, this does not need to exhaustively cover all possible testing scenarios. Rather, it is meant to cover the typical cases – say, the common 90% of scenarios. The testing commands should be detailed enough that someone can essentially copy and paste the commands into a terminal (replacing some placeholder text, e.g., for the baseline tag name to be used for comparison.]

[For each test machine, give the location on disk in which baselines can be found for the above testing.]

[Describe how expected failures can be determined for any given tag.]

[Does the full testing described above need to be run on each set of changes? Or is it common to combine multiple changes / PRs together and have a component SE run full testing on the batch of changes? If the latter, is there some minimum expected / recommended testing on the individual changes?]

[State whether a feature branch needs to merge in the latest version of the main branch before running final testing. If so, there will typically be some process for tag ordering, so briefly describe that process.]

[Give a very rough estimate of test turnaround time and core-hour cost, to help answer the question: if I run this test suite a number of times, am I going to burn through my allocation?]

[Add anything else that is important but not covered above.]

[Provide URLs for additional documentation on this component's testing procedures.]