Kiểm thử phần mềm là gì ? quy trình thực hiện

Kiểm thử phần mềm là gì ? quy trình thực hiện

Hãy cùng SFE tìm hiểu về kiểm thử phần mềm và quy trình thực hiện kiểm thử.

A. Kiểm thử phần mềm là gì và tầm quan trọng của nó

Kiểm thử phần mềm là gì?

Kiểm thử phần mềm là phương pháp kiểm tra xem sản phẩm phần mềm đó trên thực tế có phù hợp với các yêu cầu đã đặt ra hay không, và đảm bảo rằng không có lỗi hay khiếm khuyết. Nó bao gồm việc kiểm tra, phân tích, quan sát và đánh giá các khía cạnh khác nhau của sản phẩm. Người kiểm thử phần mềm (Tester) sử dụng kết hợp các công cụ thủ công và tự động. Sau khi tiến hành kiểm thử, Tester báo cáo kết quả cho team phát triển. Mục đích là xác định các lỗi, khiếm khuyết hoặc các yêu cầu còn thiếu so với yêu cầu thực tế.

Cần hiểu được tầm quan trọng của việc kiểm thử đối với mỗi công ty phát triển phát mềm. Với kiểm thử phần mềm, nếu có bất kỳ lỗi nào, nó có thể được xác định sớm và giải quyết trước khi giao sản phẩm.

Nhiều công ty phát triển phần mềm thường bỏ qua bước này vì ngân sách eo hẹp và cho rằng nó sẽ không dẫn đến hậu quả lớn. Nhưng để tạo những trải nghiệm tốt nhất cho khách hàng, chất lượng sản phẩm cần phải được đặt lên hàng đầu. Và vì vậy, việc kiểm thử sản phẩm để tìm lỗi là điều gần như bắt buộc. Doanh nghiệp chỉ có thể mang đến giá trị cho khách hàng khi sản phẩm cung cấp được coi là lý tưởng. Và để đạt được điều đó, các công ty phải đảm bảo rằng người dùng không gặp phải bất kỳ vấn đề nào khi sử dụng sản phẩm của mình. Cách tốt nhất để làm điều đó là tạo ra sản phẩm không có lỗi.

kiem thu phan mem la gi ve kiem thu phan mem

Vai trò của kiểm thử phần mềm rất quan trọng trong quá trình phát triển

Thêm nữa, khi khách hàng sử dụng sản phẩm, họ rất có thể phải tiết lộ một số thông tin cá nhân. Để ngăn chặn tin tặc nắm được dữ liệu này, việc kiểm tra bảo mật là điều bắt buộc trước khi phần mềm đến tay người dùng. Sản phẩm phần mềm được kiểm thử kỹ càng qua quy trình phù hợp sẽ đảm bảo độ tin cậy, bảo mật, giúp tiết kiệm thời gian, chi phí, mang đến sự hài lòng cho khách hàng.

Một lý do nữa khiến việc kiểm thử ngày càng trở nên quan trọng đó là phát hiện khả năng tương thích với các thiết bị và nền tảng khác nhau. Giả sử khi phát triển một trang web, Tester phải kiểm tra xem trang web có chạy trên độ phân giải thiết bị khác nhau, các trình duyệt khác nhau hay không? Những gì hoạt động tốt trên Chrome có thể không chạy tốt trên Safari hoặc Internet Explorer. Điều này làm phát sinh nhu cầu kiểm tra trình duyệt chéo, bao gồm kiểm tra tính tương thích của ứng dụng trên các trình duyệt khác nhau.

