Scenarios to Test OTP (One-Time Password)

Scenarios to Test OTP (One-Time Password)

Để xác định được mình cần làm gì khi kiểm thử OTP thì trước tiên mình cần hiểu OTP là gì?

OTP là gì?

OTP được viết tắt từ One time password . Nó là một loại password chỉ có hiệu lực sử dụng một lần và trong một thời gian nhất định (30s-2 phút). Nếu quá thời gian quy định thì OTP sẽ bị coi là invalid và không thể nào sử dụng được nữa.

OTP thường bao gồm một chuỗi ký tự hoặc một dãy số.

OTP thường được sử dụng trong các giao dịch của ngân hàng điện tử, thanh toán online , hoặc các phương thức payment khác.

Tại sao lại cần OTP?

Việc xác thực người dùng trên một ứng dụng app/ web là một yếu tố business quan trọng nhẩt

Bởi vì high security threads điều cần thiết là ngăn chặn việc thăm dò mạng và reply sau này.

Bạn muốn không  bất kỳ ai có quyền truy cập vào mật khẩu tĩnh của mình và sử dụng nó sau này.

Chính vì vậy một trong những cách xác thực an toàn nhất hiện nay là gửi trực tiếp OTP ( mật khẩu dùng một lần- ONE TIME PASSWORD) đến end user.

OTP được gọi là bí mật giữa hai bên

Những scenarios thường dùng khi testing OTP

  1. OTP should be generated within a time period.

OTP chỉ được sử dụng một lần và bạn cần xem xét đến khía cạnh thời gian khi sử dụng chức năng OTP, bao gồm:

  • Thời gian OTP được tạo ra , chắc hẳn người dùng không muốn chờ đợi quá lâu sau khi khởi động chức năng OTP
  • Thời gian OTP có hiệu lực, thời gian này phải bảo đảm bao phủ được: thời gian OTP tạo ra + thời gian OTP gửi đến người dùng + thời gian người dùng thao tác nhập OTP để xác thực

2.  Limitations of number of OTP generation for single authentication.

Giới hạn số lần tạo OTP cho một lần xác thực: cũng như khi bạn rút tiền ở ATM, nhập sai pass quá x lần thì bị khóa thẻ hoặc mất thẻ là chuyện đương nhiên, thì khi sử dụng tính năng OTP cũng vậy, một người dùng bình thường không bao giờ cần quá nhiều OTP cho một lần xác thực của họ trừ khi họ có ý đồ xấu . Đây cũng là một kịch bản quan trọng cần test vì nó có tính bảo mật và kinh tế nữa, một số hệ thống gửi OTP đến số điện thoại qua SMS, gửi càng nhiều SMS thì càng tốn tiền.

3.  It is received only on registered Mobile Number / Email Address.

OTP chỉ được nhận thông qua số điện thoại hoặc địa chỉ Email đã đăng ký để sử dụng tính năng OTP, hãy bảo đảm rằng OTP không được gửi đến nơi nào khác.


4.  Network delay for expiry of One-Time Password.

Cái này có đề cập đến ở 1 nhỉ, khi sử dụng tính năng này cần tính toán độ trễ của mạng để xác định thời gian OTP hết hạn một cách hợp lý.

5. Verify that once expired, it should not be used for any authentication.

Xác nhận rằng một khi OTP đã hết hạn, nó không nên dùng được cho bất kỳ xác thực nào nữa, hết hạn nghĩa là vô giá trị , lúc này chức năng resend OTP sẽ cần có để người dùng nhận lại OTP mới


6. Verify that once used, it should not be allowed to be used again.

Xác nhận rằng một khi OTP đã được sử dụng, nó không được phép dùng lại một lần nữa, một và chỉ một lần sử dụng thành công duy nhất.


7. Verify that resend OTP functionality is working properly.

Đây là chức năng backup cần phải có cho tính năng OTP, xác nhận rằng chức năng resend OTP là hoạt động đúng giống như lần gửi OTP đầu tiên, tất nhiên kết hợp với 2) thì chức năng này cũng nên giới hạn số lần sử dụng )

8. Verify that once user resent the OTP, the old one should be of no use.

giả sử bạn có được OTP ở lần gửi đầu tiên và khoan hãy sử dụng, sau đó bạn nhận thêm một OTP mới bằng tính năng resend OTP, hãy xác nhận rằng OTP đầu tiên bạn nhận được sẽ không sử dụng được.

9. Availability of Help and Documentation Link for OTP usage.

Cuộc sống mà, đôi khi bạn biết rõ OTP là gì nhưng vẫn tồn tại đâu đó 1 số người không nắm rõ nó, hãy chắc chắn rằng hệ thống của mình có tài liệu hướng dẫn sử dụng OTP

10. Verify for Case Sensitiveness.

Khó hiểu nhỉ, sao lại có nhạy cảm với OTP ở đây :v có thể là OTP nên phức tạp 1 tí, bao gồm một dãy các ký tự chữ và số tạo ra ngẫu nhiên

11. Check for types of characters OTP supports: Only Digits, Only Alphabets, Alphanumeric.

Kiểm tra các kiểu ký tự mà OTP hỗ trợ: Chỉ chữ số, chỉ chữ cái hoặc bao gồm số và chữ

12. How many times user can provide invalid OTP?

Xác định số lần được phép nhập sai OTP , định dò OTP hả, mơ đi nhé

13. After multiple invalid try, verify that system temporarily blocks the account.

Quá số lần được phép nhập sai OTP thì phải có biện pháp ngăn chặn như khóa tài khoản, khóa chức năng OTP v...v

14. Verify that after temporary blocking of account, system does not send the one-time password.

Xác nhận rằng sau khi account đã tạm thời bị khóa thì hệ thống không được gửi OTP nữa, bị khóa rồi có giữ cũng bằng thừa thì gửi làm gì cho tốn tiền nhỉ

15. Provide an invalid Phone Number or E-Mail address and submit the OTP. Check the validation

Một case check invalid data thông thường, ở một số hệ thống vẫn cho phép nhập sai số điện thoại hoặc email , đơn giản là bạn sẽ không nhận được OTP thôi

16. Are the one-time password patterns are predictable?

Xem xét liệu OTP có thể dễ dàng bị đoán được hay không ? Tất nhiên là nếu nó được tạo bởi một chuỗi số và chữ kết hợp ngẫu nhiên thì khỏi đoán , còn nếu OTP là một chuỗi từ có ý nghĩa thì...

Trên đây là một số kịch bản khi kiểm thử OTP , vì bài viết còn khá nhiều thiếu sót nên nếu như bạn có ý kiến đóng góp gì thì đừng ngại chia sẻ nha!!

Cảm ơn mọi người ạ!!

Tài liệu tham khảo: https://www.facebook.com/testingsharing.page/posts/185865193732318