Bài viết chuyên sâu

[Software Testing] Testcase design

[Software Testing] Testcase design

by Admin Dathoc -
Number of replies: 0

#koolj_softwaretesting
#chiase
#những_mẫu_testcases_cơ_bản

Mình gọi là những mẫu testcase cơ bản, có nghĩa là những bạn newbie mới vào nghề test hay bị giao việc... testing theo testcase, kiểu là: em vào test àh, ngày đầu tiên thực hiện test theo case nhé, ngày mai là: e viết test case đi.... kiểu thế.

(Ad thấy bài viết quảng cáo nhiều quá cứ remove nhé- còn mình viết bài này với tâm tư share 100% những cái gì mình kinh nghiệm công việc trong 41 năm qua)
.
.
Song 99% các testlead/pm hoặc một số foundation về Test Certification, vd ISTQB.... không dạy bạn là: Thiết kế cái testcase thế nào cho cover hết các logic functional hay non-functional case/usecase mà một nhân viên Kiểm định kiểm tra phần mềm... cần phải biết.

👉Tôi lấy ví dụ là một ảnh đính kèm về chức năng LOGIN, một chức năng mà gần như ứng dụng nào cũng có. Theo tôi: case sẽ cần được thiết kế kiểu mindmap thế này trước khi được viết chi tiết.
https://onedrive.live.com/?authkey=%21ABq9Z4TKA2E4MbE&cid=334E3B4FD5D42D83&id=334E3B4FD5D42D83%2159835&parId=334E3B4FD5D42D83%2159815&o=OneUp

Tất nhiên một số quan điểm khác cho là: Còn cần chuẩn bị data test, script test... Thực ra nếu bạn đã có KHUNG thiết kế và Cách làm thiết kế; thì việc sinh case sau này viết chi tiết các bạn sẽ kết hợp gồm data test và script (nếu có). Xong nếu chưa có KHUNG, chưa có Cách làm; các bạn sẽ bơi trong biển testcase.

👉Thế còn nếu theo chuẩn Quốc tế, mời bạn tham khảo mẫu phân tích testcase của RUP - IBM Rational Unified Process - từ 2006, file zip RUP_guideline_testcase; hoặc chuẩn IEEE, folder ieee-test phần verification & validation.

Có thể một số bạn cho là mẫu Thiết kế trên lỗi thời. Không sao ạ, vì ở đây tôi mong muốn chia sẻ để trao đổi kinh nghiệm. Nếu các bạn có những trải nghiệm hay hơn xin chia sẻ thêm ạ để tôi học hỏi thêm.
.
.
.
1. Mục tiêu để Thiết Kế Test Case
Nhân việc bàn về: Những mẫu testcase cơ bản, nên nói sâu một chút.
Nếu bạn tìm kiếm trên mạng về list testcase của chức năng A, kiểu test B, hệ thống C... chắc nó sẽ ra cả đống, nhưng sẽ không ai bảo bạn thiết kế nó như thế nào. Nói cách khác, THIẾT KẾ TESTCASE phải trả lời được:
👉 E dự định có bao nhiêu case?
👉 E viết testcase đó cho mục tiêu nào?
👉 E định các bước trong test case đó thế nào?
👉 E cover phần nào của ứng dụng trong test case đó? Làm thế nào để biết?
👉 E dự kiến bao lâu e viết xong các case đó?

Còn nếu đâm mặt ngay vào viết testcase/code cho test bạn sẽ mất cả giờ và chỉ chìm vào trong đống text/script bạt ngàn, mà không biết lượng hoá truớc khi làm.
Còn có thể bạn có cách riêng của bạn như: học trải nghiệm từ người khác, từ bản thân bạn.
Nhưng với những người mới vào nghề thì.. kinh nghiệm lấy đâu ra.
Đặc biệt lại là những field testing mới như: IoT, AI, Robotic, Automobile, VR....
.
.
.
2. Cách Thiết Kế Theo SÁCH
Tham khảo rộng chút có một số quyển sách và link internet tham khảo mà sẽ guide bạn cách thiết kế một case. Hay nói cách khách dạy bạn cách THIẾT KẾ truớc khi VIẾT RA các testcase khi bạn gặp một chức năng (list sách tham khảo bên dưới) mà tôi khuyên bạn NÊN XEM và XEM NGAY vì sẽ thấy các bạn đang đi sai hướng khi thiết kế TESTCASE trước khi viết:
👉 Sách dạy thiết kế testcase
- (number 1 về thiết kế testcase) https://sceweb.uhcl.edu/helm/RationalUnifiedProcess/process/modguide/md_tstcs.htm
- CBOK (trong list tham khảo dathoc.net/booktest) chapter 2.2 nêu rất rõ test work cần có những gì
- Về cách thiết kế case, dùng tool nào cho Security Test: https://www.owasp.org/images/1/19/OTGv4.pdf
- Chưa bạn nào rành và rõ khi trải nghiệm Thiết Kế Cách Làm qua 12 bài viết về test hiệu năng như ở đây: https://1drv.ms/u/s!AoMt1NVPO04zg9RvSeJ-yv9naq9kVA?e=Mhv1Hn
- Dựa trên McCall Quality Model: https://www.researchgate.net/figure/McCalls-Quality-Model-Adapted-from-McCall-1977-and-Pfleeger2003_fig1_260694183
.
.
.
3. Cách Thiết Kế theo Kinh nghiệm cá nhân tôi:
Phân tích LẠI yêu cầu -> Thiết kế Khung -> Đo thời lượng -> Review

