

Amazon CodeCatalyst tidak lagi terbuka untuk pelanggan baru. Pelanggan yang sudah ada dapat terus menggunakan layanan ini seperti biasa. Lihat informasi yang lebih lengkap di [Cara bermigrasi dari CodeCatalyst](migration.md).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Pengujian dengan alur kerja
<a name="test-workflow-actions"></a>

Di CodeCatalyst, Anda dapat menjalankan pengujian sebagai bagian dari tindakan alur kerja yang berbeda, seperti build dan test. Tindakan alur kerja ini semuanya dapat menghasilkan laporan berkualitas. *Tindakan uji adalah tindakan* alur kerja yang menghasilkan pengujian, cakupan kode, analisis komposisi perangkat lunak, dan laporan analisis statis. Laporan ini ditampilkan di CodeCatalyst konsol.

**Topics**
+ [Jenis laporan kualitas](#test-reporting)
+ [Menambahkan tindakan pengujian](test-add-action.md)
+ [Melihat hasil tindakan uji](test-view-results.md)
+ [Melewatkan tes yang gagal dalam suatu tindakan](test.error-handling.md)
+ [Integrasi dengan universal-test-runner](test.universal-test-runner.md)
+ [Mengkonfigurasi laporan kualitas dalam suatu tindakan](test-config-action.md)
+ [Praktik terbaik untuk pengujian](test-best-practices.md)
+ [Properti SARIF yang didukung](test.sarif.md)

## Jenis laporan kualitas
<a name="test-reporting"></a>

Tindakan CodeCatalyst pengujian Amazon mendukung jenis laporan kualitas berikut. Untuk contoh tentang cara memformat laporan ini di YAMAL Anda, lihat[Contoh laporan kualitas YAMAL](test-config-action.md#test.success-criteria-example).

**Topics**
+ [Laporan pengujian](#test-reports)
+ [Laporan cakupan kode](#test-code-coverage-reports)
+ [Laporan analisis komposisi perangkat lunak](#test-sca-reports)
+ [Laporan analisis statis](#test-static-analysis-reports)

### Laporan pengujian
<a name="test-reports"></a>

Di CodeCatalyst, Anda dapat mengonfigurasi pengujian unit, pengujian integrasi, dan pengujian sistem yang berjalan selama build. Kemudian CodeCatalyst dapat membuat laporan yang berisi hasil tes Anda.

Anda dapat menggunakan laporan pengujian untuk membantu memecahkan masalah dengan pengujian Anda. Jika memiliki banyak laporan pengujian dari beberapa build, Anda dapat menggunakan laporan pengujian untuk melihat tingkat kegagalan guna membantu mengoptimalkan build.

Anda dapat menggunakan format file laporan pengujian berikut:
+ Mentimun JSON (.json)
+ JUnit XML (.xml)
+ NUnit XML (.xml)
+ NUnit3 XML (.xml)
+ TestNG XML (.xml)
+ Studio Visual TRX (.trx, .xml)

### Laporan cakupan kode
<a name="test-code-coverage-reports"></a>

Di CodeCatalyst, Anda dapat membuat laporan cakupan kode untuk pengujian Anda. CodeCatalyst menyediakan metrik cakupan kode berikut:

Cakupan baris  
Mengukur berapa banyak pernyataan yang dicakup tes Anda. Pernyataan adalah instruksi tunggal, tidak termasuk komentar.  
`line coverage = (total lines covered)/(total number of lines)`

Cakupan cabang  
Mengukur berapa banyak cabang yang dicakup pengujian Anda dari setiap cabang yang mungkin dari struktur kontrol seperti `case` pernyataan `if` atau pernyataan.  
`branch coverage = (total branches covered)/(total number of branches)`

Berikut format file laporan cakupan kode yang didukung:
+ JaCoCo XML (.xml)
+ SimpleCov JSON (dihasilkan oleh [simplecov, bukan [simplecov-json](https://github.com/vicentllongo/simplecov-json)](https://github.com/simplecov-ruby/simplecov), .json)
+ XHTML semanggi (versi 3, .xml.)
+ XML (.xml)
+ LCOV (.info)

### Laporan analisis komposisi perangkat lunak
<a name="test-sca-reports"></a>

Di CodeCatalyst, Anda dapat menggunakan alat analisis komposisi perangkat lunak (SCA) untuk menganalisis komponen aplikasi Anda dan memeriksa kerentanan keamanan yang diketahui. Anda dapat menemukan dan mengurai laporan SARIF yang merinci kerentanan dengan berbagai tingkat keparahan dan cara untuk memperbaikinya. Nilai keparahan yang valid, dari yang paling parah hingga yang paling parah, adalah:`CRITICAL`,`HIGH`,`MEDIUM`,,`LOW`,`INFORMATIONAL`.

Format file laporan SCA berikut didukung:
+ SARIF (.sarif, .json)

### Laporan analisis statis
<a name="test-static-analysis-reports"></a>

Anda dapat menggunakan laporan analisis statis (SA) untuk mengidentifikasi cacat kode tingkat sumber. Di CodeCatalyst, Anda dapat membuat laporan SA untuk membantu menyelesaikan masalah dalam kode Anda sebelum Anda menerapkannya. Masalah ini termasuk bug, kerentanan keamanan, masalah kualitas, dan kerentanan lainnya. Nilai keparahan yang valid, dari yang paling parah hingga yang paling parah, adalah: `CRITICAL``HIGH`,`MEDIUM`,`LOW`,, dan`INFORMATIONAL`.

CodeCatalyst menyediakan metrik SA berikut:

Bug  
Mengidentifikasi sejumlah kemungkinan bug yang ditemukan dalam kode sumber Anda. Bug ini dapat mencakup masalah terkait keamanan memori. Berikut ini adalah contoh bug.  

```
// The while loop will inadvertently index into array x out-of-bounds
int x[64];
while (int n = 0; n <= 64; n++) {
  x[n] = 0;
}
```

Kerentanan keamanan  
Mengidentifikasi sejumlah kemungkinan kerentanan keamanan yang ditemukan dalam kode sumber Anda. Kerentanan keamanan ini dapat mencakup masalah seperti menyimpan token rahasia Anda dalam teks biasa.

Masalah kualitas  
Mengidentifikasi sejumlah kemungkinan masalah kualitas yang ditemukan dalam kode sumber Anda. Masalah kualitas ini dapat mencakup masalah mengenai konvensi gaya. Berikut ini adalah contoh masalah kualitas.  

```
// The function name doesn't adhere to the style convention of camelCase
int SUBTRACT(int x, int y) {
  return x-y
}
```

Kerentanan lainnya  
Mengidentifikasi sejumlah kemungkinan kerentanan lain yang ditemukan dalam kode sumber Anda.

CodeCatalyst mendukung format file laporan SA berikut:
+ PyLint (.py)
+ ESLint (.js, .jsx, .ts, .tsx)
+ SARIF (.sarif, .json)

# Menambahkan tindakan pengujian
<a name="test-add-action"></a>

Gunakan prosedur berikut untuk menambahkan tindakan pengujian ke CodeCatalyst alur kerja Anda. 

------
#### [ Visual ]

**Untuk menambahkan tindakan pengujian menggunakan editor visual**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Pilih **Tindakan**.

1. Dalam **Tindakan**, pilih **Uji**. 

1. Pada tab **Input** dan **Konfigurasi**, lengkapi bidang sesuai dengan kebutuhan Anda. Untuk deskripsi setiap bidang, lihat[Membangun dan menguji tindakan YAMB](build-action-ref.md). Referensi ini memberikan informasi rinci tentang setiap bidang (dan nilai properti YAMAL yang sesuai) seperti yang muncul di YAMAL dan editor visual.

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------
#### [ YAML ]

**Untuk menambahkan tindakan build menggunakan editor YAMAL**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Pilih **Tindakan**.

1. Dalam **Tindakan**, pilih **Uji**.

1. Ubah properti dalam kode YAMAL sesuai dengan kebutuhan Anda. Penjelasan tentang setiap properti yang tersedia disediakan di[Membangun dan menguji tindakan YAMB](build-action-ref.md).

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMAL alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------

## Definisi tindakan uji
<a name="test-add-action-definition"></a>

Tindakan pengujian didefinisikan sebagai sekumpulan properti YAMAL di dalam file definisi alur kerja Anda. Untuk informasi tentang properti ini, lihat [Membangun dan menguji tindakan YAMB](build-action-ref.md) di[Alur kerja definisi YAMAL](workflow-reference.md).

# Melihat hasil tindakan uji
<a name="test-view-results"></a>

Gunakan petunjuk berikut untuk melihat hasil tindakan pengujian, termasuk log, laporan, dan variabel yang dihasilkan.

**Untuk melihat hasil tindakan uji**

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Dalam diagram alur kerja, pilih nama tindakan pengujian Anda, misalnya, **Uji**.

1. Untuk melihat log yang dihasilkan oleh tindakan, pilih **Log**. Log untuk berbagai fase tindakan ditampilkan. Anda dapat memperluas atau menciutkan log sesuai kebutuhan.

1. Untuk melihat laporan pengujian yang dihasilkan oleh tindakan pengujian, pilih **Laporan**, atau di panel navigasi, pilih **Laporan**. Untuk informasi selengkapnya, lihat [Jenis laporan kualitas](test-workflow-actions.md#test-reporting).

1. Untuk melihat konfigurasi yang digunakan untuk tindakan pengujian, pilih **Konfigurasi**. Untuk informasi selengkapnya, lihat [Menambahkan tindakan pengujian](test-add-action.md).

1. Untuk melihat variabel yang digunakan oleh tindakan pengujian, pilih **Variabel**. Lihat informasi yang lebih lengkap di [Menggunakan variabel dalam alur kerja](workflows-working-with-variables.md).

# Melewatkan tes yang gagal dalam suatu tindakan
<a name="test.error-handling"></a>

Jika tindakan Anda memiliki lebih dari satu perintah pengujian, Anda mungkin ingin mengizinkan perintah pengujian berikutnya dalam tindakan untuk dijalankan meskipun perintah sebelumnya gagal. Misalnya, dalam perintah berikut, Anda mungkin `test2` ingin menjalankan selalu, bahkan jika `test1` gagal.

```
Steps:
- Run: npm install
- Run: npm run test1
- Run: npm run test2
```

Biasanya, ketika sebuah langkah mengembalikan kesalahan, Amazon CodeCatalyst menghentikan tindakan alur kerja dan menandainya sebagai gagal. Anda dapat mengizinkan langkah-langkah tindakan untuk terus berjalan dengan mengarahkan output kesalahan ke. `null` Anda dapat melakukan ini dengan `2>/dev/null` menambahkan perintah. Dengan modifikasi ini, contoh sebelumnya akan terlihat seperti berikut.

```
Steps:
- Run: npm install
- Run: npm run test1 2>/dev/null
- Run: npm run test2
```

Dalam cuplikan kode kedua, status `npm install` perintah akan dihormati, tetapi kesalahan apa pun yang dikembalikan oleh `npm run test1` perintah akan diabaikan. Akibatnya `npm run test2` perintah dijalankan. Dengan melakukan ini, Anda dapat melihat kedua laporan sekaligus terlepas dari apakah terjadi kesalahan.

# Integrasi dengan universal-test-runner
<a name="test.universal-test-runner"></a>

Tindakan uji terintegrasi dengan alat `universal-test-runner` baris perintah sumber terbuka. `universal-test-runner`menggunakan [Protokol Eksekusi Uji](https://github.com/aws/universal-test-runner/blob/main/protocol/README.md) untuk menjalankan pengujian Anda untuk bahasa apa pun dalam kerangka kerja tertentu. `universal-test-runner`mendukung kerangka kerja berikut:
+ [Gradle](https://gradle.org/)
+ [Lelucon](https://jestjs.io/)
+ [Maven](https://maven.apache.org/)
+ [pytest](https://pytest.org)
+ [.NET](https://learn.microsoft.com/en-us/dotnet/core/tools/)

`universal-test-runner` diinstal hanya pada image yang dikurasi untuk tindakan pengujian. Jika Anda mengonfigurasi tindakan pengujian untuk menggunakan Docker Hub kustom atau Amazon ECR, Anda harus menginstal `universal-test-runner` secara manual untuk mengaktifkan fitur pengujian lanjutan. Untuk melakukannya, instal Node.js (14 atau lebih tinggi) pada image, lalu instal `universal-test-runner` melalui `npm` menggunakan perintah shell `- Run: npm install -g @aws/universal-test-runner`. Untuk informasi selengkapnya tentang menginstal Node.js di container Anda melalui perintah shell, lihat [Menginstal dan Memperbarui Node Version Manager](https://github.com/nvm-sh/nvm#install--update-script).

Untuk informasi selengkapnya tentang `universal-test-runner`, lihat [Apa itu universal-test-runner?](https://github.com/aws/universal-test-runner#-what-is-universal-test-runner)

------
#### [ Visual ]

**Untuk digunakan universal-test-runner dalam editor visual**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Pilih **Tindakan**.

1. Dalam **Tindakan**, pilih **Uji**. 

1. Pada tab **Konfigurasi**, lengkapi bidang **perintah Shell** dengan memperbarui kode sampel dengan kerangka kerja yang didukung pilihan Anda. Misalnya, untuk menggunakan kerangka kerja yang didukung, Anda akan menggunakan `Run` perintah yang mirip dengan berikut ini.

   ```
   - Run: run-tests <framework>
   ```

   Jika kerangka kerja yang Anda inginkan tidak didukung, pertimbangkan untuk mengontribusikan runner atau adaptor kustom. Untuk deskripsi bidang **perintah Shell**, lihat[Steps](build-action-ref.md#build.configuration.steps).

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMM alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------
#### [ YAML ]

**Untuk digunakan universal-test-runner di editor YAMM**

1. Buka CodeCatalyst konsol di [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih nama alur kerja Anda.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Pilih **Tindakan**.

1. Dalam **Tindakan**, pilih **Uji**.

1. Ubah kode YAMM sesuai dengan kebutuhan Anda. Misalnya, untuk menggunakan kerangka kerja yang didukung, Anda akan menggunakan `Run` perintah yang mirip dengan berikut ini.

   ```
   Configuration:
     Steps:
       - Run: run-tests <framework>
   ```

   Jika kerangka kerja yang Anda inginkan tidak didukung, pertimbangkan untuk mengontribusikan runner atau adaptor kustom. Untuk deskripsi properti **Steps**, lihat[Steps](build-action-ref.md#build.configuration.steps).

1. (Opsional) Pilih **Validasi** untuk memvalidasi kode YAMM alur kerja sebelum melakukan.

1. Pilih **Komit**, masukkan pesan komit, dan pilih **Komit** lagi.

------

# Mengkonfigurasi laporan kualitas dalam suatu tindakan
<a name="test-config-action"></a>

Bagian ini menjelaskan cara mengonfigurasi laporan kualitas dalam suatu tindakan.

**Topics**
+ [Penemuan otomatis dan laporan manual](#test.auto-discovery)
+ [Mengkonfigurasi kriteria keberhasilan untuk laporan](#test.success-criteria)
+ [Contoh laporan kualitas YAMAL](#test.success-criteria-example)

## Penemuan otomatis dan laporan manual
<a name="test.auto-discovery"></a>

Ketika penemuan otomatis diaktifkan, CodeCatalyst mencari semua input yang diteruskan ke tindakan, dan semua file yang dihasilkan oleh tindakan itu sendiri, mencari pengujian, cakupan kode, analisis komposisi perangkat lunak (SCA), dan laporan analisis statis (SA). Anda dapat melihat dan memanipulasi masing-masing laporan ini di CodeCatalyst.

Anda juga dapat mengonfigurasi laporan mana yang dihasilkan secara manual. Anda dapat menentukan jenis laporan yang ingin Anda hasilkan serta format file. Untuk informasi selengkapnya, lihat [Jenis laporan kualitas](test-workflow-actions.md#test-reporting).

## Mengkonfigurasi kriteria keberhasilan untuk laporan
<a name="test.success-criteria"></a>

Anda dapat mengatur nilai yang menentukan kriteria keberhasilan untuk pengujian, cakupan kode, analisis komposisi perangkat lunak (SCA), atau laporan analisis statis (SA).

Kriteria keberhasilan adalah ambang batas yang menentukan apakah laporan lolos atau gagal. CodeCatalyst pertama menghasilkan laporan Anda, yang dapat berupa pengujian, cakupan kode, SCA, atau laporan SA, dan kemudian menerapkan kriteria keberhasilan pada laporan yang dihasilkan. Ini kemudian menunjukkan apakah kriteria keberhasilan terpenuhi, dan sejauh mana. Jika ada laporan yang tidak memenuhi kriteria keberhasilan yang ditentukan, CodeCatalyst tindakan yang menentukan kriteria keberhasilan gagal.

Misalnya, ketika Anda menetapkan kriteria keberhasilan untuk laporan SCA Anda, nilai kerentanan yang valid mulai dari yang paling parah hingga yang paling tidak parah adalah:`CRITICAL`,,, `HIGH``MEDIUM`,`LOW`. `INFORMATIONAL` Jika Anda menetapkan kriteria untuk memindai satu kerentanan pada `HIGH` tingkat keparahan, laporan akan gagal jika ada setidaknya satu kerentanan pada `HIGH` tingkat keparahan atau tidak ada kerentanan pada tingkat `HIGH` keparahan, tetapi setidaknya satu kerentanan pada tingkat keparahan yang lebih tinggi, seperti satu kerentanan pada tingkat keparahan. `CRITICAL`

Jika Anda tidak menentukan kriteria keberhasilan, maka:
+  CodeCatalyst Laporan yang dihasilkan berdasarkan laporan mentah Anda tidak akan menampilkan kriteria keberhasilan.
+ Kriteria keberhasilan tidak akan digunakan untuk menentukan apakah tindakan alur kerja terkait lolos atau gagal.

------
#### [ Visual ]

**Untuk mengkonfigurasi kriteria keberhasilan**

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih alur kerja yang berisi tindakan yang menghasilkan laporan. Ini adalah laporan yang ingin Anda terapkan kriteria keberhasilannya. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **Visual**.

1. Dalam diagram alur kerja, pilih tindakan yang telah Anda konfigurasikan untuk menghasilkan CodeCatalyst laporan.

1. Pilih tab **Output**.

1. Di bawah **Auto-temukan laporan** atau di bawah **Konfigurasi laporan secara manual**, pilih **Kriteria sukses**.

   Kriteria keberhasilan muncul. Bergantung pada pilihan Anda sebelumnya, Anda mungkin melihat salah satu atau semua opsi ini:

   **Tingkat kelulusan**

   Tentukan persentase pengujian dalam laporan pengujian yang harus lulus agar CodeCatalyst laporan terkait ditandai sebagai lulus. Nilai yang valid termasuk angka desimal. Misalnya: `50`, `60.5`. Kriteria tingkat kelulusan hanya diterapkan pada laporan pengujian. Untuk informasi selengkapnya tentang laporan pengujian, lihat[Laporan pengujian](test-workflow-actions.md#test-reports).

   **Cakupan garis**

   Tentukan persentase baris dalam laporan cakupan kode yang harus dicakup agar CodeCatalyst laporan terkait ditandai sebagai lulus. Nilai yang valid termasuk angka desimal. Misalnya: `50`, `60.5`. Kriteria cakupan baris hanya diterapkan pada laporan cakupan kode. Untuk informasi selengkapnya tentang laporan cakupan kode, lihat[Laporan cakupan kode](test-workflow-actions.md#test-code-coverage-reports).

   **Cakupan cabang**

   Tentukan persentase cabang dalam laporan cakupan kode yang harus dicakup agar CodeCatalyst laporan terkait ditandai sebagai lulus. Nilai yang valid termasuk angka desimal. Misalnya: `50`, `60.5`. Kriteria cakupan cabang hanya diterapkan pada laporan cakupan kode. Untuk informasi selengkapnya tentang laporan cakupan kode, lihat[Laporan cakupan kode](test-workflow-actions.md#test-code-coverage-reports).

   **Kerentanan (SCA)**

   Tentukan jumlah maksimum dan tingkat keparahan kerentanan yang diizinkan dalam laporan SCA agar CodeCatalyst laporan terkait ditandai sebagai lulus. Untuk menentukan kerentanan, Anda harus menentukan:
   + Tingkat keparahan minimum kerentanan yang ingin Anda sertakan dalam hitungan. Nilai yang valid, dari yang paling parah hingga yang paling parah, adalah: `CRITICAL``HIGH`,`MEDIUM`,,`LOW`,`INFORMATIONAL`.

     Misalnya, jika Anda memilih`HIGH`, maka `HIGH` dan `CRITICAL` kerentanan akan dihitung.
   + Jumlah maksimum kerentanan dari tingkat keparahan yang ditentukan yang Anda inginkan memungkinkan. Melebihi angka ini menyebabkan CodeCatalyst laporan ditandai sebagai gagal. Nilai yang valid adalah bilangan bulat.

   Kriteria kerentanan hanya diterapkan pada laporan SCA. Untuk informasi lebih lanjut tentang laporan SCA, lihat[Laporan analisis komposisi perangkat lunak](test-workflow-actions.md#test-sca-reports).

   **Bug**

   Tentukan jumlah maksimum dan tingkat keparahan bug yang diizinkan dalam laporan SA agar CodeCatalyst laporan terkait ditandai sebagai lulus. Untuk menentukan bug, Anda harus menentukan:
   + Tingkat keparahan minimum bug yang ingin Anda sertakan dalam hitungan. Nilai yang valid, dari yang paling parah hingga yang paling parah, adalah: `CRITICAL``HIGH`,`MEDIUM`,,`LOW`,`INFORMATIONAL`.

     Misalnya, jika Anda memilih`HIGH`, maka `HIGH` dan `CRITICAL` bug akan dihitung.
   + Jumlah maksimum bug dari tingkat keparahan yang ditentukan yang Anda inginkan izin. Melebihi angka ini menyebabkan CodeCatalyst laporan ditandai sebagai gagal. Nilai yang valid adalah bilangan bulat.

   Kriteria bug hanya diterapkan pada PyLint dan laporan ESLint SA. Untuk informasi lebih lanjut tentang laporan SA, lihat[Laporan analisis statis](test-workflow-actions.md#test-static-analysis-reports).

   **Kerentanan keamanan**

   Tentukan jumlah maksimum dan tingkat keparahan kerentanan keamanan yang diizinkan dalam laporan SA agar CodeCatalyst laporan terkait ditandai sebagai lulus. Untuk menentukan kerentanan keamanan, Anda harus menentukan:
   + Tingkat keparahan minimum kerentanan keamanan yang ingin Anda sertakan dalam hitungan. Nilai yang valid, dari yang paling parah hingga yang paling parah, adalah: `CRITICAL``HIGH`,`MEDIUM`,,`LOW`,`INFORMATIONAL`.

     Misalnya, jika Anda memilih`HIGH`, maka `HIGH` dan kerentanan `CRITICAL` keamanan akan dihitung.
   + Jumlah maksimum kerentanan keamanan dari tingkat keparahan tertentu yang Anda inginkan memungkinkan. Melebihi angka ini menyebabkan CodeCatalyst laporan ditandai sebagai gagal. Nilai yang valid adalah bilangan bulat.

   Kriteria kerentanan keamanan hanya diterapkan pada PyLint dan laporan ESLint SA. Untuk informasi lebih lanjut tentang laporan SA, lihat[Laporan analisis statis](test-workflow-actions.md#test-static-analysis-reports).

   **Masalah kualitas**

   Tentukan jumlah maksimum dan tingkat keparahan masalah kualitas yang diizinkan dalam laporan SA agar CodeCatalyst laporan terkait ditandai sebagai lulus. Untuk menentukan masalah kualitas, Anda harus menentukan:
   + Tingkat keparahan minimum dari masalah kualitas yang ingin Anda sertakan dalam hitungan. Nilai yang valid, dari yang paling parah hingga yang paling parah, adalah: `CRITICAL``HIGH`,`MEDIUM`,,`LOW`,`INFORMATIONAL`.

     Misalnya, jika Anda memilih`HIGH`, maka `HIGH` dan masalah `CRITICAL` kualitas akan dihitung.
   + Jumlah maksimum masalah kualitas dari tingkat keparahan tertentu yang Anda inginkan izin. Melebihi angka ini menyebabkan CodeCatalyst laporan ditandai sebagai gagal. Nilai yang valid adalah bilangan bulat.

   Kriteria masalah kualitas hanya diterapkan pada PyLint dan laporan ESLint SA. Untuk informasi lebih lanjut tentang laporan SA, lihat[Laporan analisis statis](test-workflow-actions.md#test-static-analysis-reports).

1. Pilih **Terapkan**.

1. Jalankan alur kerja Anda agar CodeCatalyst menerapkan kriteria keberhasilan pada laporan mentah Anda, dan buat ulang CodeCatalyst laporan terkait dengan informasi kriteria keberhasilan yang disertakan. Untuk informasi selengkapnya, lihat [Memulai proses alur kerja secara manual](workflows-manually-start.md).

------
#### [ YAML ]

**Untuk mengkonfigurasi kriteria keberhasilan**

1. **Di panel navigasi, pilih **CI/CD, lalu pilih Alur** kerja.**

1. Pilih alur kerja yang berisi tindakan yang menghasilkan laporan. Ini adalah laporan yang ingin Anda terapkan kriteria keberhasilannya. Anda dapat memfilter berdasarkan repositori sumber atau nama cabang tempat alur kerja ditentukan, atau memfilter berdasarkan nama atau status alur kerja.

1. Pilih **Edit**.

1. Pilih **YAMAL.**

1. Dalam diagram alur kerja, pilih tindakan yang telah Anda konfigurasikan untuk menghasilkan CodeCatalyst laporan.

1. Di panel detail, pilih tab **Output**.

1. Dalam tindakan, di `AutoDiscoverReports` bagian, atau di `Reports` bagian, tambahkan **SuccessCriteria**properti, bersama dengan`PassRate`,,`LineCoverage`,`BranchCoverage`, `Vulnerabilities``StaticAnalysisBug`,`StaticAnalysisSecurity`, dan `StaticAnalysisQuality` properti.

   Untuk penjelasan masing-masing properti ini, konsultasikan dengan[Membangun dan menguji tindakan YAMB](build-action-ref.md).

1. Pilih **Terapkan**.

1. Jalankan alur kerja Anda agar CodeCatalyst menerapkan kriteria keberhasilan pada laporan mentah Anda, dan buat ulang CodeCatalyst laporan terkait dengan informasi kriteria keberhasilan yang disertakan. Untuk informasi selengkapnya tentang memulai alur kerja, lihat[Memulai proses alur kerja secara manual](workflows-manually-start.md).

------

## Contoh laporan kualitas YAMAL
<a name="test.success-criteria-example"></a>

 Contoh berikut menunjukkan cara mengonfigurasi empat laporan secara manual: laporan pengujian, laporan cakupan kode, laporan analisis komposisi perangkat lunak, dan laporan analisis statis.

```
Reports:
  MyTestReport:
    Format: JUNITXML
    IncludePaths:
      - "*.xml"
    ExcludePaths:
      - report1.xml
      SuccessCriteria:
        PassRate: 90
  MyCoverageReport:
    Format: CLOVERXML
    IncludePaths:
      - output/coverage/jest/clover.xml
      SuccessCriteria:
        LineCoverage: 75
        BranchCoverage: 75
  MySCAReport:
    Format: SARIFSCA
    IncludePaths:
      - output/sca/reports.xml
      SuccessCriteria:
        Vulnerabilities:
          Number: 5
          Severity: HIGH
  MySAReport:
    Format: ESLINTJSON
    IncludePaths:
      - output/static/eslint.xml
      SuccessCriteria:
        StaticAnalysisBug:
          Number: 10
          Severity: MEDIUM
        StaticAnalysisSecurity:
          Number: 5
          Severity: CRITICAL
        StaticAnalysisQuality:
          Number: 0
          Severity: INFORMATIONAL
```

# Praktik terbaik untuk pengujian
<a name="test-best-practices"></a>

Saat menggunakan fitur pengujian yang disediakan oleh CodeCatalyst, kami sarankan Anda mengikuti praktik terbaik ini.

**Topics**
+ [Penemuan otomatis](#test.best-auto-discovery)
+ [Kriteria keberhasilan](#test.best-success-criteria)
+ [Sertakan/kecualikan jalur](#test.best-include-exclude)

## Penemuan otomatis
<a name="test.best-auto-discovery"></a>

Saat mengonfigurasi tindakan CodeCatalyst, penemuan otomatis memungkinkan Anda menemukan keluaran berbagai alat secara otomatis, seperti laporan JUnit pengujian, dan menghasilkan laporan yang relevan darinya CodeCatalyst. Penemuan otomatis membantu memastikan bahwa laporan terus dibuat meskipun nama atau jalur ke output yang ditemukan berubah. Ketika file baru ditambahkan, CodeCatalyst secara otomatis menemukan mereka dan menghasilkan laporan yang relevan. Namun, jika Anda menggunakan penemuan otomatis, penting untuk memperhitungkan beberapa aspek berikut dari fitur ini:
+ Saat Anda mengaktifkan penemuan otomatis dalam tindakan Anda, semua laporan yang ditemukan secara otomatis dari jenis yang sama akan berbagi kriteria keberhasilan yang sama. Misalnya, kriteria bersama seperti tingkat kelulusan minimum akan berlaku untuk semua laporan pengujian yang ditemukan secara otomatis. Jika Anda memerlukan kriteria yang berbeda untuk laporan dari jenis yang sama, Anda harus secara eksplisit mengonfigurasi setiap laporan ini.
+ Penemuan otomatis juga dapat menemukan laporan yang dihasilkan oleh dependensi Anda dan, jika kriteria keberhasilan dikonfigurasi, mungkin gagal dalam tindakan pada laporan ini. Masalah ini dapat diatasi dengan memperbarui konfigurasi jalur pengecualian.
+ Penemuan otomatis tidak dijamin menghasilkan daftar laporan yang sama setiap saat, karena memindai tindakan saat runtime. Jika Anda ingin laporan tertentu selalu diproduksi, Anda harus mengonfigurasi laporan secara eksplisit. Misalnya, jika pengujian berhenti berjalan sebagai bagian dari build Anda, kerangka pengujian tidak akan menghasilkan output apa pun dan, sebagai hasilnya, tidak ada laporan pengujian yang akan dihasilkan dan tindakan mungkin berhasil. Jika Anda ingin keberhasilan tindakan Anda bergantung pada pengujian tertentu, maka Anda harus mengonfigurasi laporan itu secara eksplisit.

**Tip**  
Saat memulai proyek baru atau yang sudah ada, gunakan penemuan otomatis untuk seluruh direktori proyek (termasuk`**/*`). Ini memanggil pembuatan laporan di semua file dalam proyek Anda, termasuk yang ada di dalam subdirektori.

Untuk informasi selengkapnya, lihat [Mengkonfigurasi laporan kualitas dalam suatu tindakan](test-config-action.md).

## Kriteria keberhasilan
<a name="test.best-success-criteria"></a>

Anda dapat menerapkan ambang kualitas pada laporan Anda dengan mengonfigurasi kriteria keberhasilan. Misalnya, jika dua laporan cakupan kode ditemukan secara otomatis, satu dengan cakupan baris 80% dan yang lainnya dengan cakupan garis 60%, Anda memiliki opsi berikut:
+ Tetapkan kriteria keberhasilan penemuan otomatis untuk cakupan lini sebesar 80%. Ini akan menyebabkan laporan pertama lulus dan laporan kedua gagal, yang akan mengakibatkan tindakan keseluruhan gagal. Untuk membuka blokir alur kerja, tambahkan pengujian baru ke proyek Anda hingga cakupan baris untuk laporan kedua melebihi 80%.
+ Tetapkan kriteria keberhasilan penemuan otomatis untuk cakupan lini sebesar 60%. Ini akan menyebabkan kedua laporan lolos, yang akan menghasilkan tindakan berhasil. Anda kemudian dapat bekerja untuk meningkatkan cakupan kode di laporan kedua. Namun, dengan pendekatan ini, Anda tidak dapat menjamin bahwa cakupan dalam laporan pertama tidak turun di bawah 80%.
+ Konfigurasikan satu atau kedua laporan secara eksplisit dengan menggunakan editor visual atau menambahkan bagian dan jalur YAMB eksplisit untuk setiap laporan. Ini akan memungkinkan Anda untuk mengonfigurasi kriteria keberhasilan terpisah dan nama khusus untuk setiap laporan. Namun, dengan pendekatan ini, tindakan bisa gagal jika jalur laporan berubah.

Untuk informasi selengkapnya, lihat [Mengkonfigurasi kriteria keberhasilan untuk laporan](test-config-action.md#test.success-criteria).

## Sertakan/kecualikan jalur
<a name="test.best-include-exclude"></a>

Saat meninjau hasil tindakan, Anda dapat menyesuaikan daftar laporan yang dihasilkan CodeCatalyst dengan mengonfigurasi dan. `IncludePaths` `ExcludePaths`
+ Gunakan `IncludePaths` untuk menentukan file dan jalur file yang CodeCatalyst ingin Anda sertakan saat mencari laporan. Misalnya, jika Anda menentukan`"/test/report/*"`, akan CodeCatalyst mencari seluruh image build yang digunakan oleh tindakan mencari `/test/report/` direktori. Ketika menemukan direktori itu, CodeCatalyst maka cari laporan di direktori itu.
**catatan**  
Untuk laporan yang dikonfigurasi secara manual, `IncludePaths` harus berupa pola glob yang cocok dengan satu file.
+ Gunakan `ExcludePaths` untuk menentukan file dan jalur file yang CodeCatalyst ingin Anda kecualikan saat mencari laporan. Misalnya, jika Anda menentukan`"/test/reports/**/*"`, tidak CodeCatalyst akan mencari file di `/test/reports/` direktori. Untuk mengabaikan semua file dalam direktori, gunakan pola `**/*` glob.

Berikut ini adalah contoh pola glob yang mungkin.


| Pola | Deskripsi | 
| --- | --- | 
|  `*.*`  |  Cocokkan semua nama objek di direktori saat ini yang berisi titik  | 
|  `*.xml`  |  Cocokkan semua nama objek di direktori saat ini yang diakhiri dengan `.xml`  | 
|  `*.{xml,txt}`  |  Cocokkan semua nama objek di direktori saat ini yang diakhiri dengan `.xml` atau `.txt`  | 
|  `**/*.xml`  |  Mencocokkan nama objek di semua direktori yang diakhiri dengan `.xml`  | 
|  `testFolder`  |  Cocokkan objek yang disebut`testFolder`, memperlakukannya sebagai file  | 
|  `testFolder/*`  |  Mencocokkan objek dalam satu tingkat subfolder dari`testFolder`, seperti `testFolder/file.xml`  | 
|  `testFolder/*/*`  |  Mencocokkan objek dalam dua tingkat subfolder dari`testFolder`, seperti `testFolder/reportsFolder/file.xml`  | 
|  `testFolder/**`  |  Cocok dengan subfolder `testFolder` serta file di bawah `testFolder`, seperti `testFolder/file.xml` dan `testFolder/otherFolder/file.xml`  | 

CodeCatalyst menafsirkan pola glob sebagai berikut:
+ Karakter slash (`/`) memisahkan direktori di jalur file.
+ Karakter tanda bintang (`*`) cocok dengan karakter nol atau karakter lain dari komponen nama tanpa melintasi batas folder.
+ Tanda bintang ganda (`**`) cocok dengan nol atau lebih karakter dari komponen nama di semua direktori.

**catatan**  
`ExcludePaths`lebih diutamakan. `IncludePaths` Jika keduanya `IncludePaths` dan `ExcludePaths` menyertakan folder yang sama, folder itu tidak dipindai untuk laporan.

# Properti SARIF yang didukung
<a name="test.sarif"></a>

Static Analysis Results Interchange Format (SARIF) adalah format file output yang tersedia dalam analisis komposisi perangkat lunak (SCA) dan laporan analisis statis di Amazon. CodeCatalyst Contoh berikut menunjukkan cara mengkonfigurasi SARIF secara manual dalam laporan analisis statis:

```
Reports:
MySAReport:
Format: SARIFSA
IncludePaths:
    - output/sa_report.json
SuccessCriteria:
    StaticAnalysisFinding:
    Number: 25
    Severity: HIGH
```

CodeCatalyst mendukung properti SARIF berikut yang dapat digunakan untuk mengoptimalkan bagaimana hasil analisis akan muncul dalam laporan Anda.

**Topics**
+ [Objek `sarifLog`](#test.sarif.sarifLog)
+ [Objek `run`](#test.sarif.run)
+ [Objek `toolComponent`](#test.sarif.toolComponent)
+ [Objek `reportingDescriptor`](#test.sarif.reportingDescriptor)
+ [Objek `result`](#test.sarif.result)
+ [Objek `location`](#test.sarif.location)
+ [Objek `physicalLocation`](#test.sarif.physicalLocation)
+ [Objek `logicalLocation`](#test.sarif.logicalLocation)
+ [Objek `fix`](#test.sarif.fix)

## Objek `sarifLog`
<a name="test.sarif.sarifLog"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `$schema`  |  Ya  |  [URI dari skema SARIF JSON untuk versi 2.1.0.](https://json.schemastore.org/sarif-2.1.0.json)  | 
|  `version`  |  Ya  |  CodeCatalyst hanya mendukung SARIF versi 2.1.0.  | 
|  `runs[]`  |  Ya  |  File SARIF berisi array dari satu atau lebih run, yang masing-masing mewakili satu run alat analisis.  | 

## Objek `run`
<a name="test.sarif.run"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `tool.driver`  |  Ya  |  `toolComponent`Objek yang menggambarkan alat analisis.  | 
|  `tool.name`  |  Tidak  |  Properti yang menunjukkan nama alat yang digunakan untuk melakukan analisis.  | 
|  `results[]`  |  Ya  |  Hasil alat analisis yang ditampilkan pada CodeCatalyst.  | 

## Objek `toolComponent`
<a name="test.sarif.toolComponent"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `name`  |  Ya  |  Nama alat analisis.  | 
|  `properties.artifactScanned`  |  Tidak  |  Sejumlah artefak dianalisis oleh alat.  | 
|  `rules[]`  |  Ya  |  Sebuah array `reportingDescriptor` objek yang mewakili aturan. Berdasarkan aturan ini, alat analisis menemukan masalah dalam kode yang dianalisis.  | 

## Objek `reportingDescriptor`
<a name="test.sarif.reportingDescriptor"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `id`  |  Ya  |  Pengidentifikasi unik untuk aturan yang digunakan untuk referensi temuan. Panjang maksimal: 1.024 karakter  | 
|  `name`  |  Tidak  |  Nama tampilan aturan. Panjang maksimal: 1.024 karakter  | 
|  `shortDescription.text`  |  Tidak  |  Deskripsi singkat tentang aturan tersebut. Panjang maksimum: 3.000 karakter  | 
|  `fullDescription.text`  |  Tidak  |  Deskripsi lengkap tentang aturan tersebut. Panjang maksimum: 3.000 karakter  | 
|  `helpUri`  |  Tidak  |  String yang dapat dilokalkan untuk berisi URI absolut dari dokumentasi utama untuk aturan. Panjang maksimum: 3.000 karakter  | 
|  `properties.unscore`  |  Tidak  |  Bendera yang menunjukkan apakah temuan pemindaian telah dinilai.  | 
|  `properties.score.severity`  |  Tidak  |  Satu set string tetap yang menentukan tingkat keparahan temuan. Panjang maksimal: 1.024 karakter  | 
|  `properties.cvssv3_baseSeverity`  |  Tidak  |  Peringkat keparahan kualitatif dari [Common Vulnerability Scoring](https://www.first.org/cvss/v3.1/specification-document) System v3.1.  | 
|  `properties.cvssv3_baseScore`  |  Tidak  |  Skor Dasar CVSS v3 mulai dari [0,0](https://nvd.nist.gov/vuln-metrics/cvss) - 10,0.  | 
|  `properties.cvssv2_severity`  |  Tidak  |  Jika nilai CVSS v3 tidak tersedia, CodeCatalyst cari nilai CVSS v2.  | 
|  `properties.cvssv2_score`  |  Tidak  |  Skor Dasar CVSS v2 mulai dari [0,0 - 10,0](https://nvd.nist.gov/vuln-metrics/cvss).  | 
|  `properties.severity`  |  Tidak  |  Satu set string tetap yang menentukan tingkat keparahan temuan. Panjang maksimal: 1.024 karakter  | 
|  `defaultConfiguration.level`  |  Tidak  |  Tingkat keparahan default dari suatu aturan.  | 

## Objek `result`
<a name="test.sarif.result"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `ruleId`  |  Ya  |  Pengidentifikasi unik untuk aturan yang digunakan untuk referensi temuan. Panjang maksimal: 1.024 karakter  | 
|  `ruleIndex`  |  Ya  |  Indeks aturan terkait dalam komponen alat`rules[]`.  | 
|  `message.text`  |  Ya  |  Pesan yang menjelaskan hasil dan menampilkan pesan untuk setiap temuan. Panjang maksimum: 3.000 karakter  | 
|  `rank`  |  Tidak  |  Nilai antara 0,0 hingga 100,0 inklusif yang mewakili prioritas atau pentingnya hasil. Nilai skala ini 0,0 menjadi prioritas terendah dan 100,0 menjadi prioritas tertinggi.  | 
|  `level`  |  Tidak  |  Tingkat keparahan hasilnya. Panjang maksimal: 1.024 karakter  | 
|  `properties.unscore`  |  Tidak  |  Bendera yang menunjukkan apakah temuan pemindaian telah dinilai.  | 
|  `properties.score.severity`  |  Tidak  |  Satu set string tetap yang menentukan tingkat keparahan temuan. Panjang maksimal: 1.024 karakter  | 
|  `properties.cvssv3_baseSeverity`  |  Tidak  |  Peringkat keparahan kualitatif dari [Common Vulnerability Scoring](https://www.first.org/cvss/v3.1/specification-document) System v3.1.  | 
|  `properties.cvssv3_baseScore`  |  Tidak  |  Skor Dasar CVSS v3 mulai dari [0,0](https://nvd.nist.gov/vuln-metrics/cvss) - 10,0.  | 
|  `properties.cvssv2_severity`  |  Tidak  |  Jika nilai CVSS v3 tidak tersedia, CodeCatalyst cari nilai CVSS v2.  | 
|  `properties.cvssv2_score`  |  Tidak  |  Skor Dasar CVSS v2 mulai dari [0,0 - 10,0](https://nvd.nist.gov/vuln-metrics/cvss).  | 
|  `properties.severity`  |  Tidak  |  Satu set string tetap yang menentukan tingkat keparahan temuan. Panjang maksimal: 1.024 karakter  | 
|  `locations[]`  |  Ya  |  Kumpulan lokasi di mana hasilnya terdeteksi. Hanya satu lokasi yang harus disertakan kecuali masalahnya hanya dapat diperbaiki dengan membuat perubahan di setiap lokasi yang ditentukan. CodeCatalyst menggunakan nilai pertama dalam array lokasi untuk membubuhi keterangan hasilnya. Jumlah maksimum `location` objek: 10  | 
|  `relatedLocations[]`  |  Tidak  |  Daftar referensi lokasi tambahan dalam temuan. Jumlah maksimum `location` objek: 50  | 
|  `fixes[]`  |  Tidak  |  Array `fix` objek yang mewakili rekomendasi yang disediakan oleh alat pemindaian. CodeCatalyst menggunakan rekomendasi pertama dalam `fixes` array.  | 

## Objek `location`
<a name="test.sarif.location"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `physicalLocation`  |  Ya  |  Mengidentifikasi artefak dan wilayah.  | 
|  `logicalLocations[]`  |  Tidak  |  Kumpulan lokasi dijelaskan dengan nama tanpa mengacu pada artefak.  | 

## Objek `physicalLocation`
<a name="test.sarif.physicalLocation"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `artifactLocation.uri`  |  Ya  |  URI yang menunjukkan lokasi artefak, biasanya file baik di repositori atau dihasilkan selama pembuatan.  | 
|  `fileLocation.uri`  |  Tidak  |  URI jatuh kembali yang menunjukkan lokasi file. Ini digunakan jika `artifactLocation.uri` kembali kosong.  | 
|  `region.startLine`  |  Ya  |  Nomor baris karakter pertama di wilayah tersebut.  | 
|  `region.startColumn`  |  Ya  |  Nomor kolom karakter pertama di wilayah tersebut.  | 
|  `region.endLine`  |  Ya  |  Nomor baris karakter terakhir di wilayah tersebut.  | 
|  `region.endColumn`  |  Ya  |  Nomor kolom karakter terakhir di wilayah tersebut.  | 

## Objek `logicalLocation`
<a name="test.sarif.logicalLocation"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `fullyQualifiedName`  |  Tidak  |  Informasi tambahan yang menggambarkan lokasi hasil. Panjang maksimal: 1.024 karakter  | 

## Objek `fix`
<a name="test.sarif.fix"></a>


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|  `description.text`  |  Tidak  |  Pesan yang menampilkan rekomendasi untuk setiap temuan. Panjang maksimum: 3.000 karakter  | 
|  `artifactChanges.[0].artifactLocation.uri`  |  Tidak  |  URI menunjukkan lokasi artefak yang perlu diperbarui.  | 