Lợi ích của Kiểm thử phần mềm là gì?

  • Hiệu quả về chi phí: Đây là một trong những lợi ích quan trọng của kiểm thử phần mềm. Thực tế cho thấy rằng các lỗi thiết kế khó có thể được loại trừ hoàn toàn đối với bất kỳ hệ thống nào. Đó không phải là lỗi bất cẩn của Developer mà đôi khi do sự phức tạp của hệ thống. Nếu các vấn đề về thiết kế không được phát hiện, thì việc tìm ra và sửa các lỗi/khiếm khuyết sẽ trở nên khó khăn và tốn kém hơn. Kiểm thử bất kỳ dự án IT nào cũng sẽ giúp công ty tiết kiệm, việc xác định lỗi trong giai đoạn đầu sẽ giúp quá trình sửa chữa tốn ít chi phí hơn.
  • Bảo mật: Đây là điểm nhạy cảm và dễ bị tấn công nhất của kiểm thử phần mềm. Kiểm thử giúp loại bỏ các rủi ro và vấn đề trong sản phẩm. Cùng với đó, tất cả khách hàng đều đang tìm kiếm những sản phẩm đáng tin cậy.
  • Chất lượng sản phẩm: Đây là yêu cầu thiết yếu của bất kỳ sản phẩm phần mềm nào. Kiểm thử phần mềm giống như việc củng cố danh tiếng công ty bằng cách cung cấp các sản phẩm chất lượng cho khách hàng.
  • Sự hài lòng của khách hàng: Trong bất kỳ hoạt động kinh doanh sản phẩm nào, mục tiêu cuối cùng đều là mang đến cho khách hàng trải nghiệm tốt nhất. Sự hài lòng của khách hàng rất quan trọng trong quá trình hợp tác lâu dài.

B. Phân loại kiểm thử phần mềm

Kiểm thử phần mềm không phải là một việc đơn lẻ. Nó có nhiều hình thức khác nhau và được phân loại theo một số tiêu chí. Về cơ bản, kiểm thử phần mềm được chia làm 4 loại:

 1. Kiểm thử chức năng (Functional testing)

Kiểm thử chức năng là xác minh hệ thống hoạt động theo đúng theo các yêu cầu nghiệp vụ. Hình thức kiểm thử này có thể được thực hiện từ hai khía cạnh: dựa trên yêu cầu (requirements-based) và dựa trên quy trình nghiệp vụ (business – process – based).

Trong kiểm thử dựa trên yêu cầu, các yêu cầu được ưu tiên tùy thuộc vào tiêu chí rủi ro. Điều này sẽ đảm bảo những phần quan trọng nhất sẽ được test đầy đủ. Mặt khác, kiểm thử dựa trên quy trình nghiệp vụ sẽ sử dụng những kiến thức tương ứng. Quy trình nghiệp vụ mô tả các việc liên quan đến nghiệp vụ hằng ngày của hệ thống.

Kiểm thử chức năng bao gồm 5 bước:

  • Xác định các chức năng mà phần mềm sẽ thực hiện.
  • Tạo các dữ liệu đầu vào dựa trên các tài liệu đặc tả kỹ thuật của các chức năng.
  • Xác định các kết quả đầu ra dựa trên các tài liệu đặc tả kỹ thuật của các chức năng.
  • Thực hiện các trường hợp kiêm thử.
  • So sánh kết quả thực tế và kết quả mong muốn.

Trong đó, kiểm thử chức năng còn được chia nhỏ ra thành các loại:

  • Kiểm thử đơn vị (Unit testing)
  • Smoke Testing
  • Sanity Testing
  • Kiểm thử giao diện (Interface testing)
  • Kiểm thử tích hợp (Integration testing)
  • Kiểm thử hệ thống (System testing)
  • Kiểm thử hồi quy (Regression testing)
  • Kiểm thử chấp nhận (Acceptance testing)

Ưu điểm của kiểm thử chức năng:

  • Hình thức kiểm thử này mô phỏng việc sử dụng hệ thống thực tế
  • Được thực hiện trong các điều kiện gần với điều kiện của khách hàng
  • Không có giả định nào về cấu trúc hệ thống được đưa ra trong khi kiểm thử chức năng
  • Rất dễ dàng để thực hiện test thủ công