👉Bước 1: Là bước sau cùng của tìm hiểu Yêu cầu: Tức là bạn cần có một list Chức Năng (functional) và Phi Chức Năng (của hệ thống): làm thế nào để có những dữ liệu này, mời các bạn xem phần Quy trình phân tích Yêu cầu, folder req_process, phần template và guideline. Vậy ở đây mong muốn: bạn cần list ít nhất ra những dòng text ghi: những mong muốn cuối cùng của Khách hàng từ hệ thống. Ví dụ:
+ Functional: tôi muốn hệ thống bán cà chua, 5000 vnd một kg cho khách
+ Non Functional: tôi muốn hệ thống phải dễ dùng; phục vụ tối đa khách hàng của tôi
...đó chỉ cần công đoạn này được bóc tách rõ ràng; thì các công đoạn sau rất dễ

Có thể một số bạn cho là: Trên là các hệ thống mới; chứ tụi em outsourcing toàn đi làm lại hoặc đọc lại các hệ thống cũ. Vâng, cũ cũng cần bóc tách như trên. Xong nó có thêm một văn bản khác trong req_process, là Mapping Yêu cầu và Phần thiết kế: vì hệ thống cũ sẽ có Thiết kế cũ; điều này sẽ ảnh hưởng tới testcase viết sau này.

👉Bước 2: Với Functional, bạn cần một số kiến thức nền về CNTT, cụ thể:
+ Kiểu dữ liệu: kiểu số, kiểu chữ, kiểu logic true false...
+ Vùng bao của kiểu dữ liệu: cận trên cận dưới
+ Miền dữ liệu: phần dữ liệu được xử lý trên phần mềm; trên phần cứng; trên dòng chuyển lưu dữ liệu
+ Lớp kiến trúchệ thống phần mềm: lớp giao diện; lớp api; lớp xử lý logic; lớp xử lý database; lớp xử lý phần cứng
... vì sao phải hiểu những cái này: bởi vì nếu hiểu bạn mới viết sâu và hiểu bạn cần những Bước kiểm tra gì khi chức năng đó được gọi là hoàn thành.
Còn nếu bạn chưa có kiến thức. Đơn giản tìm hiểu wiki, hoặc tìm sách Kiến thức tin học cơ bản hoặc sách Làm phần mềm ...để hiểu hơn.
Hoặc bạn sẽ phải tự học theo trải nghiệm.

👉 Bước 3: Xem các mẫu câu người khác đã viết. Viết theo:
+ Thiết kế KHUNG theo RUP, hoặc theo IEEE, hoặc theo McCall 1977
+ Thiết kế KHUNG viết, ví dụ như templates trong folder test_process. Đa phần là excel; bạn có thể dùng kiểu khác.
+ Thiết kế KHUNG cho testcase phần mềm nói chung khác với testcase phần mềm nhúng; khác với testcase phần cứng
+ Thiết kế KHUNG cho testcase kèm với KHUNG thực thi: case thì cần: bước làm, kết quả mogn đợi, data cần; chòn Khung thực thi cần: Ai làm, kết quả làm
+ Thiết kế KHUNG cho security test đơn giản là cứ OWASP hoặc OSSTP là xong; thiết kế KHUNG cho performance theo RUP; thiết kế KHUNG cho BIGDATA test theo clip này: https://www.youtube.com/watch?v=faSk089vIo0&list=PL751V5I3RIDFwgpwl-wvBEDsOd8w5TB75; cho Blockchain test.. cứ theo clip này: https://www.youtube.com/watch?v=8P67xzB2_PE&list=PL751V5I3RIDFaRdtBN2xQgW04LX2HTM_p

👉 Bước 4: Chuẩn bị Viết mẫu vài case trên KHUNG đã thiết kế. Đo thời lượng viết.
+ Viết mẫu vài case. Bấm giờ đo thời lượng.
...vì sao phải làm cái này, đơn giản bạn cần lường trước bao lâu bạn mới xong 20-30 case mà bạn thiết kế.

👉 Bước 5: Đem đi review
...rồi chúng ta sẽ nhận được ĐỐNG comment thế này thế kia.. rồi tha hồ sửa.
.
.
4. Với Startup nhỏ, tester không có thì ...viết thế nào?
Vậy theo mẫu login dưói, tôi theo quy cách đánh giá chất lượng của McCall's Quality Model - 1977 (link trên) và đưa ra Correctness, Integration, Security, Effectiveness, Reliability, ....và các lý thuyết ở những sách trên để đưa ra case.
Rồi theo những nhánh trên, viết lên Excel những case; thêm datatest, thêm script nếu có.
👉Xong lại gặp một trở ngại: với tổ chức nhiều team thì còn có time làm như trên, thế còn startup 1 người test, tôi nghĩ bạn nên làm cách khác, cụ thể:
- Bạn ko cần excel viết case
- Bạn dùng 100% mind map hoặc tool tương đương, và vẽ như tôi vẽ
- Nếu bạn chưa có những kinh nghiệm phân case thì bạn đọc từ những ng khác hoặc tham khảo lý thuyết trên.

Có thể một số bạn cho là mẫu Thiết kế trên lỗi thời. Không sao ạ, vì ở đây tôi mong muốn chia sẻ để trao đổi kinh nghiệm. Nếu các bạn có những trải nghiệm hay hơn xin chia sẻ thêm ạ để tôi học hỏi thêm.
Gluk!
--------------------------------
SÁCH - TẠP CHÍ - TÀI LIỆU ĐÚC KẾT KINH NGHIỆM làm về SOFTWARE TESTING cần tham khảo: dathoc.net/booktest
Bạn muốn thông thạo hơn việc viết thiết kế testcase, sử dụng công cụ automation test HERA để auto test, các framework Appium, TestNG, xin tham gia FREE tại: youtube.com/c/TesterPRO/
By: dathoc.net/cv