Kiểm thử phần mềm: Các phương pháp kỹ thuật testing quan trọng

Trong vòng đời phát triển phần mềm, các tester sẽ phải kiểm thử từng đơn vị cho đến kiểm thử hệ thống. Quy trình này mất nhiều hay ít thời gian phụ thuộc vào kế hoạch kiểm thử và sự linh hoạt trong việc lựa chọn phương pháp phù hợp cho mỗi giai đoạn khác nhau của các dự án phần mềm.

Trong bài viết này, gumi Solutions sẽ giới thiệu cho bạn một số phương pháp kiểm thử phần mềm (phân loại theo loại kiểm thử) và gợi ý các giai đoạn phù hợp để vận dụng. Ngoài ra, bạn sẽ biết thêm một số nguyên lý cơ bản và cách thiết lập hiệu quả các phương pháp kiểm thử phần mềm.

Có những loại kiểm thử phần mềm nào?

Functional Testing có thể hiểu là kiểm thử chức năng loại kiểm thử hộp đen (black box testing), phương pháp này không yêu cầu bạn phải biết nhiều về mã code mà chỉ cần tập trung vào test chức năng của phần mềm. Từ đó, bạn có thể kiểm chứng sự ổn định của sản phẩm dựa vào yêu cầu từ phía khách hàng. 

Một số phương pháp kiểm thử phần mềm theo chức năng thông dụng như:

  • Unit Testing – Kiểm thử đơn vị
  • Integration Testing – Kiểm thử tích hợp
  • System Testing – Kiểm thử hệ thống
  • Acceptance Testing – Kiểm thử chấp nhận

Bốn phương pháp kiểm thử phần mềm theo chức năng (Functional Testing)

Non-Functional Testing (Kiểm thử phi chức năng) là kiểm thử được thiết kế để kiểm tra các khía cạnh phi chức năng của ứng dụng phần mềm như: độ tin cậy, tiện ích, hiệu suất v.v… Ngoài ra, nó có thể kiểm tra mức độ sẵn sàng của hệ thống liên quan đến các tham số phi chức năng (các tham số này thường sẽ không bao giờ được giải quyết với kiểm thử chức năng).

Các phương pháp kiểm thử

Đối với Functional Testing
Unit Testing – Kiểm thử đơn vị

Unit Testing (Kiểm thử đơn vị) là quá trình kiểm tra từng bộ phận, chức năng riêng lẻ của phần mềm. Đây là quá trình được thực hiện bởi đội nhóm phát triển. 

Đối với mỗi dự án, phương pháp kiểm thử này rất quan trọng vì nó sẽ giúp bạn phát hiện được lỗi ngay từ giai đoạn đầu tiên. Hơn nữa, phương pháp này sẽ ngăn chặn các lỗi nghiêm trọng hơn trong giai đoạn kế tiếp, tránh mất nhiều thời gian, chi phí trong việc sửa chữa, khắc phục.

Do đó, kiểm thử đơn vị là một phương pháp kiểm thử quan trọng không thể thiếu để bảo đảm chất lượng hệ thống

Integration Testing – Kiểm thử tích hợp

Integration Testing là phương pháp kiểm thử được sử dụng khi kết hợp 2 hay nhiều mô đun để kiểm tra sự ổn định của phần mềm, bên cạnh đó quá trình hợp nhất này cũng sẽ phải dựa theo kế hoạch định sẵn trong chiến lược kiểm thử. 

Dưới đây là một ví dụ cơ bản để bạn hiểu rõ hơn về phương pháp Integration Testing.

Máy tính có 3 bộ phận cơ bản: màn hình, chuột và bàn phím. Kiểm thử tích hợp 3 bộ phận trên nghĩa là bạn sẽ tích hợp màn hình và bàn phím, từ đó sử dụng chuột để kiểm tra sự ổn định của các dữ liệu được cài đặt trên màn hình. 