Ngược lại, kiểm thử chức năng có những giới hạn sau:

  • Khả năng cao xảy ra tình trạng test dư thừa
  • Các lỗi logic trong phần mềm có thể bị bỏ sót trong khi kiểm thử chức năng
kiem thu phan mem la gi phan loai kiem thu phan mem 1
Kiểm thử phần mềm có nhiều hình thức khác nhau và được phân loại theo một số tiêu chí

2. Kiểm thử phi chức năng (Non-functional testing)

Kiểm thử phi chức năng là kiểm tra các đặc tính chất lượng của hệ thống. Ví dụ, kiểm tra xem bao nhiêu người có thể đăng nhập đồng thời vào một phần mềm. Kiểm tra phi chức năng cũng quan trọng không kém như kiểm tra chức năng và ảnh hưởng đến sự hài lòng của khách hàng.

Tương tự, kiểm thử phi chức năng cũng được chia thành các loại:

  • Kiểm thử độ ổn định (Stability testing): đánh giá phần mềm có thể liên tục hoạt động tốt trong hoặc ngay trên khoảng thời gian có thể chấp nhận hay không
  • Kiểm thử khả năng chịu tải (Load testing): đánh giá hoạt động của hệ thống khi khối lượng công việc ngày càng tăng
  • Kiểm thử áp lực (Stress testing): ước tính hoạt động của hệ thống ở trong hoặc vượt quá giới hạn khối lượng công việc dự kiến
  • Kiểm thử tính khả dụng (Usability testing): sản phẩm được test về tính thân thiện với người dùng
  • Kiểm thử bảo trì (Maintainability testing): kiểm tra mức độ đánh giá, thay đổi và test sản phẩm
  • Kiểm thử độ tin cậy (Reliability testing): sử dụng công cụ để tìm, ngăn chặn và loại bỏ lỗi trước khi hệ thống được triển khai
  • Kiểm thử tính tương thích (Portability testing): xác định mức độ dễ dàng hoặc khó khăn mà phần mềm có thể di chuyển từ môi trường này sang môi trường khác

3. Kiểm thử cấu trúc (Structural testing)

Kiểm thử cấu trúc thường được gọi là “hộp trắng” hoặc “hộp thủy tinh” bởi vì phương pháp này quan tâm đến việc tìm kiếm những gì đang xảy ra bên trong, kiểm tra dựa trên phân tích cấu trúc bên trong của thành phần hoặc hệ thống. Nó thường được sử dụng như một cách đo lường của kiểm thử, thông qua độ bao phủ của một tập hợp các yếu tố cấu trúc. Kiểm thử cấu trúc chủ yếu được áp dụng ở kiểm thử thành phần, kiểm thử tích hợp.

Các mục tiêu chính của kiểm thử cấu trúc bao gồm:

  • Nhận ra những điểm bất cập
  • Test chức năng bổ sung
  • Xác định những phần bị thiếu trong bộ kiểm thử

Ưu điểm của kiểm thử cấu trúc:

  • Loại bỏ code chết
  • Có khả năng tìm ra lỗi ở giai đoạn đầu
  • Đảm bảo kiểm tra phần mềm kỹ lưỡng hơn
  • Tiết kiệm thời gian

Bên cạnh đó, nhược điểm của kiểm thử cấu trúc:

  • Kiểm tra kết cấu khá tốn kém
  • Yêu cầu kiến thức về code
  • Đòi hỏi kiến thức vững chắc về công cụ được sử dụng để test
Kiem thu phan mem
Kiểm thử cấu trúc đảm bảo kiểm tra kỹ lưỡng hơn và tiết kiệm thời gian

4.  Kiểm thử liên quan đến các thay đổi (Change related testing)

  • Kiểm thử xác nhận (Confirmation testing)

