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

[Software Testing] ...cho ứng dụng Phân tích dữ liệu

[Software Testing] ...cho ứng dụng Phân tích dữ liệu

by Admin Dathoc -
Number of replies: 0

#koolj_softwaretesting
#dataanalysis
#bigdataanalysis
#testing
#chiase
Về nghề: Kiểm tra/ kiểm định/ kiểm thử phần mềm cho ứng dụng Phân tích dữ liệu tổ chức doanh nghiệp/ cho phần mềm ứng dụng Dữ liệu lớn: theo cách ĐƠN GIẢN NHẤT

Hiện nay theo xu thế và sự phát triển của công nghệ, anh chị em có thể thấy ngành nghề nào cũng ràng buộc với ...dữ liệu; và ảnh hưởng tới việc ra quyết định của các Nhà đầu tư phần lớn là: qua... dữ liệu. Gần như hiện tại, tháng 8/2021, ai có dữ liệu nhiều, ai có dữ liệu cập nhật....gần như đã nắm chắc phần thắng trong thị trường. Nhưng để chắc chắn 100% họ cần hiểu ý nghĩa các dữ liệu đó. Chính vì thế hàng loạt các nghề CNTT mới (đối với Việt Nam) được phát huy vài năm gần đây về Phân tích dữ liệu: phân tích xu thế trên dữ liệu tài chính, tín dụng (data analysis); thu thập dữ liệu (crawl data); kiến trúc dữ liệu phân tích (datawarehouse); kiến trúc dữ liệu lớn (bigdata); tạo ứng dụng trên nền dữ liệu lớn (bigdata application); ứng dụng cảnh báo trên dữ liệu (recommendation system); trí tuệ nhân tạo cho ứng dụng (ai application); nhận diện phân loại dữ liệu đối tượng hình ảnh (computing vision)... Và để đối ứng các nghề mới trên: các nghề kiểm tra kiểm định kiểm thử các phần mềm dạng Phân tích dữ liệu trên được tuyển trạch.

👉Vậy để đối ứng cho những nhu cầu nghề mới của tổ chức, các anh chị em software tester cũng cần trang bị những kiến thức trong công nghệ phân tích dữ liệu, để theo đó phù hợp hơn với việc: Thiết kế những trường hợp kiểm thử, thực thi kiểm tra; nhận diện tối ưu....cho những ứng dụng Phân tích dữ liệu. Vậy theo cá nhân, các miền kiến thức bên cạnh kiến thức Kiểm tra kiểm thử phần mềm cơ bản, anh chị em software tester cần bổ sung những miền kiến thức sau:
.
.
(Mình không rõ cái này có phù hợp với group không nếu OK admin approve, nếu NOT OK admin có thể xoá bài nhé, thanks)
.
.
Để ngắn gọn anh chị em có thể tham khảo kiến thức Nhà Phân tích dữ liệu nói chung, và Dữ liệu lớn ở đây: dathoc.net/skill
Và chúng tôi có hẳn một series Youtube Free clips, nói về đề tài này: https://www.youtube.com/watch?v=faSk089vIo0&list=PL751V5I3RIDFwgpwl-wvBEDsOd8w5TB75
Dài dòng hơn, anh chị em xem các nội dung bên dưới:
.
.
👉 Cơ bản thế nào gọi là Phân tích dữ liệu cho một ngành nghề tổ chức (theo trải nghiệm cá nhân) và các ứng dụng của nó:
- Phân tích thống kê: phép tính toán lớn nhất, nhỏ nhất, tìm độ lệch chuẩn, đo tương quan, tìm công thức chu kỳ, tìm hồi quy chu kỳ....ví dụ: các bài toán dự báo tài chính về...quá khứ; các bài toán phân tích tổng hợp trên kỹ năng thống kê
- Phân tích dự đoán: các thuật toán phân loại, các thuật toán nhận diện, máy học giám sát, không giám sát.... ví dụ: các thuật toán dự đoán số liệu, chỉ số tài chính trong tương lai gần; dự đoán xa; dự đoán qua nhận diện hình ảnh; âm thanh; phân loại dự đoán ngôn ngữ tự nhiên; các hệ thống gợi ý; các hệ thống cảnh báo
- Phân tích ra quyết định: dựa trên mô hình, công thức dự đoán, có thể tối ưu hoá để đưa ra những quyết định tiếp theo: vd dư các công cụ AI nhận diện qua hình ảnh tối ưu để chấm công; nhận diện hình ảnh chống hình ảnh giả mạo; nhận diện và tự viết câu chữ trong công nghệ phân tích ngôn ngữ tự nhiên để...viết bài báo; xác suất tối ưu nhất về dự báo thời tiết; tối ưu nhất cho xe lái tự động điều khiển; tối ưu nhất chăm sóc bệnh nhân theo phác đồ điều trị; tìm vòng đời virus;

