← thisisyazid.comArtikel › User storyENBM한국어
Agile dan Scrum

Menulis user story: siapa, apa dan mengapa

User story ialah sebahagian kecil kerja yang diterangkan dari sudut pandangan orang yang mendapat manfaat daripadanya. Panduan ini memecahkan templat "Sebagai…, saya mahu…, supaya…", menerangkan senarai semak INVEST untuk cerita yang baik, dan menunjukkan cara memecahkan idea besar kepada cerita yang boleh disiapkan oleh pasukan. Kira-kira 12 minit untuk dibaca.

📇User storyPenerangan ringkas tentang sesuatu yang diperlukan pengguna, dan mengapa. Peringatan untuk berbincang, bukan spesifikasi penuh.
🧩TemplatSebagai siapa, saya mahu apa, supaya mengapa. Tiga bahagian, masing-masing ada tugas.
✅INVESTBerdikari, boleh dirunding, bernilai, boleh dianggar, kecil, boleh diuji. Enam semakan untuk cerita yang baik.
🎯Kriteria penerimaanSyarat yang mesti benar untuk cerita itu dianggap selesai. Ia menjadikan cerita boleh diuji.
Bahagian 1

Apakah user story?

User story menerangkan keperluan dalam perkataan seharian, dari sisi skrin pengguna. Ia sengaja tidak menyatakan bagaimana untuk membinanya. Itu diputuskan bersama oleh mereka yang akan membinanya, melalui perbincangan dengan mereka yang memerlukannya.

Cara terkenal untuk mengingatinya ialah tiga C oleh Ron Jeffries:

1. Kad (Card)Cerita cukup pendek untuk muat pada kad indeks. Ia penanda tempat, bukan keseluruhan cerita.
→
2. Perbualan (Conversation)Pasukan dan Product Owner membincangkannya: soalan, contoh, kes luar biasa, idea.
→
3. Pengesahan (Confirmation)Kriteria penerimaan merekodkan apa yang dipersetujui, supaya semua tahu bila ia selesai.

Adakah saya mesti menggunakan user story? Tidak. Panduan Scrum hanya meminta Product Backlog dengan item yang jelas. User story ialah cara popular untuk menulis item itu kerana ia mengekalkan fokus pada manusia dan nilai. Pembaikan pepijat atau naik taraf boleh kekal sebagai tugasan biasa.

Bahagian 2

Templat, dipecahkan

Kebanyakan pasukan menggunakan satu ayat mudah. Setiap bahagian ada tugas berbeza, dan cerita hanya sekuat bahagian yang paling lemah.

User story dipecahkan kepada siapa, apa dan mengapa Sebagai penyambut tetamu klinik, saya mahu melihat pesakit yang tidak hadir hari ini dalam satu senarai, supaya saya boleh tawarkan slot itu kepada pesakit dalam senarai menunggu. SIAPA orang atau peranan sebenar APA apa yang mereka mahu buat MENGAPA manfaat yang mereka dapat
Siapa, apa dan mengapa. Jika anda hanya ingat satu perkara, ingatlah bahawa "mengapa" ialah bahagian yang paling kerap dilangkau, dan yang paling penting.
Sebagai…

Siapa

Orang yang mendapat manfaat. Cukup spesifik sehingga anda boleh pergi dan bercakap dengan mereka.

  • Gunakan peranan sebenar: penyambut tetamu klinik, pembeli kali pertama.
  • Elakkan "pengguna" sahaja. Pengguna yang mana?
  • Jangan sekali-kali "sistem" atau "pembangun". Mereka bukan yang mendapat manfaat.
Saya mahu…

Apa

Apa yang mereka mahu boleh lakukan, dalam perkataan mereka, bukan perkataan pasukan.

  • Terangkan matlamat atau tindakan, bukan skrin.
  • Tinggalkan butang, warna dan teknologi.
  • Satu perkara sahaja. "Dan" biasanya bermakna dua cerita.
Supaya…

Mengapa

Manfaatnya. Ia memberitahu pasukan rupa kejayaan dan membantu Product Owner memutuskan apa yang didahulukan.

  • Namakan hasil sebenar: masa dijimatkan, wang, risiko, ketenangan fikiran.
  • Jika anda tidak dapat menulis mengapa, tanya sama ada cerita itu diperlukan.
  • Mengapa sering mencadangkan penyelesaian yang lebih mudah.

