1/9/14

Kinh nghiệm đoán lỗi

Mình cũng mới làm tester chỉ được một năm thôi, nên nói về kinh nghiệm thì không nhiều lắm. Chủ yếu mình vẫn đang học hỏi kinh nghiệm từ nhiều bạn khác trên đây, và mình tìm hiểu theo câu hỏi của các bạn hỏi, vì khi mình trả lời thì có bạn sẽ chỉnh chỗ sai cho mình, như vậy ngày qua ngày mình sẽ khá hơn.

Nói về đoán lỗi thì mình chia sẻ những gì mình biết nha, kỹ thuật này đòi hỏi kinh nghiệm là chủ yếu, vì sau quá trình mình làm việc nhiều, mình đã gặp nhiều trường hợp, gặp nhiều qui trình xử lý công việc rồi nên khi gặp một dự án mới, một phần mềm mới, mình sẽ biết được dạng phần mềm này hay loại màn hình này (ví dụ màn hình search, màn hình login, màn hình thêm mới, edit, delete,...) thì thường gặp những lỗi gì. Hoặc sau khi thực hiện một vài thao tác thì kết quả phải xảy ra như thế nào,...

Ví dụ:

Đối với màn hình search:
+ Thường xảy ra lỗi search cả những record đã bị xóa (del_flg = 1) vì vậy khi viết test case và test màn hình search thì nên thêm vào test case này (gán del_flg = 1 cho một số record rồi thực hiện search, nếu những record này được hiển thị trên màn hình thì sai).
+ Tiếp theo, nhập điều kiện sao cho khi search được 0 record thì không hiển thị được màn hình mà lại báo lỗi "Null pointer" do trong code không xử lý khởi tạo list chứa danh sách các record search được.
+ Phần phân trang, thường thì mong muốn là: (giả sử phân trang là 20 records - một trang chỉ chứa được 20 dòng)
. ++ Search được 0 record thì chỉ hiển thị header (phần datagrid chỉ hiển thị header)
. ++ Search được 20 records thì hiển thị header và 20 dòng này trên 1 trang
. ++ Search được 21 records thì hiển thị header và 20 dòng này trên trang 1 và 1 dòng trên trang 2.
. ++ Search được 50 records thì hiển thị header và 20 dòng này trên 1 trang và 20 dòng trên trang 2 và 10 dòng trên trang 3
Nhiều khi DEV quên xử lý phân trang thì khi search được nhiều hơn số record chứa trong 1 trang thì bị lỗi hoặc hiển thị tất cả trên 1 trang.
Trong trường hợp đang hiển thị nhiều trang thì click Next và Prev để kiểm tra xem có qua lại giữa các trang được không nhé vì cũng hay bị lỗi chỗ này nếu là control này do mình tự viết (thường thì dùng component của framework nhưng trong ADF thì thường tự viết bằng java để dễ kiểm soát)

Đối với màn hình Login:
+ Chú ý phần bảo mật: Đôi khi DEV code thì gán user name là "admin" và pass là rỗng hoặc là "123" vì vậy mình nên thử trường hợp này.
+ Thử thử các trường hợp SQL injection
+ Để user name và pass rỗng rồi enter. (nhiều khi DEV không xử lý action enter cho login mà phải click button login)

+ Bạn cũng có thể sử dụng việc copy paste nếu như Dev đã chặn việc nhập

Đối với màn hình Thêm Xóa Sửa:
+ Ở loại màn hình này thường xảy ra lỗi là khi thêm mới vào lần thứ 2 trở đi thì bị báo lỗi exception (lý do: do cách xử lý ID khi thêm mới, thêm lần thứ 2 thì bị trùng ID với lần trước nên DB server không cho insert thêm => lỗi, theo nguyên tắc thì sau khi thêm mới thì load lại data nhưng nhiều DEV không làm đúng như vậy)
+ Những record đã bị xóa thì không được hiển thị lên danh sách xóa - sửa (tương tự màn hình search - vì khi load danh sách là search all)
+ Nếu chương trình có yêu cầu xử deadlock thì thường xảy ra lỗi khi 2 người ngồi trên 2 máy khác nhau cùng sửa trên 1 record cùng lúc.
Cách test: mở 2 màn hình thêm xóa sửa giống nhau bằng 2 browser khác nhau. sau đó sửa trên browser 1 rồi lưu lại (thành công); Tiếp theo sửa trên browser 2 rồi lưu lại, xử lý đúng là hiển thị thông báo lỗi "record này đã được sửa bởi người khác" nghĩa là không cho mình sửa nữa, muốn sửa thì refresh lại màn hình hoặc làm sao đó để load lại data rồi sửa. Xử lý sai là không hiển thị thông báo lỗi mà cho sửa luôn.

Hoặc bạn cũng có thể làm như sau : Với màn hình xóa. Bật 2 browser lên, với 2 user cùng tao tác trên 1 màn hình. User 1 thực hiện xóa record và Save. User 2 thục hiện edit record và Save sau. Có hiển thị thông báo lỗi hay không?
(Tình huống của việc này như sau: 9h sáng, Trưởng phòng và Giám đốc cùng mở màn hình xét thưởng, tại một thời điểm nào đó 2 người cùng click vào sửa field thưởng tháng 13 của nhân viên A. Giám đốc cho giá trị 300đồng, rồi lưu lại và nghĩ là nhân viên A sẽ được thưởng 300đồng. Trong khi đó Trưởng phòng cũng mở nội dung thông tin của nhân viên A, và cho field thưởng tháng 13 là 350đồng, và click button Save sau Giám đốc một xíu xiu (ví dụ < 1s) thì giá trị "thưởng tháng 13" của nhân viên A là 350đồng. Như vậy thì chương trình đã vô tình làm cho con người thao tác sai, Nếu chương trình tốt thì phải hiển thị thông báo lỗi khi Trưởng phòng click save. Vì data lúc đó đã khác so với data trước khi load lên để sửa.
Sưu tầm & Edit - From testngvn

1 nhận xét:

fabiondahnke nói...

Tinanium Art - TINNIA® (SUNH)
TINNIA® (SUNH). TINNIA® is a ford escape titanium 2021 company based in United titanium bars States of gold titanium alloy America and where is titanium found part of the Taiwan Industrial Zone. TINNIA® microtouch titanium is a wholly-owned subsidiary of