Khi kiểm thử gặp lỗi, Tester phải xác định nguyên nhân lỗi là do lỗi phần mềm. Sau khi Tester phát hiện lỗi và báo cho Developer để sửa thì phần mềm sau đó sẽ cập nhật phiên bản vá lỗi. Cuối cùng, Tester cần thực hiện kiểm tra thêm một lần nữa để xác định rằng lỗi thực sự đã được giải quyết.

Khi thực hiện kiểm tra xác nhận, điều quan trọng nhất là phải đảm bảo rằng các trường hợp kiểm thử phải được thực hiện chính xác giống như lần đầu tiên, sử dụng cùng một đầu vào, dữ liệu và môi trường kiểm thử để đảm bảo rằng các lỗi đã được sửa. Tester cần phải biết rằng trong lần kiểm thử sau khi vá lỗi khả năng sinh ra lỗi khác trong phần mềm là điều hoàn toàn có thể xảy ra. Vì vậy kiểm thử chính xác ở phiên bản hiện tại của phần mềm là chưa đủ. Cách phát hiện các điểm ngoài ý muốn của việc kiểm lỗi là thực hiện kiểm thử hồi quy.

  • Kiểm thử hồi quy (Regression testing)

Tương tự như kiểm thử xác nhận thì kiểm thử hồi quy liên quan đến việc lặp lại các trường hợp kiểm thử đã được thực hiện trước đó. Kiểm thử hồi quy được thực hiện khi phần mềm thay đổi do sửa lỗi, chức năng mới.

Mục đích của kiểm thử hồi quy để xác minh rằng các sửa đổi trong phần mềm hoặc môi trường không gây ra bất lợi ngoài ý muốn, ảnh hưởng hoặc làm hư các chức năng và hệ thống vẫn đáp ứng các yêu cầu của phần mềm. Tất cả các trường hợp trong quá trình kiểm thử hồi quy sẽ được thực hiện mỗi khi một phiên bản vá lỗi của phần mềm được release, và điều này khiến chúng trở nên lý tưởng cho tự động hóa.

C. Quy trình kiểm thử phần mềm

Vậy là chúng ta đã tìm hiểu xong Kiểm thử phần mềm là gì, lợi ích của nó và các loại kiểm thử. Tiếp theo, hãy cùng đi đến quy trình kiểm thử nhé. Có rất nhiều quy trình khác nhau như: mô hình chữ V, mô hình thác nước, mô hình xoắn ốc, v.v. hoặc có thể là mô hình kết hợp những mô hình trên.

Tùy thuộc vào quy mô của phần mềm và tính cấp thiết của dự án, quy trình kiểm thử sẽ khác nhau. Tuy nhiên, bài viết này CO-WELL sẽ giới thiệu quy trình kiểm thử với 5 bước, bao gồm công việc lập kế hoạch và công việc sau đánh giá như sau:

quy trinh kiem thu phan mem
Quy trình kiểm thử phần mềm được chia thành 5 bước

1. Lập kế hoạch và kiểm soát

Lập kế hoạch kiểm thử là việc tạo ra một tài liệu mô tả tiếp cận tổng thể và các mục tiêu cần test. Bao gồm xem xét cơ sở test, xác định các điều kiện dựa trên phân tích các mục thử test, viết các trường hợp và thiết kế môi trường test. Tiêu chí hoàn thành được chỉ định để biết khi nào việc kiểm thử hoàn tất (ở bất kỳ giai đoạn nào).

Kiểm soát là hoạt động so sánh tiến độ thực tế so với kế hoạch và báo cáo tình trạng, bao gồm cả những sai lệch so với kế hoạch. Nó liên quan đến việc thực hiện các hành động cần thiết để đáp ứng mục tiêu của dự án.

Mục đích của bước này là:

  • Xác định phạm vi, rủi ro và các mục tiêu test
  • Xác định các tài nguyên test cần thiết như con người, môi trường, v.v.
  • Lên lịch trình cho các nhiệm vụ phân tích và thiết kế, thực hiện, và đánh giá test

