XEM NGAY

Bài viết mới

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

Đoàn Long | 15 January, 2015 - 7164 Lượt xem

DOANDUYLONG.COM – Trong bài viết này VINATECH giới thiệu đến bạn đọc khái niệm “Kiểm thử phần mềm là gì?” do (Lê Nhật, Cục Ứng dụng CNTT) biên soạn. Mục đích làm cơ sở cho sinh viên, kỹ thuật viên hoặc một cá nhân doanh nghiệp muốn tìm hiểu cơ bản về ngành kiểm thử phần mềm nói riêng, và ngành kiểm thử nói chung.

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

Kiểm thử phần mềm là quá trình giám định dựa trên chất lượng sản phẩm hoặc dịch vụ sau khi tiến hành kiểm tra. Kiểm thử độc lập cho phép doanh nghiệp đánh giá mức độ rủi ro khi phát triển phần mềm. Kỹ thuật kiểm thử bao gồm quá trình kiểm thử phần mềm và tìm lỗi.

Kiểm thử phần mềm bao gồm quá trình kiểm tra và kiểm định để đảm bảo phần mềm đáp ứng nhu cầu người dùng, phần mềm chạy đúng chức năng.

Kiểm thử phần mềm có thể được thực hiện ở bất kỳ giai đoạn nào trong phát triển phần mềm, phổ biến nhất là kiểm thử sau khi yêu cầu người dùng hoàn thiện hoặc phần mềm vừa xong giai đoạn phát triển. Tuy nhiên, trong quy trình phát triển phần mềm theo kiểu Agile thì kiểm thử phần mềm là quy trình đi cùng với việc phát triển phần mềm.

Giới thiệu chung

Kiểm thử phần mềm không thể tìm thấy tất cả lỗi của phần mềm, thay vào đó kiểm thử là công việc xác định trạng thái và hành vi của sản phẩm để xác định chất lượng phần mềm. Chất lượng sản phẩm này có thể dựa trên yêu cầu người dùng, các sản phẩm khác, hoặc phiên bản khác của sản phẩm.

Mục đích của kiểm thử bao gồm việc kiểm tra mã nguồn (code), cũng như việc thực hiện mã nguồn trong các môi trường khác nhau. Trong môi trường phát triển phần mềm hiện tại, rất nhiều cơ sở kiểm thử phần mềm độc lập với đơn vị phát triển.

Kiểm thử phần mềm bao gồm nhiều lĩnh vực, từ các phần mềm trò chơi, đến các phần mềm lĩnh vực ngân hàng.

Lỗi phần mềm

Lỗi phần mềm có thể sinh ra do nhiều nguyên nhân ví dụ như yêu cầu phần mềm bị thiếu, yêu cầu không rõ ràng.

Lỗi phần mềm có thể chia theo mức độ nghiêm trọng. Lỗi phần mềm xảy ra trong quá trình phát triển có thể không cần sửa nếu mã nguồn không được sử dụng hoặc không được chạy. Ngoài ra lỗi phần mềm có thể trở nên nguy hiểm, chi phí cao hơn nếu thay đổi môi trường phần mềm thay đổi.

Nguyên tắc kiểm thử

Kiểm thử vét cạn không khả thi cho mọi phần mềm, nói cách khác việc kết hợp tất cả đầu vào và điều kiện để kiểm thử một phần mềm là không thực hiện được. Tuy nhiên, dựa vào các kỹ thuật kiểm thử, kiểm thử viên có thể tối ưu được công việc kiểm thử bằng cách tối ưu lượng thông tin đầu vào và đầu ra.

Hiệu quả kinh tế

Theo báo cáo của NIST năm 2002, lỗi phần mềm gây thiệt hại 59.5 tỉ dollar mỗi năm. Kiểm thử phần mềm có thể giảm một phần ba chi phí thiệt hại kể trên. Việc kiểm thử càng tiến hành sớm càng tốt.

Kiểm thử viên

Kiểm thử viên là người phụ trách công việc kiểm thử, thuật ngữ kiểm thử viên được sử dụng rộng rãi từ năm 1980, sau này được thuật ngữ được sử dụng kèm thêm các chức vụ khác như: quản lý, đội trưởng, kiểm thử viên phân tích, kiểm thử viên thiết kế, v.v.

Lịch sử

Quy trình sửa lỗi và tìm lỗi bắt đầu phân biệt từ năm 1979 bởi Glenford J.Meyer.

Chiến lược kiểm thử bao gồm

Kiểm thử tĩnh và kiểm thử động

