Xcode-ის ტესტების ანალიტიკა
Tuist Test Insights გაძლევთ Xcode-ის ტესტების ანალიტიკას, რათა მონიტორინგი გაუწიოთ თქვენი სატესტო ნაკრების ჯანმრთელობას ნელი ტესტების იდენტიფიცირებით ან CI-ს ჩავარდნილი გაშვებების სწრაფად გაგებით. როგორც კი თქვენი სატესტო ნაკრები იზრდება, სულ უფრო რთული ხდება ისეთი ტენდენციების აღმოჩენა, როგორიცაა თანდათანობითი შენელება ან პერიოდული შეცდომები. Tuist Test Insights გთავაზობთ საჭირო ხილვადობას, რათა შეინარჩუნოთ სწრაფი და საიმედო სატესტო ნაკრები.
Test Insights-ის საშუალებით შეგიძლიათ უპასუხოთ ისეთ კითხვებს, როგორიცაა:
- გახდა ჩემი ტესტები უფრო ნელი? რომელი ერთები?
- რომელი ტესტებია არასტაბილური და მოითხოვს ყურადღებას?
- რატომ ჩავარდა ჩემი CI-ს გაშვება?
მოწყობა#
ტესტების თვალყურის დევნის დასაწყებად, შეგიძლიათ გამოიყენოთ tuist inspect test ბრძანება მისი სქემის ტესტის post-action-ში დამატებით:

თუ იყენებთ Mise-ს, თქვენს სკრიპტს დასჭირდება tuist-ის აქტივაცია post-action გარემოში:
# -C ensures that Mise loads the configuration from the Mise configuration
# file in the project's root directory.
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect test
თქვენი გარემოს PATH გარემოს ცვლადი არ გადაეცემა სქემის post-action-ს და ამიტომ უნდა გამოიყენოთ Mise-ის აბსოლუტური გზა, რაც დამოკიდებული იქნება იმაზე, თუ როგორ დააინსტალირეთ Mise. ასევე, არ დაგავიწყდეთ ააწყოთ build პარამეტრები თქვენი პროექტის სამიზნიდან (target), რათა შეძლოთ Mise-ის გაშვება $SRCROOT-ით მითითებული დირექტორიიდან.
თქვენი ტესტების გაშვებები ახლა თვალყურს ედევნება, სანამ თქვენ შესული ხართ თქვენს Tuist ანგარიშზე. შეგიძლიათ მიუწვდეთ თქვენს ტესტების ანალიტიკას Tuist-ის დაშბორდზე და ნახოთ, როგორ იცვლება ისინი დროთა განმავლობაში:

ზოგადი ტენდენციების გარდა, შეგიძლიათ ღრმად ჩაუღრმავდეთ თითოეულ ინდივიდუალურ ტესტს, მაგალითად, CI-ზე შეცდომების ან ნელი ტესტების დებაგინგისას:

გენერირებული პროექტები#
ავტომატურად გენერირებული სქემები ავტომატურად შეიცავს tuist inspect test post-action-ს.
თუ არ გაინტერესებთ ტესტების ანალიტიკის თვალყურის დევნა თქვენს ავტომატურად გენერირებულ სქემებში, გამორთეთ ისინი testInsightsDisabled გენერაციის პარამეტრის გამოყენებით.
თუ იყენებთ გენერირებულ პროექტებს მორგებული სქემებით, შეგიძლიათ დააყენოთ post-actions ტესტების ანალიტიკისთვის:
let project = Project(
name: "MyProject",
targets: [
// Your targets
],
schemes: [
.scheme(
name: "MyApp",
shared: true,
buildAction: .buildAction(targets: ["MyApp"]),
testAction: .testAction(
targets: ["MyAppTests"],
postActions: [
// Test insights: Track test duration and flakiness
.executionAction(
title: "Inspect Test",
scriptText: """
$HOME/.local/bin/mise x -C $SRCROOT -- tuist inspect test
""",
target: "MyAppTests"
)
]
),
runAction: .runAction(configuration: "Debug")
)
]
)
თუ არ იყენებთ Mise-ს, თქვენი სკრიპტები შეიძლება გაამარტივოთ შემდეგნაირად:
testAction: .testAction(
targets: ["MyAppTests"],
postActions: [
.executionAction(
title: "Inspect Test",
scriptText: "tuist inspect test"
)
]
)
უწყვეტი ინტეგრაცია#
CI-ზე ტესტების ანალიტიკის თვალყურის დევნისთვის, უნდა დარწმუნდეთ, რომ თქვენი CI არის ავტორიზებული.
დამატებით, დაგჭირდებათ ერთ-ერთი შემდეგი:
- გამოიყენეთ
tuist xcodebuildბრძანებაxcodebuildქმედებების გამოძახებისას. - დაამატეთ
-resultBundlePathთქვენსxcodebuildგამოძახებას.
როდესაც xcodebuild ამოწმებს თქვენს პროექტს -resultBundlePath-ის გარეშე, საჭირო შედეგების bundle ფაილები არ გენერირდება. tuist inspect test post-action-ს ეს ფაილები სჭირდება თქვენი ტესტების ანალიზისთვის.
Git-ის ისტორია#
CI-ზე, Tuist ასევე ატვირთავს checkout-ის კომიტების ისტორიას: კომიტების SHA-ებს, მათ მშობლებს, კომიტების თარიღებს და იმ branch-ს, რომელზეც იყო გაშვება და მისი pull request-ის base branch. არ აიტვირთება ფაილების შინაარსი, კომიტების შეტყობინებები ან ავტორები. ეს აწვდის Tuist-ს, თუ რომელი კომიტები მოხვდა თქვენს default branch-ზე, მაგალითად, ისინი, რომლებიც merge queue-მ შეამოწმა. Tuist კითხულობს ისტორიას, რომელიც checkout-ს უკვე აქვს და როდესაც checkout-ს არ აქვს base branch, ითხოვს remote-დან მის უახლეს კომიტს (git ls-remote). კოდის დაფარვის (code coverage) გარდა, ის არ იღებს ისტორიას.
| ცვლადი | ეფექტი |
|---|---|
TUIST_GIT_UPLOAD_ENABLED=false | არ კითხულობს და არ ტვირთავს Git-ის რაიმე ისტორიას. |
TUIST_GIT_UNSHALLOW_ENABLED=false | კითხულობს მხოლოდ checkout-ს, remote-თან დაკავშირების გარეშე. |