Satu bahagian demi satu: lemah dan lebih baik

Bahagian❌ Lemah✅ Lebih baik
SiapaSebagai pengguna…Sebagai ibu bapa yang membayar yuran sekolah…
Apa…saya mahu senarai juntai kad tersimpan di halaman pembayaran……saya mahu membayar dengan kad yang pernah saya guna…
Mengapa…supaya saya boleh membayar.…supaya bayaran setiap penggal hanya ambil beberapa saat, bukan mencari dompet.
Bahagian 3

INVEST: enam semakan untuk cerita yang baik

Bill Wake mencadangkan INVEST pada 2003 sebagai ujian pantas sama ada cerita sedia untuk dikerjakan. Semak setiap cerita dengan enam huruf ini sebelum ia masuk ke Sprint.

IBerdikari (Independent)Bolehkah ia dibina dan dikeluarkan sendiri?

Cerita yang bergantung antara satu sama lain mesti dibuat mengikut susunan tetap, yang menjadikan perancangan kaku.

Gagal: "Cerita B hanya berfungsi selepas cerita A siap."

Baiki: gabungkan, atau pecahkan dengan cara lain supaya setiap satu menghasilkan sesuatu yang boleh digunakan.

NBoleh dirunding (Negotiable)Adakah ruang untuk membincangkan caranya?

Cerita ialah titik permulaan perbualan, bukan kontrak dengan setiap butiran ditetapkan.

Gagal: cerita sudah menetapkan susun atur skrin dan jadual pangkalan data.

Baiki: kekalkan keperluan, buang reka bentuk. Putuskan butiran bersama.

VBernilai (Valuable)Adakah pengguna atau perniagaan mendapat manfaat?

Setiap cerita patut menghasilkan sesuatu yang akan disedari dan dipedulikan oleh orang di luar pasukan.

Gagal: "Sebagai pembangun, saya mahu mencipta jadual pangkalan data."

Baiki: potong secara menegak supaya setiap cerita merangkumi bahagian pangkalan data, logik dan skrin yang diperlukannya.

EBoleh dianggar (Estimable)Bolehkah pasukan mensaiznya?

Jika tiada sesiapa dapat meneka saiznya, ada perkara penting yang masih belum diketahui.

Gagal: "Integrasi dengan penyedia pembayaran baharu", sedangkan tiada siapa pernah melihat API mereka.

Baiki: jalankan spike yang pendek dan bertempoh untuk belajar dahulu, kemudian tulis cerita.

SKecil (Small)Bolehkah ia disiapkan dalam beberapa hari?

Cerita kecil mengalir melalui papan dengan pantas dan memberi maklum balas awal. Sasarkan beberapa yang siap setiap Sprint.

Gagal: "Sebagai pesakit, saya mahu mengurus temu janji saya."

Baiki: pecahkannya. Lihat Bahagian 5.

TBoleh diuji (Testable)Adakah kita akan tahu bila ia selesai?

Jika anda tidak dapat menyatakan cara mengujinya, anda tidak dapat menyatakan bila ia siap.

Gagal: "…supaya aplikasi terasa lebih pantas."

Baiki: tambah kriteria penerimaan: "hasil muncul dalam 2 saat bagi 95% carian."

Semakan INVEST pada satu cerita

Sebagai penyambut tetamu klinik, saya mahu melihat pesakit yang tidak hadir hari ini dalam satu senarai, supaya saya boleh tawarkan slot itu kepada pesakit dalam senarai menunggu.
SemakanKeputusan
I Berdikari✅ Menggunakan data temu janji sedia ada. Tidak perlukan cerita lain dahulu.
N Boleh dirunding✅ Tidak menyatakan rupa senarai. Penapis pada jadual sedia ada mungkin sudah memadai.
V Bernilai✅ Slot kosong diisi, jadi lebih ramai pesakit dirawat dan kurang pendapatan hilang.
E Boleh dianggar✅ Pasukan mengenali data temu janji dengan baik.
S Kecil✅ Kerja beberapa hari. Menghubungi pesakit yang menunggu ialah cerita berasingan.
T Boleh diuji✅ Ya, dengan kriteria penerimaan dalam Bahagian 4.
Bahagian 4