Kiểm thử bao gồm nhiều chiến lược, trong đó kiểm tra, thẩm định được dùng trong kiểm thử tĩnh.

Kiểm thử động sử dụng khi phần mềm thực hiện phần mềm được chạy.

Kỹ thuật kiểm thử bao gồm

Kiểm thử hộp trắng

Kiểm thử hộp trắng được dùng để kiểm tra kiếm trúc bên trong của mã nguồn. Kiểm thử hộp trắng có thể dùng để kiểm tra từng thành phần của mã nguồn (unit test), hoặc kiểm thử tích hợp phần mềm.

Kiểm thử hộp đen

Kiểm thử hộp đen được dùng để kiểm thử chức năng phần mềm. Kỹ thuật kiểm thử này bao gồm các phương pháp như: phân vùng tương đương, phân tích đường biên, kiểm thử đôi, bảng trạng thái hoặc bảng quyết định.

Kiểm thử quan sát

Mục đích của kỹ thuật kiểm thử này là cung cấp cho lập trình viên đủ thông tin về phần mềm để anh ta có thể dễ dàng xác định lỗi.

Kiểm thử hộp xám

Đây là loại kiểm thử yêu cầu kiểm thử viên có kiến thức về cấu trúc phần mềm và thực hiện kiểm thử chức năng dựa trên kiến trúc này.

Các mức độ kiểm thử

Kiểm thử mức thấp (Unit Testing)

Kiểm thử mức thấp dùng để kiểm thử chức năng của các phân vùng nhất định trong mã nguồn. Với các phần mềm được phát triển theo phương pháp hướng đối tường, thì các phần vùng này được định nghĩa là các lớp.

Kiểm thử tích hợp

Kiểm thử tích hợp sử dụng để kiểm thử khi tích hợp các thành phần phần mềm dựa trên thiết kế hệ thống. Các thành phần này có thể tích hợp theo phương pháp từ trên xuống, từ dưới lên hoặc tổng hợp 1 lúc (big bang).

Kiểm thử hệ thống

Kiểm thử này có thể thực hiện sau khi hệ thống được tích hợp hoàn thiện, việc kiểm thử để đảm bảo phần mềm đáp ứng đúng yêu cầu người dùng.

Kiểm thử chấp nhận

Mức kiểm thử này được thực hiện khi phần mềm được chuyển giao cho người dùng.

Các loại kiểm thử

Kiểm thử cài đặt

Kiểm thử để đảm bảo phần mềm được cài đặt thành công theo tài liệu hướng dẫn cài đặt và đáp ứng yêu cầu khách hàng.

Kiểm thử tương thích

Kiểm thử để đảm bảo phần mềm có thể tương thích với các thành phần khác trong hệ thống.

Kiểm thử mở rộng và ưu tiên

Kiểm thử mở rộng được dùng khi cần xác định xem việc kiểm thử phần mềm cần mở rộng hay không.

Kiểm thử ưu tiên được sử dụng để đảm bảo việc kiểm thử phần mềm trong thời hạn giới hạn.

Kiểm thử hồi quy

Kiểm thử hồi quy được tiến hành khi phần mềm có thay đổi.

Kiểm thử chấp nhận

Kiểm thử chấp nhận bao gồm: kiểm thử tối ưu để đảm bảo các yêu cầu chức năng phần mềm quan trọng cần được đảm bảo chất lượng.

Kiểm thử chấp nhận được thực hiện bởi khách hàng.

Kiểm thử Alpha

Kiểm thử Alpha là một loại kiểm thử chấp nhận, được thực hiện bởi đội kiểm thử độc lập trong môi trường nhà phát triển.

Kiểm thử Beta

Kiểm thử Beta là loại kiểm thử chấp nhận được thực hiện bởi đội kiểm thử độc lập, phần mềm được kiểm thử trong môi trường của người sử dụng.

Kiểm thử chức năng và kiểm thử phi chức năng

Kiểm thử chức năng dùng để kiểm thử hành vi và chức năng của mã nguồn. Các yêu cầu kiểm thử có thể tìm thấy ở yêu cầu người dùng.

Kiểm thử phi chức năng được thực hiện để kiểm tra phần mềm trong điều kiện nhất định như yêu cầu về bảo mật và hiệu quả.

Kiểm thử hiệu năng phần mềm

Kiểm thử hiệu năng phần mềm để đảm bảo phần mềm mức độ đáp ứng và ổn định của phần mềm.

Kiểm thử khả năng sử dụng

Loại kiểm thử này sử dụng để đảm bảo giao diện phần mềm dể hiểu và dễ sử dụng.

