QA How-To
TestRail vs Zephyr vs Xray for Test Management (2026)
Compare TestRail vs Zephyr vs Xray for test management in 2026. Evaluate Jira models, APIs, CI results, traceability, migration, and team fit with a pilot.
18 min read | 3,727 words
TL;DR
Choose TestRail for a dedicated, tracker-flexible QA workspace; Zephyr Scale Cloud for a Jira-centered repository with cycles and plans; Xray Cloud when tests as Jira issues and requirement coverage suit your workflow. Prove the choice with a small end-to-end release pilot.
Key Takeaways
- TestRail keeps the case repository in a dedicated application and links Jira issues through an integration.
- Zephyr Scale Cloud keeps test cases as Zephyr objects within a Jira-centered workflow.
- Xray Cloud models Tests, Test Plans, and Test Executions as Jira issues.
- Pilot the same case, failure, defect, retest, and automation import in every candidate.
- Verify the exact edition and Cloud API before writing migration or CI scripts.
- Score coverage, permissions, exports, and ongoing administration alongside authoring speed.
TestRail vs Zephyr vs Xray is a choice about where test work should live, how it connects to Jira, and how much structure your team needs. Choose TestRail when a dedicated test management workspace and cross-tracker flexibility matter most. Choose Zephyr Scale Cloud when Jira-centered teams want a separate test repository with cycles and plans. Choose Xray Cloud when tests should behave as Jira issues and requirement coverage plus automation imports drive the workflow.
This comparison uses TestRail Cloud, Zephyr Scale for Jira Cloud (called Zephyr below), and Xray Cloud as the reference deployments. Features and APIs differ across self-hosted and other Zephyr editions. Use the same small release scenario in each trial before committing your case library or CI pipeline.
TL;DR
| Decision point | TestRail Cloud | Zephyr Scale Cloud | Xray Cloud |
|---|---|---|---|
| Working home | Dedicated TestRail application | Test management inside Jira, with Zephyr-owned test objects | Jira issues plus Xray test data |
| Main organizing units | Cases, suites, runs, plans, milestones | Test cases, cycles, plans, folders | Tests, Test Executions, Test Plans, Test Sets |
| Jira relationship | Link requirements and defects through an integration | Jira app with linked issues; test cases are Zephyr objects | Test, Test Plan, and Test Execution are Jira issue types |
| API starting point | HTTP API under index.php?/api/v2/ |
Zephyr Cloud REST API under /v2/ |
Xray Cloud REST imports and GraphQL queries |
| Best initial fit | QA works across trackers or needs its own workspace | Team wants Jira context without making every case a Jira issue | Team already governs work through Jira issues and JQL |
| Watch closely | Context switching and integration upkeep | Edition-specific features and object model | Jira issue administration and model complexity |
The product names alone do not decide the outcome. Run a pilot that measures case authoring, a manual cycle, requirement coverage, an automated result, permissions, and export. The vendor TestRail API guide, Zephyr Cloud API reference, and Xray Cloud API guide are the source of truth for the specific tenant you test.
1. Define the TestRail vs Zephyr vs Xray Comparison Scope
First identify the product and hosting model on your purchase request. "Zephyr" can refer to multiple SmartBear editions, and their data models and APIs are not interchangeable. This article evaluates Zephyr Scale for Jira Cloud. In that model, cases are Zephyr objects associated with Jira projects, rather than Jira Test issues. SmartBear's edition comparison explains why a Zephyr Squad migration deserves its own proof of concept.
Xray Cloud also has a different API surface from Xray Data Center. A script written for a Jira-hosted server endpoint should not be assumed to work against Xray Cloud's authenticated REST and GraphQL endpoints. Likewise, check the TestRail deployment and enabled project configuration before relying on a field or report. This scope discipline prevents a common purchasing error: approving a screenshot or integration demo from the wrong edition.
Write down the boundary for your trial: Jira Cloud project key, test repository location, required data residency, expected result source, and roles allowed to edit or execute tests. Get one product owner, one manual tester, and one automation engineer to perform the same tasks. Their observations will reveal friction that a feature matrix cannot.
2. Compare TestRail vs Zephyr vs Xray Object Models
Use a single example: a checkout story, three reusable test cases, one release plan, two environment-specific executions, and a linked payment defect. In TestRail, cases live in a suite or section; a run or plan selects cases for execution. Jira stories and defects can be references, so the case library remains a separate system. The TestRail Jira integration supports links between Jira issues and cases, runs, plans, milestones, or results.
In Zephyr Scale Cloud, create the cases in its repository, place them in a test cycle, and group cycles in a plan. The Jira project gives the work context, while case data belongs to the Zephyr application. This makes repository organization central to maintenance: agree on folders, naming, and ownership before importing thousands of rows.
In Xray, a Test is a Jira issue type, and a Test Execution is another Jira issue containing test runs. Test Plans group execution scope; Test Sets and repository folders organize tests for other purposes. Xray's planning guide distinguishes those structures. Teams that already use Jira workflows, JQL, and issue permissions may find that natural; teams with strict Jira issue volume or administration policies should test the operational effect.
3. Set Selection Criteria You Can Observe
Score each candidate against tasks, not a catalog of vendor claims. Give every criterion a weight before the demo. For example, a regulated release team might weight traceability and audit evidence heavily, while a small product team might prioritize editing speed and CI ingestion. Record the evidence and the person who tested it. An illustrative scorecard can use a 1-to-5 scale, but those numbers are your measurements, not product benchmarks.
Ask the tester to create a case with preconditions, input data, expected outcome, and an owner. Ask another tester to reuse it in a second cycle without cloning. Ask the automation engineer to send a result from a build and identify the exact execution that received it. Ask the product owner to trace a failed requirement to a defect and its retest. Time these tasks, note unexpected clicks, and capture any missing permissions.
Also test how the team will handle risk-based testing when the release window shrinks. Can it select the highest-risk cases and explain the omitted scope? A useful tool makes that decision visible. If a feature requires manual spreadsheet reconciliation, include that work in the score rather than treating it as free.
4. TestRail: Dedicated Repository and Run Management
TestRail suits teams that need test planning as its own workspace. A case library can survive a change in issue tracker because references to Jira are links rather than the identity of the case. Runs give testers a stable snapshot of what to execute; plans can coordinate multiple runs for a release. This separation is useful when QA serves several products or tracks defects in different systems.
Try the smallest read-only API call after an administrator gives you a tenant URL, user email, API key, and existing case ID. TestRail uses HTTP Basic authentication with the email and API key. The index.php? segment belongs inside the quoted URL; removing it or appending a normal query string often causes a confusing error.
: "${TESTRAIL_URL:?Set the TestRail base URL}"
: "${TESTRAIL_EMAIL:?Set the account email}"
: "${TESTRAIL_API_KEY:?Set an API key}"
: "${TESTRAIL_CASE_ID:?Set an existing numeric case ID}"
curl --fail-with-body --silent --show-error \
--user "$TESTRAIL_EMAIL:$TESTRAIL_API_KEY" \
--header 'Content-Type: application/json' \
"$TESTRAIL_URL/index.php?/api/v2/get_case/$TESTRAIL_CASE_ID" \
| jq '{id, title, section_id, refs}'
Verify that id matches the requested case and that refs contains the expected issue reference, if one was assigned. If authentication fails, check whether API access is enabled and whether the key belongs to the user with case visibility. During the trial, test what happens when a case changes after a run is opened and how your team will explain the historical result. The dedicated workspace brings clarity, but Jira users must still navigate the integration boundary.
5. Zephyr: Jira Context With Its Own Test Objects
Zephyr Scale Cloud fits teams that want test planning close to Jira stories while maintaining a structured case repository, folders, cycles, and plans. Keep the edition name on your evaluation sheet. SmartBear's product comparison shows that Zephyr Squad and Zephyr Scale differ in whether test cases are Jira issues, in available planning objects, and in migration behavior. A scripted migration that assumes Squad issue keys map directly to Scale cases needs validation.
For a Cloud tenant, create a Zephyr API token and read a few cases from a known Jira project. This is a non-mutating check of token scope, project key, and response shape. It uses the documented Cloud /v2/testcases endpoint, not a Jira REST endpoint.
: "${ZEPHYR_API_TOKEN:?Set a Zephyr Cloud API token}"
: "${JIRA_PROJECT_KEY:?Set a Jira project key}"
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $ZEPHYR_API_TOKEN" \
--get 'https://api.zephyrscale.smartbear.com/v2/testcases' \
--data-urlencode "projectKey=$JIRA_PROJECT_KEY" \
--data-urlencode 'maxResults=5' \
| jq '{total, isLast, cases: [.values[]? | {key, name, projectKey}]}'
Verify that the returned keys belong to your project; a zero-item page may simply mean the repository is empty or your role cannot see it. For a larger library, inspect startAt, maxResults, and pagination before building an exporter. Next, create a cycle manually, add two existing cases, run one as failed, and inspect the linked Jira defect. The tool's value is strongest when the team uses those relationships consistently, not merely when the menu is inside Jira.
6. Xray: Jira Issue Workflow and Requirement Coverage
Xray Cloud is a strong candidate when Jira issue types are already the common language for planning, permissions, reporting, and audit. A Test, Test Plan, and Test Execution can participate in Jira's issue workflows. The test-specific run data lives in Xray, while Jira issue keys give stakeholders familiar references. Xray also accepts automated results through formats such as JUnit and native Xray JSON, so a CI build can contribute to the same coverage story as manual work.
For a read-only pilot, authenticate with a client ID and secret created in Xray Global Settings, then query a small page of Tests. authenticate returns a JSON string token, so jq -r '.' removes its JSON quotes. Use the API base URL appropriate for your Xray Cloud region.
: "${XRAY_API_BASE:?Set your Xray Cloud /api/v2 base URL}"
: "${XRAY_CLIENT_ID:?Set the Xray client ID}"
: "${XRAY_CLIENT_SECRET:?Set the Xray client secret}"
: "${JIRA_PROJECT_KEY:?Set a Jira project key}"
XRAY_TOKEN=$(jq -n \
--arg id "$XRAY_CLIENT_ID" --arg secret "$XRAY_CLIENT_SECRET" \
'{client_id: $id, client_secret: $secret}' \
| curl --fail-with-body --silent --show-error \
--header 'Content-Type: application/json' \
--data-binary @- "$XRAY_API_BASE/authenticate" | jq -r '.')
jq -n --arg key "$JIRA_PROJECT_KEY" \
'{query: ("{ getTests(jql: \"project = " + $key + "\", limit: 5) { total results { issueId jira(fields: [\"key\", \"summary\"]) testType { name } } } }")}' \
| curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $XRAY_TOKEN" \
--header 'Content-Type: application/json' \
--data-binary @- "$XRAY_API_BASE/graphql" \
| jq '{errors, tests: .data.getTests.results}'
Verify that errors is null and that returned Jira keys are from the selected project. If the query succeeds but returns no tests, check that the project has the Xray Test issue type and the API user can browse it. A team choosing Xray should budget time to set up issue type schemes, coverage rules, and conventions for Test Plans versus Test Sets. Jira fluency does not automatically make those distinctions obvious.
7. Run a Common Pilot From Case to Defect
Use one acceptance criterion that can fail in a meaningful way: "A declined card leaves the order unpaid and shows a retry action." Start from writing test cases from requirements, then create a happy-path case, a decline case, and a duplicate-submit case in each product. Include test data boundaries such as the payment response type and expected order state. Avoid live payment credentials in the case body.
Create a release container appropriate to each tool: TestRail run or plan, Zephyr cycle or plan, Xray Test Execution or Test Plan. Execute the decline case in a staging environment, attach a sanitized screenshot or log, and link a Jira defect. Record who can see that evidence and whether the defect can be traced back to the requirement. Then fix the staged behavior, rerun the same case, and confirm that both the failure and retest remain understandable.
Check coverage from two directions. From the story, find its tests and latest outcomes. From a failed test, find its story and defect. A summary that only counts passed cases can mask an uncovered requirement or a case that never entered the release run. Use test coverage techniques to distinguish requirement coverage from execution progress.
A valid comparison result is a short evidence log: task, expected artifact, actual artifact, time, and blocker. If one product needs a custom field or add-on to complete the scenario, record the configuration. Repeat the pilot with a second team member; their independent path will expose undocumented tribal knowledge.
8. Evaluate Manual Execution Under Real Constraints
Ask a tester to run the same three cases on two environments without overwriting the first result. Review how each tool displays preconditions, individual steps, expected results, actual results, evidence, and assignment. Step-level evidence may matter to a regulated team; a lightweight smoke suite might only need a case-level status and comment. Make that requirement explicit before ranking interfaces.
Check what happens when a case is edited between executions. Does the team understand which definition produced an older result? Can a reviewer tell whether a failure came from the product, test data, or environment? Establish entry and exit criteria before the trial so an attractive dashboard does not replace an actual release decision. For example, a release can require all payment-critical cases to be executed, with no unresolved critical defect, while allowing documented low-risk omissions.
Finally, ask how exploratory findings enter the system. A rigid case repository can discourage useful unscripted work if the team has no lightweight route for session notes and follow-up cases. The best fit supports your manual workflow without forcing every observation into a prewritten step.
9. Compare CI Result Ingestion and Identity Mapping
Automation integration is more than a green CI badge. Decide how an automated test maps to a durable test case, where a result goes when a case is renamed, and whether retries create duplicate executions. TestRail can accept results through its API; Zephyr Cloud exposes automation result endpoints and integrations; Xray Cloud documents REST imports for JUnit and other formats. Run a single failing automated check through each candidate, then inspect the case, execution, build reference, and failure message in the UI.
Keep credentials in the CI secret store and give the uploader only the access it needs. Preserve the build ID, commit, environment, and report artifact so a reader can reproduce the failure. Follow the same naming convention for test identities across reruns; otherwise an import may create a new case instead of updating the intended one. The test automation CI/CD guide covers the pipeline decisions that sit outside the management tool.
If your automation already emits JUnit XML, test the vendor's documented importer with that exact file. Do not infer support for every custom property in your reporter. Inspect the created execution and confirm failures, skipped tests, durations, and attachments are represented as your release process needs. Treat manual and automated outcomes as separate evidence until the product's consolidation rule is clear.
10. Trace Requirements, Tests, and Defects
Traceability should answer a concrete question: "Which payment requirements lack an executed test for this release?" TestRail can report coverage through case references when the Jira integration is configured. Zephyr links its test objects with Jira issues and provides planning and reporting views. Xray uses Jira issues for Tests and related planning objects, allowing Jira-centric discovery alongside Xray coverage features. None of these models repairs bad links or vague requirements automatically.
Choose one source of truth for requirement IDs. Require every release-critical case to reference a story or requirement, and every failed execution needing a code change to link a defect. Sample ten rows from the coverage report and open the underlying objects. Compare the report's status with the actual environment and execution date. A "covered" requirement might only have a drafted case, while an old pass may belong to a different build.
Use defect triage process to assign ownership when a failure spans application, test data, and infrastructure. The test management tool should preserve the evidence and relationship, while triage determines the action. This distinction keeps dashboards honest when results are blocked or inconclusive.
11. Plan Migration as a Data-Mapping Project
Before importing a legacy repository, export a representative sample: cases with rich steps, attachments, parameters, custom fields, requirement links, and historical results. Make a mapping table from source field to destination field. Mark fields that have no direct destination, plus the proposed archive or transformation. Keep original IDs in a dedicated field or export manifest so reviewers can resolve old links.
Pilot the import with one suite, not the whole organization. Count cases before and after, inspect step order, verify Unicode and attachments, and open several random references. Test whether reusable steps and cross-project cases remain reusable. If you migrate from Zephyr Squad to Scale, account for the documented difference between Jira issue cases and Zephyr-owned objects. If you migrate into Xray, plan Jira issue type schemes and permissions before creating Test issues at scale.
Historical execution data may require a separate migration strategy from current test definitions. A clean case import can still lose evidence of what was run on a previous release. Decide whether old results need to be live in the new tool or can remain in a read-only archive. Record that decision with compliance and support stakeholders rather than discovering it during an audit.
12. Check Permissions, Security, and Data Residency
List distinct roles: repository editor, manual executor, automation uploader, release reviewer, and administrator. In each candidate, try to prevent an uploader from changing case definitions while still allowing it to submit results. Check whether a viewer can open attached screenshots and logs. Test permission boundaries using real accounts rather than an administrator session.
Treat attachments as potential customer data. Use synthetic or masked records in screenshots, redact tokens from logs, and set a retention policy for execution evidence. Review the vendor's current hosting and residency documentation against your organization's requirement, because those offerings can vary by plan and region. Xray Cloud's API base URL can be region-specific; configure it as an environment variable rather than hard-coding a global host in every script.
Track key ownership and rotation. TestRail keys are associated with a user; Zephyr Cloud and Xray Cloud have their own token models. Document what happens when a service account leaves, a key expires, or a CI secret is rotated. A good procurement choice should survive normal credential maintenance without silently stopping result uploads.
13. Judge Reporting With Questions, Not Chart Count
Bring three release questions to the pilot: What failed since the last build? Which high-risk requirements have no passing execution in the target environment? Which defects block exit criteria? Attempt to answer each without exporting to a spreadsheet. If an answer requires a saved filter, document who maintains it and whether reviewers can reproduce it.
Keep denominators precise. "90% passed" is ambiguous if ten percent of cases were never run, if blocked cases were excluded, or if the suite changed during the release. Ask for totals by planned, executed, passed, failed, blocked, and untested, then verify a few raw rows. Compare historical trend views only when they use the same case scope. Use test case prioritization to mark high-impact cases so a release report can distinguish missing critical coverage from low-risk backlog.
Consider export quality as part of reporting. A stakeholder may need a CSV, PDF, Jira dashboard, or API feed. Test the exact downstream format your team uses and check whether custom fields, evidence links, and environment appear. Screenshots of vendor dashboards do not establish that your reporting handoff works.
14. Estimate Total Cost of Ownership
Do not decide from a headline license price alone. Request current quotes for your user mix and required features; published prices, packaging, and discounts can change. Add implementation time for Jira configuration, case migration, API integration, training, and ongoing administration. Include the cost of users who only review reports or execute cases if the contract distinguishes those roles.
A simple model is annual subscription plus one-time migration effort plus recurring administration and integration effort. Estimate effort in engineer days using your own pilot measurements. For example, if a manual result takes several extra minutes because the tester crosses applications, multiply that measured difference by the number of executions you actually expect. Treat the result as an internal scenario, not a vendor performance claim.
The costliest failure is often rework after a rushed import: broken requirement links, duplicate cases, or missing execution history. Reserve time for validation and a rollback plan. Procurement should ask for export terms and access to data if the team later changes products.
Which Should You Choose
Choose TestRail if QA needs an independent operating space, the organization uses more than one issue tracker, or the team values a dedicated run and case repository. Validate the Jira integration and cross-application review workflow with the people who will use it daily.
Choose Zephyr Scale Cloud if your work is already in Jira Cloud and your team wants a Zephyr-owned repository with cycles, plans, and folders. Verify the exact Zephyr edition, the Cloud API token, and any migration path from Squad or another tool.
Choose Xray Cloud if tests as Jira issues fit your governance model and requirement coverage must be visible through Jira-centric planning. Test issue type administration, JQL conventions, Xray API authentication, and automated result imports before expanding the rollout.
If two tools score closely, prefer the one that lets a new tester complete the end-to-end pilot with fewer undocumented decisions. A trial should end with actual artifacts: one case library, one release execution, one failed result, one linked defect, one retest, and one credible coverage report. Those artifacts make a defensible decision possible.
Interview Questions and Answers
A hiring manager may ask you to justify a test management choice, explain the difference between a case and an execution, or describe how you prevent duplicate automated tests. Prepare answers from a real pilot: name the data model, show the traceability path, and discuss permissions and migration. The model answers in interviewQnA below can be used as a practice checklist. For broader preparation, try QA interview practice with a decision you have actually made.
Common Mistakes
- Comparing different editions. Zephyr Scale Cloud, Zephyr Squad, and server products can expose different objects and APIs. Confirm the exact listing and tenant before testing a feature.
- Equating Jira integration with Jira issue storage. TestRail links Jira issues, Zephyr Scale Cloud owns test objects, and Xray uses Jira issue types for key artifacts. These choices affect governance and migration.
- Importing the entire library first. A small sample reveals broken step order, attachments, permissions, and reference mappings while rollback is still manageable.
- Reporting pass rate without scope. Include planned and unrun cases, environment, build, and date so the number can support a release decision.
- Letting CI create duplicate tests. Agree on stable automation identities and inspect the destination after every format or naming change.
- Embedding credentials in examples or case data. Use environment variables and secret storage; sanitize logs and screenshots before attaching them.
- Skipping a retest. A failed result alone does not show whether history, defect linkage, and later passing evidence remain understandable.
Conclusion
The TestRail vs Zephyr vs Xray decision becomes clearer when you compare the same release workflow in all three systems. TestRail favors a dedicated QA workspace, Zephyr Scale Cloud offers a Jira-adjacent repository, and Xray Cloud centers tests on Jira issues. Run the small pilot, score observable work, validate exports and permissions, then choose the model your team can maintain. If your case library needs cleanup first, begin with a test case review checklist.
Interview Questions and Answers
How would you choose between TestRail, Zephyr Scale, and Xray?
I would first confirm the hosting model and edition, then run the same release scenario in each tool. I would measure case authoring, execution, requirement-to-defect traceability, CI import, permissions, and export. The final choice would follow the team's weighted criteria rather than a generic feature count.
What is the main data-model difference among these tools?
TestRail stores cases and runs in its own application and links to Jira. Zephyr Scale Cloud stores test cases as Zephyr objects connected to Jira projects. Xray Cloud uses Jira issue types for Tests, Test Plans, and Test Executions, with test run details managed by Xray.
How do you prevent an automated import from creating duplicate cases?
I define a stable mapping between each automated check and its managed test identity. I verify the importer's matching rules with a single report before uploading an entire suite. After a rename or reporter change, I inspect the destination for duplicates and preserve build metadata.
How would you validate a requirements coverage report?
I would sample requirement rows and open the linked tests and executions. I would distinguish drafted cases from cases actually run on the target build and environment. I would also check missing requirements and blocked tests so the denominator is explicit.
What would you check before migrating a case library?
I would map steps, expected results, attachments, custom fields, owners, requirement links, and original IDs. I would import a representative suite, compare counts and step order, and inspect historical evidence. I would keep a rollback path until reviewers accept the mapped records.
Why might a Jira-first team still choose TestRail?
A dedicated QA workspace can be useful when testing spans multiple issue trackers or products. TestRail can still link Jira requirements and defects through its integration. I would confirm that context switching and report access are acceptable for the actual users.
What is the difference between an Xray Test Plan and Test Execution?
A Test Plan defines the set of Tests whose results should be tracked for a target. A Test Execution records runs of selected Tests in a particular context, such as a build or environment. Several executions can contribute results to one plan.
What security risks do you review in test management integrations?
I check whether uploader credentials can edit case definitions, whether evidence attachments expose customer data, and whether API keys are owned by maintainable service accounts. I keep keys in CI secret storage and test rotation. I also review access to exports and regional hosting requirements.
Frequently Asked Questions
Is TestRail better than Zephyr for Jira teams?
It depends on where testers should work. TestRail provides a separate case and run workspace with Jira links, while Zephyr Scale Cloud keeps planning and execution inside a Jira-centered experience. Pilot a story-to-defect workflow in both before choosing.
Are Zephyr Scale test cases Jira issues?
In Zephyr Scale Cloud, test cases are Zephyr objects associated with Jira projects. This differs from Zephyr Squad and from Xray, where a Test is a Jira issue type. Check the exact SmartBear edition before planning migration or API work.
Does Xray Cloud support automated test results?
Yes. Xray Cloud documents REST endpoints for importing formats including JUnit and native Xray JSON. Verify how your existing report maps to Tests and Test Executions, including retries, skipped results, and evidence.
Can TestRail link tests to Jira requirements and defects?
Yes, after the Jira integration is configured, Jira issues can be linked as references or defects on relevant TestRail artifacts. Review coverage from the requirement and execution sides to confirm that the links support your release report.
Which tool is easiest to migrate to?
There is no universal answer. Difficulty depends on the source schema, attachments, reusable steps, custom fields, IDs, and historical results. Import one representative suite, compare counts and links, and decide how old execution evidence will be retained.
What should a test management pilot include?
Use a requirement with several cases, execute a failure, attach safe evidence, link a defect, retest, and inspect coverage. Add one CI result and an export. Record time, permissions, and manual reconciliation for each product.
Can I use the same API script for Zephyr and Xray?
No. Zephyr Scale Cloud has its own REST API and bearer token, while Xray Cloud uses client credentials to obtain a token for REST and GraphQL. Their test entities and result payloads also differ, so create separate adapters.