Một số phương pháp chính thường được sử dụng trong Integration Testing:

  • Top-Down Approach: Đây là cách tiếp cận từ trên xuống dưới, có thể hiểu là thử trước các mô đun với chức năng cao nhất, sau đó kết hợp chúng với mô đun phụ để kiểm thử và đo lường lại sự ổn định.
  • Bottom-up Approach: Đây là cách tiếp cận dữ liệu từ dưới lên trên, có thể hiểu là kiểm thử các chức năng phụ trước rồi mới kiểm thử toàn bộ hệ thống.
  • Mixed Approach: Phương pháp này sẽ kết hợp giữa 2 phương pháp Top-down ApproachBottom-up Approach. Tuy nhiên phương pháp Mixed Approach này chỉ được thực hiện khi chúng cùng được phát triển và có cùng đơn vị kiểm thử.
  • Big Bang Approach: Phương pháp này sẽ kết hợp tất cả các mô đun trong cùng 1 lần kiểm thử. Mặc dù mang đến sự thuận tiện nhưng nó sẽ rất khó để xác định được đâu là mô đun đang xảy ra lỗi. 
System Testing – Kiểm thử hệ thống

Đây là phương pháp kiểm thử toàn bộ hệ thống, ngay cả khi phần mềm đã được hoàn thiện vẫn có thể kiểm thử để tìm ra các lỗi tiềm ẩn bên trong hệ thống.

Tất cả các mô đun trên hệ thống sẽ được tích hợp để kiểm thử giống với hệ thống đã hoàn chỉnh, lúc này kịch bản kiểm thử trước đó cũng sẽ được áp dụng để tìm lỗi. Đặc biệt, toàn bộ chức năng của phần mềm sẽ được kiểm thử để xác minh chúng có đang đúng theo yêu cầu của khách hàng không.

Acceptance Testing – Kiểm thử chấp nhận

Acceptance Testing sẽ được thực hiện khi một sản phẩm đã hoàn chỉnh, bắt đầu vận hành để nghiệm thu và khách hàng sẽ là người xác minh lại sản phẩm đó đã đúng theo mong đợi chưa.

Các loại Acceptance Testing thông dụng:

  • Kiểm thử Alpha: Phương pháp này được thực hiện bởi các thành viên nội bộ của công ty phát triển phần mềm (lập trình viên và tester là người đã phát triển sản phẩm nên không thực hiện phương pháp kiểm thử này).
  • Kiểm thử Beta: Phương pháp này được thực hiện bởi người dùng thực tế trong môi trường thực. Đó là khi ứng dụng được vận hành để thu thập ý kiến từ người dùng thực tế, việc này làm giảm tỷ lệ mắc lỗi trong môi trường sản xuất.
Đối với Non-Functional Testing
Performance Testing – Kiểm thử hiệu suất

Mục đích của Performance Testing là xác minh lại xem hệ thống có đáp ứng được yêu cầu phi chức năng theo đúng dữ liệu có trong tài liệu hay không. Ngoài ra, nó cũng giúp xác định mức độ ổn định của phần mềm dựa trên thời gian phản hồi.

Load Testing

Phương pháp này được sử dụng để kiểm thử sự phản hồi của dữ liệu tăng lên trên hệ thống phần mềm. Cụ thể, khi mức độ load testing tăng đến mức độ cao nhất thì bạn có thể đánh giá lại quá trình hoạt động của ứng dụng có đang theo đúng mong đợi hay không? Một cách hiểu đơn giản khác là Load Testing tăng khi lượng người sử dụng ứng dụng tăng đến ngưỡng cho phép một cách liên tục. 

Đây là một ví dụ cụ thể về Load Testing: Đối với phần mềm, thời gian phản hồi trong vòng 15 giây tương ứng với số người đăng nhập là 500. Khi đó, việc kiểm thử sẽ tiếp tục diễn ra cho tới khi số lượng người đăng nhập đạt mức 500 theo kế hoạch.

Stress Testing

Khi số lượng người dùng đang quá tải, phương pháp Stress Testing sẽ được áp dụng để kiểm thử phần mềm đang gặp lỗi ở đâu. Lỗi hiệu suất ở đầu vào và đầu ra không ổn định cũng chính là điểm nhấn đối với dạng kiểm thử này.