Kriteria penerimaan: cara anda tahu ia selesai

Kriteria penerimaan ialah syarat yang mesti dipenuhi cerita untuk diterima. Ia dipersetujui dalam perbualan, ditulis pada cerita, dan disemak sebelum ia dikira selesai. Format popular ialah Given / When / Then: situasi permulaan, tindakan, dan hasil yang dijangka.

Sebagai penyambut tetamu klinik, saya mahu melihat pesakit yang tidak hadir hari ini dalam satu senarai, supaya saya boleh tawarkan slot itu kepada pesakit dalam senarai menunggu.
Given seorang pesakit ditempah untuk 10:00 hari ini dan belum mendaftar masuk When jam menunjukkan 10:15 Then mereka muncul dalam senarai tidak hadir hari ini dengan nama, waktu slot dan nombor telefon Given seorang pesakit dalam senarai tidak hadir tiba lewat When penyambut tetamu menandakan mereka sudah tiba Then mereka hilang daripada senarai tidak hadir Given tiada sesiapa terlepas temu janji hari ini When penyambut tetamu membuka senarai Then ia memaparkan "Tiada pesakit tidak hadir hari ini"
Terangkan hasil, bukan klik.Mengapa: "mereka muncul dalam senarai" kekal walaupun reka bentuk berubah. "Klik tab merah" tidak.
Sasarkan kira-kira 3 hingga 7 kriteria.Mengapa: satu biasanya terlalu kabur. Lebih daripada lapan selalunya bermakna cerita perlu dipecahkan.
Sertakan laluan tidak lancar.Bagaimana jika tiada data, input salah, atau pengguna berubah fikiran? Mengapa: di situlah kebanyakan pepijat berada.
Asingkan Definition of Done.Peraturan bersama seperti "kod disemak, diuji, dikeluarkan" terpakai pada setiap cerita, jadi jangan ulang. Mengapa: kriteria hanya patut menyatakan apa yang istimewa tentang cerita ini.
Bahagian 5

Memecahkan cerita besar

Idea besar biasanya bermula terlalu besar untuk disiapkan dalam satu Sprint. Cerita sebesar itu sering dipanggil epik. Matlamatnya ialah memotongnya kepada cerita kecil yang setiap satu masih menghasilkan sesuatu yang nyata: hirisan nipis menembusi seluruh kek, bukan lapisan berasingan. Artikel menghiris dan mensaiz menerangkan tekniknya dengan lebih mendalam.

Epik

Sebagai pesakit, saya mahu menempah temu janji klinik dalam talian, supaya saya tidak perlu menelefon pada waktu pejabat.

Matlamat yang baik, tetapi terlalu besar: ia merangkumi memilih doktor, mencari masa, mengesahkan, membayar, peringatan, membatalkan dan menukar jadual. Inilah pecahannya:

Epik tempahan dalam talian dipecahkan kepada enam user story kecil, dikeluarkan dalam tiga pusingan EPIK: tempah temu janji klinik dalam talian terlalu besar untuk satu Sprint Keluaran 1: tempahan asas Keluaran 2: tukar rancangan Keluaran 3: bagus jika ada 1. Lihat slot kosong untukseorang GP, minggu inilaluan paling mudah yangmasih bernilai 2. Tempah slot dan terimae-mel pengesahanmelengkapkan perjalananteras 3. Batal tempahan sehingga24 jam sebelummembebaskan slot untukorang lain 4. Tukar jadual keslot kosong laindibina atas 1 hingga 3 5. Terima peringatan SMSsehari sebelumkurang pesakit tidak hadir 6. Pilih mana-mana doktordi semua klinikmeluaskan cerita 1
Enam cerita, setiap satu boleh digunakan sendiri. Selepas cerita 1 dan 2, pesakit sudah boleh menempah dalam talian. Selebihnya menjadikannya lebih baik.

Cara memecahkan, dengan contoh tempahan

