QUAN ĐIỂM TEST ĐỐI VỚI CHỨC NĂNG IMPORT/UPLOAD CSV

01/07/2021 63
CODEWELL TESTING

Khi thực hiện nhập hoặc đăng ký thông tin vào một hệ thống hoặc data từ hệ thống này qua hệ thống khác, thì với lượng data lớn, nếu thực hiện bằng tay thì sẽ tốn rất nhiều thời gian và thông tin, thậm chí có thể sẽ sai sót.
==> Yêu cầu đối với thông tin luôn cần chính xác và tốn ít thời gian nhất để hoàn thành việc chuyển đổi data vào hệ thống.

Để giải quyết bài toán này thì thường sẽ có các chức năng như import/upload hoặc chạy batch tự động để input data hoặc liên kết data từ hệ thống này qua hệ thống khác.

Đối với chức năng nào thì để kiểm tra được việc hoạt động đúng cũng cần công đoạn việc testing và đối với mỗi chức năng, mỗi Khách hàng thì yêu cầu xử lý sẽ không giống nhau.

Trong bài viết này sẽ giới thiệu về các quan điểm test cần phân tích để thực hiện test chức năng import data từ file CSV vào hệ thống (hay Database).

I. Các quan điểm cần phân tích đối với chức năng upload/import file CSV

Trong quy trình phát triển phần mềm việc phân tích spec để hiểu rõ các yêu cầu, các trường hợp test nếu được thực hiện càng sớm thì càng tốt.
(Spec:viết tắt của từ specification – tài liệu mô tả kỹ thuật, tài liệu mô tả chi tiết)

Dựa trên spec, khi phân tích thì mỗi quan điểm cần:
● Xác định được input, output.
● Xác định được các vấn đề mô tả không rõ ràng, mâu thuẩn trong các đặc tả của spec về xử lý.
● Share các trường hợp test với bộ phận phát triển càng sớm càng tốt để triển khai ngay từ đầu.

Đối với chức năng Import CSV dưới đây sẽ phân tích theo follow xử lý dưới:

tester

Chia nhỏ follow này để phân tích:
CSV—->Read (Check file và nội dung)–>Submit–>Database (Viết tắt là DB)

1. Các quan điểm test liên quan tới việc check đầu vào file CSV

①. File tồn tại/ không tồn tại.
②. Có quy định đặt tên file không → tên file đúng/ không đúng.
③. File có quy định giới hạn dung lượng import không?

2. Các quan điểm test liên quan nội dung file CSV

Cần làm rõ các yêu cầu về nội dung trong file CSV
Common
①Template của file CSV có title hay không có title?
②Mỗi bản ghi dữ liệu có bao nhiêu field và phân cách nhau bằng ký tự nào đó hay như thế nào?
③Quy định mỗi bản ghi dữ liệu như thế nào, có thể có trường hợp như dưới:
TH1: Mỗi dòng là một bản ghi dữ liệu.
TH2: Tất cả các record sẽ là 1 dòng và mỗi bản ghi dữ liệu được phân cách nhau bằng ký tự được quy định nào?
④File null sẽ xử lý như thế nào?
⑤Format file CSV không đúng template (dư, thiếu item) xử lý như thế nào?

Các quan điểm test đối với từng item cụ thể của file CSV
Tùy yêu cầu của mỗi spec mà có quan điểm đối với từng item cụ thể khác nhau. Tuy nhiên sẽ có những quan điểm common dưới cần phân tích (Tham khảo hình dưới):

quan diem test 2

quan diem test 3

① Tính bắt buộc/không bắt buộc.
② Kiểu dữ liệu, định dạng, độ dài min/max.
③ Check tính thống nhất item mô tả CSV và định nghĩa item ở DB để confirm tính đúng đắn và không mâu thuẫn, xung đột trong xử lý.
||● Thống nhất về kiểu dữ liệu
||● Thống nhất về ràng buộc null/ not null
||● Item có ở CSV nhưng không có ở DB
||● Item không có ở CSV nhưng có ở DB

Vì sao phải phân tích tính thống nhất thì mọi người xem 2 ví dụ dưới để hiểu rõ hơn
Ví dụ 1:
Item price tại [CSV import item] đang mô tả là kiểu số 10 ký tự
Tại [Database Design] đang định nghĩa kiểu [int(8) unsigned]
int(8) unsigned sẽ có giá trị từ 0~4294967295
Nếu file CSV fill item price có 10 ký tự (9000000000) thì insert vào DB sẽ lỗi vì vượt ngưỡng 0~4294967295

Picture4
Nên cần confirm lại spec để update thống nhất kiểu dữ liệu.
VD Spec có thể update lại thành 8 chữ số thì khi input sẽ không khi nào vượt ngưỡng 0~4294967295:

Ví dụ 2:
Tại [CSV import item] Item price đang mô tả cho phép null nhưng tại [Database Design] đang định nghĩa là trường not null
Cần confirm xử lý khi csv nếu fill null thì sẽ đăng ký xuống DB như thế nào?
Ví dụ khi null sẽ cho đăng ký xuống DB giá trị là 0 → Lúc đó sẽ cần update lại định nghĩa DB là cột Default là 0

quan diem test 5

④ Phân tích logic xử lý của từng item.
||● Data Add: data như thế nào gọi là data add mới (Ví dụ product_id ở CSV sẽ không tồn tại ở table…)
||● Data Update: data như thế nào gọi là data update (Ví dụ product_id ở CSV tồn tại ở table…)
||● Data Delete: data như thế nào gọi là data delete (Ví dụ product_id tồn tại ở table nhưng không tồn tại ở CSV

3. Các quan điểm test liên quan xử lý khi Submit data
① Submit với data bình thường.
||● File chỉ có các record add
||● File chỉ có các record update
||● File chỉ có các record delete
||● File có đồng thời cả 3 loại dữ liệu trên

② Submit với data lỗi trộn lẫn data bình thường.
||●Mỗi trường trong record nếu lỗi thì sẽ dừng xử lý hay xử lý tới các trường tiếp theo.
||●File có record lỗi và record bình thường thì sẽ xử lý như thế nào: thường sẽ có các option bên dưới và tùy KH mong muốn:
Skip record lỗi, đăng ký record bình thường
Stop và rollback data
Đăng ký tới record bình thường và stop việc import khi gặp record lỗi

③ Submit với data số record lớn (vd 10000 records).
④ Khi đang xử lý import thì gặp sự cố về mạng hoặc thiết bị thì xử lý như thế nào

Kết luận
Mặc dù đây không phải là chủ đề mới mẻ nhưng hy vọng rằng nó có thể mang lại được giá trị nào đó cho mọi người.
Mình cảm ơn các bạn vì đã đọc bài viết này và mong nhận được những đóng góp, chia sẽ của mọi người để làm phong phú chủ đề này hơn.

————————————————————–

Phần tiếp theo tác giả sẽ giới thiệu tiếp về 2 nội dung bên dưới:
Define test case đối với quan điểm đã phân tích
Cách Test đối với testcase có data lớn

HỢI TT, CO-WELL Asia

Đọc thêm các bài viết thú vị từ CO-WELL Asia tại đây.

Cập nhật các thông tin hữu ích về Kiểm thử phần mềm tại đây.