Volume Testing

Đối với các dự án có khối lượng dữ liệu khủng, phương pháp Volume Testing sẽ được áp dụng để xác định mức độ hiệu quả và thời gian sử dụng của phần mềm. Đồng thời quan sát các dữ liệu bị hao hụt trong quá trình kiểm thử.

Security Testing – Kiểm tra bảo mật

Security Testing dùng để kiểm tra độ bảo mật thông tin đối với toàn bộ sản phẩm phần mềm, nhằm xác minh xem phần mềm đã được bảo mật hay chưa. 

Ngoài ra, phương pháp này còn giúp kiểm tra:

  • Độ bảo mật trong tài khoản (chỉ khi bạn nhập đúng thông tin thì mới được phép truy cập vào ứng dụng)
  • Quyền truy cập vào ứng dụng (kiểm thử bảo mật chỉ cho phép những người được uỷ quyền truy cập)
  • Phiên sử dụng (các phần mềm ứng dụng về lĩnh vực tài chính cần phải chờ nếu phiên sử dụng đã hết hạn)
Usability Testing

Đây là phương pháp giúp bạn kiểm tra mức độ thân thiện giữa người dùng thực và ứng dụng, cụ thể như màn hình hiển thị, nút điều hướng, chức năng, tin nhắn v.v…

Compatibility Testing – Kiểm thử tương thích

Mục đích là kiểm tra độ tương thích của hệ thống trên các nền tảng di động, website. Một ứng dụng tương thích cần đảm bảo được tính linh hoạt và hoạt động ổn định trên mọi công cụ trình duyệt, trên các hệ điều hành và trên thiết bị di động. 

Installation Testing – Kiểm thử cài đặt

Installation Testing là một trong những bước kiểm thử quan trọng không thể bỏ qua. Để sử dụng được ứng dụng, việc đầu tiên người dùng cần làm là truy cập vào phần mềm để cài đặt, việc cài đặt này có thể thông qua Internet, CD hoặc vị trí mạng.

Dưới đây là một số trường hợp có thể xảy ra khi cài đặt qua Internet:

  • Kiểm thử tốc độ mạng
  • Kiểm tra quá trình cài đặt và tải xuống của ứng dụng đó
  • Kiểm thử kết nối

Phương pháp kiểm thử phần mềm cần tuân theo những nguyên lý nào?

Càng sớm càng tốt: Ngay từ đầu của giai đoạn phát triển, các hoạt động kiểm thử sẽ giúp bạn phát hiện lỗi (bug) sớm hơn. Khi đó, việc chuyển giao phần mềm sẽ đảm bảo thời gian và chất lượng khách hàng mong muốn. 

Không lặp đi lặp lại một phương pháp: Việc lạm dụng một hay một nhóm phương pháp kiểm thử liên tục sẽ làm mất hiệu quả về sau, thậm chí không tìm thấy lỗi nào mới. Nguyên nhân là do mức độ hiệu quả của các trường hợp kiểm thử sẽ bắt đầu giảm xuống sau một số lần thực hiện. Do đó, chúng ta phải luôn xem xét và sửa đổi các trường hợp kiểm thử trong một khoảng thời gian phù hợp.

Luôn dựa vào ngữ cảnh kiểm thử: Một ứng dụng có thể sử dụng trên trang Web hoặc trên thiết bị di động, tuy nhiên điều này không đồng nghĩa với việc bạn kiểm thử 2 nền tảng này bằng một phương pháp. Nó sẽ không hợp lý ở một số tiêu chuẩn nhất định. Do vậy, nhân viên kiểm thử phải xây dựng các chiến lược khác nhau đối với từng ngữ cảnh, nền tảng của ứng dụng.

Các lỗi (bug) thường sẽ tập trung: Đa số nhân viên kiểm thử (tester) sẽ tìm bugs tại những module – thành phần chức năng chính của hệ thống. Chính vì thế, đa phần các phương pháp kiểm thử sẽ tập trung tại các vị trí này.