Pecah mengikut…Cara ia berfungsiDaripada epik tempahan
Langkah aliran kerjaSatu cerita bagi setiap langkah perjalanan pengguna.Lihat slot → tempah → terima pengesahan
Kes mudah dahuluBina versi paling mudah, kemudian tambah variasi.Seorang GP minggu ini dahulu, kemudian mana-mana doktor, klinik dan tarikh
Laluan lancar, kemudian pengecualianPastikan ia berfungsi apabila semua berjalan baik, kemudian tangani masalah.Tempah slot kosong dahulu. "Slot diambil semasa anda menempah" kemudian.
OperasiCipta, ubah dan buang selalunya cerita berasingan.Tempah, batal dan tukar jadual
Peranan penggunaOrang berbeza mungkin perlukan versi berbeza.Pesakit menempah untuk diri sendiri, kemudian ibu bapa menempah untuk anak
Peraturan perniagaanSetiap peraturan boleh menjadi cerita sendiri."Batal sehingga 24 jam sebelum" dan "tidak lebih 2 tempahan seminggu"
Kualiti kemudianPastikan ia berfungsi, kemudian jadikan pantas atau kemas.Senarai slot asas dahulu, kemudian "hasil dalam masa kurang 2 saat"

Jangan pecahkan mengikut lapisan. "Cerita 1: pangkalan data. Cerita 2: bahagian belakang. Cerita 3: skrin." Tiada satu pun memberi apa-apa kepada pesakit sehingga ketiga-tiganya siap, jadi ia gagal huruf V dalam INVEST. Setiap cerita patut menembusi setiap lapisan yang diperlukannya.

Cerita yang terhasil

#User story
1Sebagai pesakit, saya mahu melihat slot kosong GP biasa saya minggu ini, supaya saya boleh pilih masa yang sesuai tanpa menelefon.
2Sebagai pesakit, saya mahu menempah slot kosong dan menerima e-mel pengesahan, supaya saya tahu temu janji saya sudah terjamin.
3Sebagai pesakit, saya mahu membatalkan tempahan sehingga 24 jam sebelum, supaya saya tidak dicaj untuk lawatan yang tidak dapat saya hadiri.
4Sebagai pesakit, saya mahu memindahkan tempahan ke slot kosong lain, supaya saya tidak perlu membatalkan dan mula semula.
5Sebagai pesakit, saya mahu menerima peringatan SMS sehari sebelum, supaya saya tidak lupa temu janji.
6Sebagai pesakit, saya mahu memilih mana-mana doktor di mana-mana klinik kumpulan, supaya saya boleh dirawat lebih cepat apabila GP saya penuh.

Cerita 2 menggabungkan tempahan dan pengesahan dengan sengaja. Tempahan tanpa pengesahan membuatkan pesakit tidak pasti ia berjaya, jadi ia tidak bernilai jika berdiri sendiri.

Bahagian 6

Lebih banyak contoh untuk dipelajari

Cerita yang baik daripada pelbagai jenis produk, masing-masing dengan kriteria penerimaan utama. Perhatikan bagaimana setiap satu menamakan orang sebenar, menerangkan matlamat tanpa reka bentuk, dan memberi sebab yang penting.

🛒 Kedai dalam talian
Sebagai pelanggan tetap, saya mahu memesan semula pesanan lama dalam satu langkah, supaya menambah stok barang dapur biasa saya hanya ambil beberapa saat.
Kriteria penerimaan
  • Pesanan lama menunjukkan pilihan "pesan semula".
  • Item yang kehabisan stok ditanda sebelum pembayaran, bukan selepas.
  • Harga yang ditunjukkan ialah harga hari ini, bukan harga lama.
🏦 Aplikasi bank
Sebagai pemegang kad yang kehilangan dompet, saya mahu membekukan kad saya daripada aplikasi, supaya tiada sesiapa boleh menggunakannya semasa saya mencarinya.
Kriteria penerimaan
  • Kad yang dibekukan menolak bayaran baharu dalam 1 minit.
  • Bil berulang masih boleh diteruskan, jika saya pilih.
  • Saya boleh menyahbekukannya sendiri dalam aplikasi.