👉 Cơ bản thế nào gọi là công nghệ Dữ liệu lớn (theo trải nghiệm cá nhân) và ứng dụng phần mềm trên nền tảng Dữ liệu lớn
- Là công nghệ thường gắn với 3 vấn đề chính: dữ liệu nhiều (TB); cần xử lý biến đổi nhanh (TB/giây); xử lý đa dạng nhiều kiểu dữ liệu
- Công nghệ lưu trữ và kiến trúc lưu trữ (khác với các chuẩn database thông thường đã học ở cấp Phổ thông hay Đại học)
- Công nghệ lưu chuyển và xử lý (tổng hợp các chuẩn xử lý phân tán, đồng thời, song song đã học)
- Các ứng dụng thông thường thấy: thống kê dự báo trên dữ liệu điều tra dân số; thống kê dự báo giao thông; thống kê dự báo đơn hàng dữ liệu bán hàng của tổ chức đa quốc gia; thống kê dự báo về an ninh mạng quốc tế; thống kê dự báo về dữ liệu text bài báo phản động; về nội dung bài luận, tiểu thuyết văn học; thống kê dự báo trên hình ảnh thiên văn học; thống kê dự báo trên dữ liệu của hàng tỷ thiết bị IoT; thống kê dự báo trên dữ liệu hàng tỷ hình ảnh trong điều tra tội phạm quốc tế.

Fans của group có thể xem các demo tại: dathoc.net/demo
.
.
Vậy cần lưu ý với việc Thiết kế testcase cho các ứng dụng này:
👉 Về thiết kế testcase cho ứng dụng Phân tích dữ liệu:
Hãy nhìn bài toán đơn giản hơn: Đó cũng chỉ là một phần mềm. Xong đôi khi đây là phần mềm mang tính dự đoán. Vậy cần nhất là bạn có nhiều căn cứ khác để so sánh với các kết quả dự đoán.
- Đơn giản nhất: công việc phân tích đòi hỏi cần làm sạch dữ liệu trong biến đổi: vậy nếu dữ liệu nhiều quá hãy validate tạm 1-200 mẫu dữ liệu, 1k-200k mẫu dữ liệu... để quyết định các case làm sạch có ok không; độ toàn vẹn của dữ liệu sau làm sạch
- Đơn giản nhất: là bạn dùng công nghệ blackbox test: tức là ứng dụng phân tích input đống dữ liệu A, thành output kết quả B. Đó!!!, còn lại là việc bạn biến đổi, sao chép đống dữ liệu A thành A phẩy, A hai phẩy.... để xem kq B thế nào.
- Đơn giản nhất: nếu bạn ngại tìm hiểu thuật toán họ đang làm gì... với nghĩa đen để phân tích: vậy hãy chạy thật nhiều dữ liệu mẫu để xem thuật toán có... ổn định với nhiều loại dữ liệu không; các cận trên dưới của dữ liệu; các trường hợp dị biệt của dữ liệu
- Đơn giản nhất: bạn dùng phần mềm khác, có thuật toán tương tự: hoặc đầu ra tương tự để... xác nhận cách đang làm ở ứng dụng bạn đang test có tương đồng không: về chất lượng đầu ra; về tốc độ xử lý
- Với tester: thông thường là bài toán compare, và validate, vậy dữ liệu text thì kiến trúc ra vào dễ thấy; với dữ liệu ảnh thì hơi mất time hơn; dữ liệu âm thanh cũng cần những công cụ chuyên biệt. Vậy cần bạn học thêm một số tool để một hai câu lệnh biết ngay dữ liệu đang có có theo chuẩn không... so sánh với ứng dụng đang test. Một số framework, ví dụ công nghệ:
+ Biến đổi mapreduce data text
+ Sound extractor to bit
+ Nhận diện mặt người, đối tượng trên một tập ảnh: yolo, pytorch..qua mô hình có sẵn ss-mobinet
+ Phân loại câu chữ: tokenize word và so sánh tập words: VNnlp; vn.vitk..
+ Các trường phái xử lý trên biến đổi transform: https://simpletransformers.ai/ và các mô hình đi kèm để làm nhanh các mô hình.
- Sau đó mới tìm hiểu
+ Thuật toán thống kê đó ưu nhược điểm là gì
+ Thuật toán biến đổi có giám sát, không giám sát...ưu nhược gì
+ Độ chính xác, độ ổn định của mô hình tính trên yếu tố gì
+ Các kết nối vào ra từ ứng dụng tới mô hình có bảo mật không
+ Visualize có đúng với data không
+ Visualize có nhanh, và ý nghĩa từ visualize có đảm bảo yêu cầu cuối không