Kiểm thử khả năng truy nhập

Loại kiểm thử này sử dụng để đảm bảo khả năng truy nhập phần mềm cho người khuyết tật.

Kiểm thử bảo mật

Loại kiểm thử này đảm bảo an toàn dữ liệu khỏi những truy nhập không mong muốn.

Vấn đề quốc tế và nội địa trong kiểm thử

Khả năng đáp ứng của phần mềm trong môi trường quốc tế hoặc nội địa.

Kiểm thử trong môi trường phát triển

Kiểm thử tích hợp cùng với quá trình phát triển phần mềm để giảm thiểu rủi ro trong quá trình phát triển.

Quy trình kiểm thử

Quy trình kiểm thử tích hợp với các quy trình phát triển bao gồm CMMI, mô hình thác nước, Agile, tiếp cận từ trên xuống hoặc dưới lên.

Kiểm thử tự động

Các loại công cụ kiểm thử bao gồm: các công cụ sửa lỗi, các công cụ để báo cáo, công cụ để đo hiệu năng phần mềm.

Các thành phần của kiểm thử bao gồm: kế hoạch kiểm thử, kịch bản kiểm thử, script kiểm thử,…

Chứng chỉ

Khá nhiều phần mềm về chứng nhận tồn tại để hỗ trợ nguyện vọng nghề nghiệp của các kiểm thử viên và của các chuyên gia đảm bảo chất lượng. Không có chứng chỉ nào hiện nay thực sự đòi hỏi ứng cử viên thể hiện kỹ năng kiểm thử phần mềm của họ. Không có giấy chứng nhận nào dựa trên một nền tảng kiến thức được chấp nhận rộng rãi. Điều này đã khiến một số người tuyên bố rằng việc kiểm thử là chưa sẵn sàng cho các chứng chỉ Chứng chỉ bản than nó không thể đo lường năng suất, kỹ năng cũng như kiến thức thực tế của ứng viên, và càng không thể đảm bảo khả năng cũng như tính chuyên nghiệp dưới vị trí một kiểm thử viên

Các loại giấy chứng nhận kiểm thử phần mềm:

–        Dựa trên thi cử: kỳ thi chính thức, cần phải được thông qua, hoặc có thể tự học[VD: ISTQB hoặc QAI]

–        Dựa trên giáo dục: qua các khóa dạy-và-học, nơi mỗi khóa học phải được thông qua[VD: Viện kiểm thử phần mềm (IIST)].

Chứng chỉ vê kiểm thử

  • Certified Associate in Software Testing (CAST) chứng nhận bởi QAI
  • CATe chứng nhận bởi  the International Institute for Software Testing
  • Certified Manager in Software Testing (CMST) chứng nhận bởi  the QAI
  • Certified Test Manager (CTM) chứng nhận bởi  International Institute for Software Testing
  • Certified Software Tester (CSTE) chứng nhận bởi  the Quality Assurance Institute (QAI)
  • Certified Software Test Professional (CSTP) chứng nhận bởi the International Institute for Software Testing
  • CSTP (TM) (Australian Version) chứng nhận bởi K. J. Ross & Associates
  • ISEB chứng nhận bởi the Information Systems Examinations Board
  • ISTQB Certified Tester, Foundation Level (CTFL) chứng nhận bởi the International Software Testing Qualification Board
  • ISTQB Certified Tester, Advanced Level (CTAL) chứng nhận bởi the International Software Testing Qualification Board
  • TMPF TMap Next Foundation chứng nhận bởi the Examination Institute for Information Science
  • TMPA TMap Next Advanced chứng nhận bởi the Examination Institute for Information Science

Chứng chỉ đảm bảo chất lượng

  • CMSQ chứng nhận bởi the Quality Assurance Institute (QAI).
  • CSQA chứng nhận bởi the Quality Assurance Institute (QAI)
  • CSQE chứng nhận bởi the American Society for Quality (ASQ)
  • CQIA chứng nhận bởi the American Society for Quality (ASQ)
  • Các tranh cãi
  • Một vài tranh cãi về kiểm thử phần mềm bao gồm:

–        Cái gì tạo nên việc kiểm thử phần mềm có trách nhiệm

Thành viên của “context-driven” (định hướng theo bối cảnh) tin rằng không có “thực hành tốt nhất” về kiểm thử, mà nó là tập hợp các kỹ năng cho phép kiểm thử viên lựa chọn hoặc sang tạo ra các phương pháp phù hợp với từng tình huống.

–        Truyền thống với nhanh nhẹn (Agile)