Không thể kiểm thử toàn bộ 100% phần mềm: Việc thực hiện đủ các phương pháp kiểm thử cho tất cả các kịch bản là điều không khả khi, trừ trường hợp nó có ít trường hợp. Do vậy, tester có thể phân tích rủi ro và dựa vào mức độ ưu tiên để tập trung kiểm thử các điểm cần thiết, có nguy cơ lỗi cao.

Rất khó để khẳng định “phần mềm không tồn tại bất kỳ lỗi nào”: Dù tester đã áp dụng các phương pháp kiểm thử phần mềm và nhận được kết quả “không có lỗi” thì điều này không thể khẳng định rằng: “Phần mềm không tồn tại bất kỳ lỗi nào”. Khi bạn thực hiện nhiều phương pháp kiểm thử khác nhau làm giảm xác suất lỗi chưa tìm thấy trong phần mềm, ngay cả khi bạn kiểm thử rất chặt chẽ thì phần mềm vẫn có lỗi.

Cách thiết lập phương pháp kiểm thử phần mềm

Kế hoạch dự án

Để thiết lập phương pháp kiểm thử phù hợp thì bạn nên dựa vào mục tiêu chung của toàn dự án. Điều này đồng nghĩa với việc bạn phải lên kế hoạch sắp xếp hình thức kiểm thử ở từng giai đoạn để sắp xếp chiến lược cũng như nhân sự phù hợp trong từng giai đoạn kiểm thử.

Xác định nền tảng phát triển sản phẩm

Tuỳ vào sản phẩm hoặc yêu cầu của doanh nghiệp, chúng sẽ được lập trình trên nền tảng khác nhau. Do đó, bạn cần tìm hiểu nền tảng lập trình của sản phẩm để có thể chọn phương pháp kiểm thử phù hợp.

Xây dựng phương pháp kiểm thử

Sau khi hoàn thành bước xác định kế hoạch dự án và nền tảng phát triển sản phẩm, hoạt động kế tiếp bạn cần tập trung là xây dựng phương pháp kiểm thử dựa trên các tài liệu liên quan để đưa ra các phương pháp có tiềm năng tiếp cận tốt nhất cho dự án.

Báo cáo & Đánh giá mức độ hiệu quả

Khi thực hiện kiểm thử cho phần mềm, bạn cần thiết lập báo cáo để có được cơ sở dữ liệu thực tế. Từ đó, bạn có thể đánh giá được mức độ hiệu quả của các phương pháp và đưa ra các chiến lược phù hợp (nếu cần).

Kết luận

Nhìn chung, việc hiểu rõ về các phương pháp kiểm thử phần mềm và đưa ra chiến lược kiểm thử cho mỗi giai đoạn khác nhau là điều rất cần thiết. Nó không chỉ đảm bảo về chất lượng hệ thống phần mềm mà còn tối ưu hoá thời gian và rủi ro đáng kể.


gumi Solutions – Công ty cung cấp dịch vụ phát triển phần mềm chất lượng Nhật Bản

gumi Solutions là công ty phát triển phần mềm có hơn 10 năm kinh nghiệm làm việc với các doanh nghiệp Nhật Bản, Mỹ, Úc, Việt Nam,… Với sự phát triển không ngừng trên nhiều lĩnh vực nói chung và CNTT nói riêng tại Việt Nam, gumi Solutions tuân thủ các quy trình nghiêm ngặt và chất lượng ISO tiêu chuẩn, cam kết cung cấp dịch vụ chuyên nghiệp, chất lượng được phục vụ bởi đội ngũ nhân viên giàu kinh nghiệm và nhiệt tình.

Hãy liên hệ ngay với gumi để thiết kế phần mềm lý tưởng nhất cho doanh nghiệp của bạn ngay hôm nay.

Thông tin liên lạc:

Fanpage: https://www.facebook.com/gumisolutions

Email: contact@gumisolutions.com

Hotline: 028 3620 6782

Địa chỉ: 290/26 Nam Kỳ Khởi Nghĩa, Phường Võ Thị Sáu, Quận 3, TP.HCM

Related Posts

Leave a comment