Ví dụ stress test cho ngân hàng đảm bảo độ rủi ro tín dụng:
https://www.researchgate.net/figure/Interest-Rate-Risk-Stress-Tests-in-the-Context-of-the-FSAPs_tbl1_5123822

Ví dụ image process testing cho hình ảnh:
https://core.ac.uk/download/pdf/301359421.pdf

Ví dụ cách kiểm tra mô hình tối ưu trong nlp text
https://towardsdatascience.com/testing-profiling-and-optimizing-nlp-models-with-pytest-cython-and-spacy-a78a8397f9f3
.
.
👉 Về thiết kế testcase cho ứng dụng Dữ liệu lớn:
Hãy nhìn bài toán đơn giản hơn: Đó cũng chỉ là một phần mềm. Xong nó thêm một số yếu tố về công nghệ. Nên lượng data xử lý sẽ lớn hơn, tốc độ giữ nguyên, và cần quan tâm tới hiệu quả đầu ra.
- Cái này đôi khi cần đúng môi trường mới xử lý được: vì không đơn giản chỉ bạn và một máy tính là xong như test phần mềm thông thường; hay phần mềm phân tích dữ liệu; vậy bạn cần học thêm
+ Tạo môi trường Dữ liệu lớn nói chung thế nào
+ Tạo môi trường Dữ liệu lớn trên cloud thế nào: thực hành luôn với AWS hoặc Azure hoặc Google Cloud
- Đơn giản nhất khi bạn đã có môi trường: Trước khi tìm những cái ĐÚNG trong đầu ra loại ứng dụng này: Bạn cần ngay thiết kế những case về xử lý phân tán, song song... kiểu nhièu cpu nhiều máy xử lý cùng lúc; kiểu ram trên các máy được tận dụng tối đa; kiểu như bạn muốn sinh một máy khác để chạy và kèm theo đó cpu và ram ở máy mới phải đồng thời tích hợp chạy
- Đơn giản nhất khi bạn đã có môi trường: Trước khi tìm những cái ĐÚNG trong đầu ra: kèm bài toán xem kiến trúc lưu trữ dữ liệu phân tích (datawarehouse) có tối ưu không: việc tối ưu datawarehouse thông thường dựa trên: tốc độ nhanh (TB/giây, GB/giây) sau khi truy vấn select where; đã có tổng hợp theo lượng và theo thời gian các số liệu cần với thuật toán; đã có đủ những đặc thù trên dữ liêu bài toán cần phân tích chưa
- Đơn giản nhất khi bạn đã có môi trường: lại bài toán làm sạch dữ liệu cần phân tích (như bài toán kiểm tra ứng dụng phân tích dữ liệu)
- Và khi tính toán phân tán và song song, ngay cả khi visualize
+ Trên 1 triệu điểm ảnh visualize được không? 1 tỷ điểm ảnh? nhiều tỷ điểm ảnh
+ Tốc độ khi visualize tỷ điểm ảnh
- Và làm các case tiếp theo Y HỆT NHƯ việc bạn làm kiểm tra ứng dụng Phân tích dữ liệu

Vài ví dụ như tester này nêu các phạm trù cho bigdata testcase là ok này:
https://joinup.ec.europa.eu/sites/default/files/document/2018-02/SC406_D02.01_Requirements%20and%20good%20practices%20for%20a%20Big%20Data%20Test%20Infrastructure_v3.00.pdf

Hoặc test kiến trúc cho dữ liệu ảnh xử lý thế nào khi có quá nhiều ảnh lớn:
dathoc.net/bookbig, chương 14 sách pro hadoop về “Image As Big Data” Systems ... họ xử lý thế nào khi ảnh vượt xa các mô hình xử lý 600x600 px đang có hiện tại

.
.
👉 Về thực thi kiểm tra phần mềm cho các ứng dụng Phân tích và Dữ liệu lớn
<Không khác gì so với công việc thực thi các trường hợp kiểm tra kiểm thử các bạn tester đang làm. Hãy làm tốt những gì các bạn được dạy ở Cơ bản cho kiểm định viên phần mềm là được rồi>

----
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