Các kiểm thử viên có nên làm việc trong môi trường bất định hay theo đuổi sự trưởng thành của quy trình? Phong trào thử nghiệm nhanh nhẹn (Agile testing) càng ngày càng phổ biến từ năm 2006 chủ yếu trong giới thương mại trong khi cá đơn vị cung cấp phần mềm chính phủ và quân sự sử dụng phương pháp này nhưng bao gồm cả cách kiểm thử truyền thống-last models (mô hình cuối cùng – giống như trong mô hình thác nước)

–        So sánh kiểm thử thăm dò và theo kịch bản

Việc kiểm thử có nên được thiết kế cùng lúc chúng được thực hiện hay nên được thiết kế trước đó?

–        So sánh kiểm thử bằng tay và tự động

Một số tác giả cho rằng kiểm thử tự động là quá đắt so với giá trị thực cho nên cần sử dụng 1 cách tiết kiệm. Thêm nữa, việc phát triển định hướng theo kiểm thử chỉ ra rằng các nhà phát triển nên unit-test, giống như XUnit, trước khi phát triển chức năng. Kiểm thử sau đó có thể được coi như là 1 cách để nắm bắt và thực hiện các yêu cầu.

–        So sánh thiết kế phần mềm với thực thi phần mềm

Kiểm thử có nên thực hiện ở cuối quy trình hay xuyên suốt quy trình

–        Ai sẽ giám sát những người giám sát?

Ý tưởng là bất kỳ hình thức giám sát nào cũng là sự tương tác – hành động kiểm thử có thể ảnh hưởng đến vật đang được kiểm thử

Các quy trình liên quan

Xác minh và xác thực phần mềm

–        Xác minh: chúng ta đã xây dựng phần mềm 1 cách đúng đắn chưa? (thực hiện đúng các yêu cầu)

–        Xác thực: chúng ta đã xây dựng đúng phần mềm chưa? (yêu cầu đã thỏa mãn khách hang chưa)
Các điều khoản xác minh và xác thực thường được sử dụng thay thế cho nhau trong ngành công nghiệp, và cũng là phổ biến khi thấy 2 khái niệm này bị định nghĩa sai. Theo chuẩn IEEE từ điển kỹ thuật phần mềm thì:

–        Xác minh là quá trình đánh giá một hệ thống hay thành phần để xác định xem các sản phẩm của một giai đoạn phát triển nhất định đáp ứng các điều kiện áp đặt vào đầu của giai đoạn đó.

–       Xác thực là quá trình đánh giá một hệ thống hay cấu phần trong hay cuối của quá trình phát triển để xác định xem nó thỏa mãn yêu cầu quy định.

Theo tiêu chuẩn ISO 9000

–        Xác minh là xác nhận bằng cách kiểm tra và qua các bằng chứng thực tế chứng tỏ các yêu cầu xác định được đáp ứng

–        Xác thực là xác nhận bằng cách kiểm tra và qua các bằng chứng thực tế chứng tỏ các yêu cầu xác định cho 1 mục đích sẵn có được đáp ứng

Đảm bảo chất lượng phần mềm (SQA)

Kiểm thử phần mềm là 1 phần trong quy trình đảm bảo chất lượng phần mềm. Trong SQA, các chuyên gia về quy trình phần mềm và kiểm toán viên sẽ lien quan đến chu trình phát triển phần mềm hơn là các hiện vật như tài liệu, code, và hệ thống. Họ kiểm tra và thay đổi quy trình kỹ thuật để giảm thiểu lỗi trong phần mềm được gửi đi: cái gọi là tỉ lệ khiếm khuyết. Những gì cấu thành 1 tỷ lệ khiếm khuyết chấp nhận được phụ thuộc vào bản chất phần mềm, 1 phần mềm giả lập máy bay sẽ có khả năng chịu lỗi cao hơn nhiều so với phần mềm cho máy bay thực tế. Mặc dù có những liên kết chặt chẽ với SQA, bộ phận kiểm thử thường xuyên tồn tại 1 cách độc lập, và có thể không có chức năng SQA trong 1 số công ty.

Kiểm thử phần mềm là 1 nhiệm vụ nhằm phát hiện lỗi trong phần mềm bằng cách đối chiếu kết quả mong đợi của 1 chương trình máy tính với kết quả thực tế của nó dựa trên 1 loạt yếu tố đầu vào. Ngược lại, đảm bảo chất lượng, là việc thực hiện các chính sách và thủ tục nhằm ngăn ngừa khuyết tật xảy ran ngay lúc đầu.

DOANDUYLONG.COM

Bình luận trên Facebook