🎧 Sokongan pelanggan
Sebagai ejen sokongan, saya mahu melihat 3 hubungan terakhir pelanggan apabila sembang mereka dibuka, supaya mereka tidak perlu menerangkan masalah sekali lagi.
Kriteria penerimaan
  • 3 hubungan terakhir ditunjukkan dengan tarikh, saluran dan ringkasan.
  • Pelanggan baharu menunjukkan "Tiada hubungan sebelum ini".
  • Sejarah muncul sebelum balasan pertama ejen.
🍜 Penghantaran makanan
Sebagai pelanggan yang lapar, saya mahu melihat masa penghantaran yang realistik sebelum membayar, supaya saya boleh memutuskan sama ada mahu memesan atau memasak sendiri.
Kriteria penerimaan
  • Anggaran ditunjukkan di halaman pembayaran.
  • Ia termasuk masa menunggu semasa restoran.
  • Jika anggaran melebihi 60 minit, amaran ditunjukkan.
👋 Pekerja baharu (HR)
Sebagai pekerja baharu, saya mahu melihat jadual minggu pertama sebelum hari pertama, supaya saya tahu ke mana hendak pergi dan siapa yang akan saya temui.
Kriteria penerimaan
  • Jadual dihantar melalui e-mel 3 hari bekerja sebelum tarikh mula.
  • Setiap item ada masa, tempat dan orang yang boleh dihubungi.
  • Perubahan selepas dihantar mencetuskan e-mel kemas kini.
🛡️ Pematuhan
Sebagai pegawai pematuhan, saya mahu mengeksport setiap perubahan akses pentadbir bagi julat tarikh, supaya saya boleh menjawab permintaan juruaudit dalam beberapa minit, bukan hari.
Kriteria penerimaan
  • Eksport menyenaraikan siapa mengubah apa, bila, dan siapa yang meluluskan.
  • Mana-mana julat tarikh sehingga 12 bulan boleh dipilih.
  • Fail dibuka dalam hamparan tanpa langkah tambahan.
Bahagian 7

Kesilapan biasa, dan cara membaikinya

❌ Cerita lemahApa yang salah✅ Lebih baik
"Sebagai pengguna, saya mahu papan pemuka."Siapa kabur, apa tidak jelas, tiada mengapa.Sebagai pengurus jualan, saya mahu melihat urusan minggu ini yang berisiko, supaya saya boleh campur tangan sebelum ia terlepas.
"Sebagai pembangun, saya mahu menyediakan pangkalan data."Tugasan teknikal tanpa nilai kepada pengguna.Jadikannya sebahagian daripada cerita pertama yang memerlukannya. Jika ia benar-benar berdiri sendiri, simpan sebagai tugasan biasa, bukan cerita.
"Sebagai pelanggan, saya mahu butang Hantar biru di bawah kanan."Keputusan reka bentuk, bukan keperluan. Tidak boleh dirunding.Sebagai pelanggan, saya mahu menghantar borang tanpa menatal ke atas semula, supaya saya tidak terlepas langkah terakhir.
"Sebagai pentadbir, saya mahu menambah, menyunting, memadam dan mengeksport pengguna."Empat cerita dalam satu. Tidak kecil.Pecahkan kepada empat: tambah, sunting, buang dan eksport, setiap satu dengan mengapa sendiri.
"Sebagai pembeli, saya mahu pembayaran yang lebih pantas."Tidak boleh diuji: sepantas mana itu pantas?Cerita yang sama, ditambah kriteria "pembayaran selesai dalam 3 langkah atau kurang, bawah 60 saat untuk pelanggan tetap".
"Halaman pembayaran"Sekadar label, bukan cerita. Tiada siapa, apa atau mengapa.Tulis keperluan di sebaliknya, contohnya cerita yuran sekolah dalam Bahagian 2.
Sebelum cerita masuk ke Sprint

Senarai semak cerita 60 saat

Salin templat ini

Sebagai ______________________ (siapa: peranan sebenar) saya mahu ______________________ (apa: matlamat, bukan reka bentuk) supaya ______________________ (mengapa: manfaat) Kriteria penerimaan Given ____________ When ____________ Then ____________ Given ____________ When ____________ Then ____________ Given ____________ When ____________ Then ____________

Baca seterusnya

Semua artikel →