2. Phân tích và thiết kế

Phân tích và thiết kế kiểm thử có các nhiệm vụ chính sau:

  • Xem xét cơ sở test – thông tin dựa trên các trường hợp test, chẳng hạn như yêu cầu, đặc điểm thiết kế, phân tích rủi ro, kiến ​​trúc và giao diện
  • Xác định các điều kiện test
  • Thiết kế các bài test
  • Thiết kế môi trường thử test, thiết lập và xác định cơ sở hạ tầng và công cụ cần thiết
Datatech

3.  Thực hiện kiểm thử

Thực hiện kiểm thử là việc test chỉ định trên hệ thống máy tính theo cách thủ công hoặc sử dụng công cụ test tự động. Việc triển khai test có nhiệm vụ chính sau:

  • Tiến hành các trường hợp test bằng cách sử dụng các kỹ thuật và tạo dữ liệu cho các thử nghiệm đó
  • Tạo các bộ kiểm thử từ các trường hợp test để thực hiện hiệu quả. Bộ kiểm thử là tập hợp các trường hợp test được sử dụng để kiểm thử phần mềm
  • Thực hiện lại các trường hợp test không thành công trước đó để xác nhận bản sửa lỗi
  • Ghi lại kết quả của việc thực hiện test. Ở đó nhật ký kiểm thử ghi lại trạng thái của trường hợp test. (đạt / không đạt)
  • So sánh kết quả thực tế với kết quả mong đợi

4. Đánh giá tiêu chí hoàn thành và báo cáo

Đánh giá tiêu chí hoàn thành là quá trình xác định thời điểm dừng kiểm thử. Nó phụ thuộc vào phạm vi của mã code, chức năng hoặc rủi ro. Ngoài ra cũng phụ thuộc vào rủi ro business, chi phí, thời gian và sự khác nhau giữa các dự án. Đánh giá tiêu chí hoàn thành có các nhiệm vụ chính sau:

  • Đánh giá xem có cần test thêm hoặc tiêu chí hoàn thành đã chỉ định có cần thay đổi hay không
  • Viết một báo cáo tóm tắt kiểm thử cho các bên liên quan

5. Hoàn tất kiểm thử

Quy trình hoàn tất kiểm thử được thực hiện khi phần mềm sẵn sàng được bàn giao. Ngoài ra, kiểm thử có thể bị dừng lại vì các lý do khác như:

  • Khi dự án bị hủy bỏ
  • Khi đạt được một số mục tiêu
  • Khi bản cập nhật hoặc release bảo trì hoàn thanh

Bước này có các nhiệm vụ chính sau:

  • Kiểm tra xe sản phẩm được bàn giao chưa, theo kế hoạch nào, và để đảm bảo rằng tất cả các báo cáo sự cố đã được giải quyết
  • Hoàn thiện và lưu trữ phần mềm kiểm thử như scripts, môi trường test, v.v. để sử dụng lại sau này
  • Bàn giao phần mềm kiểm thử cho bên bảo trì
  • Đánh giá cách test đã thực hiện và rút kinh nghiệm cho các bản release và dự án trong tương lai

Có thể rất khó để thực hiện mọi thứ trong quá trình từ đầu đến cuối một cách hoàn hảo, từ lập kế hoạch đến thực hiện và hậu kỳ test. Tuy nhiên, việc xác định quy trình và cải thiện test là một bước rất quan trọng để kiểm soát chất lượng sản phẩm. Kiểm thử phần mềm sẽ trở nên đơn giản hơn nếu hiểu mục đích, nắm rõ các bước của quy trình và tuân theo.

Nguồn tham khảo:

https://datatechvn.com/kiem-thu-phan-mem-la-gi-va-quy-trinh-thuc-hien/

https://www.guru99.com/software-testing-introduction-importance.html

https://www.geeksforgeeks.org/general-steps-of-software-testing-process/