SOFTWARE TESTING LÀ GÌ? NHỮNG ĐIỀU BẠN CẦN BIẾT

Đinh Thao

Nếu bạn là sinh viên mới ra trường, sinh viên đang theo đuổi ngành công nghệ thông tin và muốn đi theo con đường tester thì chắc chắn các bạn đang đặt ra trong đầu những câu hỏi mung lung như là: Software testing là gì? Test software là gì? Tester sẽ phải làm những công việc gì,.. Hãy cùng chúng tôi tìm hiểu nhé!

Software Testing là gì?

Kiểm thử phần mềm là quá trình thực thi 1 chương trình với mục đích tìm ra lỗi. Kiểm thử phần mềm đảm bảo sản phẩm phần mềm đáp ứng chính xác, đầy đủ và đúng theo yêu cầu của khách hàng, yêu cầu của sản phẩm đề đã đặt ra.

Vai trò của kiểm thử phần mềm: Kiểm thử phần mềm đóng vai trò quan trọng trong việc đánh giá và thu được chất lượng cao của sản phẩm phần mềm trong quá trình phát triển. Thông qua chu trình “ kiểm thử – tìm lỗi – sửa lỗi”, để sản phẩm mang lại độ hiệu quả cao nhất mà không còn lỗi.

Phân loại Software Testing 

Kiểm thử thủ công 

Đó là tester sẽ làm mọi công việc hoàn toàn bằng tay, từ viết test case cho đến thực hiện test, mọi thao tác như nhập điều kiện đầu vào. Hay đó là việc quan sát kết quả thực tế, sau đó so sánh kết quả thực tế với các kết quả mong muốn trong test case, điền kết quả test hoàn toàn bằng thủ công không có một công cụ trợ giúp nào cả.

Kiểm thử thủ công đòi hỏi bạn phải có vốn kiến thức về các định nghĩa, kỹ thuật test và tư duy tốt

Kiểm thử tự động

Kiểm thử tự động – Automation Testing là việc thực hiện kiểm thử phần mềm bằng một chương trình đặc biệt với rất ít hoặc sẽ không có sự tương tác của con người. công việc chính là viết code để thực hiện test tự động chủ yếu thời gian làm việc với code như một dev. 

Làm Auto thì không cần phải nắm chắc kiến thức về manual test mà cần chắc về các automation tool & frameworks cũng như làm việc trên nhiều ngôn ngữ lập trình như java, python, C++, PHP… tùy từng dự án.

Kiểm thử tự động hỗ trợ bạn thực hiện test nhanh chóng và thực hiện các ca test khó không thực hiện được bằng tay.

Kiểm thử bảo mật

Là kiểm thử phần mềm giúp đảm bảo hệ thống ứng dụng và các phần mềm được bảo vệ an toàn khỏi các mối đe dọa hay bất cứ mối nguy hiểm dẫn đến các tổn thất. Xác định các mối đe dọa đo lường các mối họa tiềm ẩn  để cho hệ thống không ngừng hoạt động hay bị khai thác ngoài ý muốn.

Các kỹ thuật sử dụng trong quá trình Software Testing

Kiểm thử hộp đen

Xem chương trình như 1 “hộp đen”.

Kiểm thử dựa trên đặc tả của phần mềm. Không quan tâm cấu trúc bên trong của chương trình, tập trung tìm các trường hợp mà chương trình không thực hiện theo đặc tả của nó.

Kiểm thử hộp đen cố gắng tìm ra các lỗi trong các loại sau:

  • Các chức năng thiếu hoặc không đúng so với bản đặc tả
  • Các lỗi thi hành
  • Lỗi giao diện
  • Các lỗi cấu trúc dữ liệu trong việc truy cập cơ sở dữ liệu bên ngoài
  • Các lỗi khởi tạo hoặc kết thúc
  • Các lỗi khác.

Black Box Testing

Kiểm thử hộp trắng

Kiểm thử hộp trắng phân tích cấu trúc bên trong, cấu trúc dữ liệu được sử dụng, thiết kế bên trong, cấu trúc của code và hoạt động của phần mềm thay vì chỉ chức năng như trong kiểm thử hộp đen.

Quy trình làm việc của kiêm thử hộp trắng:

  • Đầu vào: Yêu cầu, đặc tả chức năng, tài liệu thiết kế, mã nguồn
  • Xử lý: Thực hiện phân tích rủi ro để hướng dẫn trong toàn bộ quy trình
  • Lập kế hoạch kiểm thử phù hợp: Thiết kế test case bao gồm toàn bộ code. Thực hiện wash -repat cho đến khi phần mềm không còn lỗi.
  • Đầu ra: Chuẩn bị báo cáo cuối cùng của toàn bộ quá trìn kiểm thử

Kiểm thử hộp trắng đòi hỏi kỹ thuật lập trình am hiểu cấu trúc bên trong của phần mềm ( các logic nghiệp vụ, luồng dữ liệu, chức năng, kết quả ).

Được ứng dụng trong các kiểm tra ở cấp độ module ( điển hình), tích hợp ( có khả năng ) và hệ thống của quá trình test phần mềm.

Kỹ thuật này chủ yếu được dùng để kiểm thử đơn vị, kiểm thử từng tác vụ của một lớp chức năng do nó phải tốn rất nhiều thời gian và công sức.

White box testing

Kiểm thử hộp xám

Kiểm thử hộp xám là một phương pháp kiểm thử phần mềm được kết hợp giữa phương pháp kiểm thử ộp đen và kiểm thử hộp trắng. Trong kỹ thuật kiểm thử hộp đen, Tester không biết cấu trúc bên trong của mục đang được kiểm thử và trong kiểm thử hộp trắng, Tester biết cấu trúc bên trong. Cấu trúc bên trong được biết một phần trong kiểm thử hộp xám. Điều này bao gồm quyền truy cập vào cấu trúc dữ liệu nội bộ và thuật toán cho mục đích thiết kế các test case.

Kiểm thử hộp xám được đặt tên như vậy bởi vì chương trình phần mềm giống như một hộp bán trong suốt hoặc màu xấm bên trong mà người kiểm thử có thể nhìn thấy một phần. Nó thường tập trung vào các lỗi cụ thể theo ngữ cảnh liên quan đến hệ thống web. Dựa trên việc tạo tets case yêu cầu vì nó có tất cả điều kiện được đưa ra trước khi chương trình được kiểm thử.

grey box testing

Unit Testing – Kiểm thử đơn vị

Kiểm thử đơn vị là một kỹ thuật kiểm thử phần mềm bằng cách kiểm thử các đơn vị phần mềm riêng lẻ, tức là nhóm các mô-đun chương trình máy tính, quy trình sử dụng và quy trình vận hành để xác định xem chúng có phù hợp để sử dụng hay không. Đây là một phương pháp kiểm thử sử dụng mọi mô-đun độc lập để xác định xem có sự cố nào do chính nhà phát triển nào gây ra hay không

Trong mô hình SDLC hoặc V, kiểm thử đơn vị là cấp độ kiểm thử đầu tiên được thực hiện trước khi kiểm thử tích hợp. Kiểm thử đơn vị là một loại kỹ thuật kiểm thử thường được thực hiện bởi các nhà phát triển. Mặc dù do các nhà phát triển không muốn kiểm thử, nhưng các kỹ sư đảm bảo chất lượng cũng thực hiện kiểm tra đơn vị. 

unit testing

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

Integration Testing – Kiểm thử tích hợp là quá trình kiểm thử giao diện giữa hai đơn vị hoặc mô-đun phần mềm. Nó tập trung vào việc xác định tính đúng đắn của giao diện. Mục đích của kiểm thử tích hợp là phát hiện các lỗi trong tương tác giữa các đơn vị tích hợp. Khi tất cả các mô-đun đã được kiểm thử đơn vị, kiểm thử tích hợp được thực hiện.

  • Thực hiện test việc kết nối, ghép nối giữa các unit/module.
  • Phát hiện ra lỗi giao tiếp giữa các unit
  • Phát hiện lỗi giao tiếp giữa hệ thống và các hệ thống khác (DB, Queue, …)
  • Chuẩn bị cho System testing
  • Giai đoạn này Developer phối hợp với bộ phận hạ tầng IT/devops để xây dựng các kết nối giữa các hệ thống (cron-job, queue/background job, database, api,…). Sau đó tester có thể bắt đầu các bài test về kết nối giữa các module.

System Testing – Kiểm thử hệ thống

Kiểm thử hệ thống là một loại kiểm thử phần mềm được thực hiện trên một hệ thống tích hợp hoàn chỉnh để đánh giá sự tuân thủ của hệ thống với các yêu cầu tương ứng. Trong kiểm thử hệ thống, các thành phần đã vượt qua kiểm thử tích hợp được lấy làm đầu vào. Mục tiêu của kiểm thử tích hợp là phát hiện bất kỳ sự bất thường nào giữa các đơn vị được tích hợp với nhau. Kiểm thử hệ thống phát hiện các lỗi trong cả các đơn vị tích hợp và toàn bộ hệ thống. Kết quả của kiểm thử hệ thống là hành vị quan sát được của một thành phần hoặc hệ thống khi nó được kiểm thử. 

Kiểm thử hệ thống được thực hiện trên toàn bộ hệ thống trong ngữ cảnh của đặc tả yêu cầu hệ thống hoặc đặc tả yêu cầu chức năng.

Kiểm thử hệ thống về cơ bản được thực hiện bởi một nhóm kiểm thử độc lập với giúp phát triển giúp kiểm thử chất lượng của hệ thống một cách khách quan. Nó có cả thử nghiệm chức năng và phi chức năng. Kiểm thử hệ thống là kiểm thử hộp đen. Kiểm thử hệ thống được thực hiện sau kiểm thử tích hợp và trước kiểm thử chấp nhận.

System testing bao gồm các loại kiểm thử: 

  • Kiểm thử chức năng (Functional Test)
  • Kiểm thử hiệu năng (Performance Test)
  • Kiểm thử khả năng chịu tải (Stress Test hay Load Test)
  • Kiểm thử cấu hình (Configuration Test)
  • Kiểm thử bảo mật (Security Test)
  • Kiểm thử khả năng phục hồi (Recovery Test)

System Testing

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

Kiểm thử chấp nhận là một phương pháp kiểm thử phần mềm trong đó hệ thống được kiểm thử khả năng chấp nhận. Mục đích chính của kiểm thử này là đánh giá sự tuân thủ của hệ thống với các yêu cầu nghiệp vụ trước khi đưa tới tay người dùng.

Kiểm thử chấp nhận là giai đoạn cuối cùng của kiểm thử phần mềm được thực hiện sau kiểm thử hệ thống và trước khi đưa vào sử dụng thực tế.

Kiểm thử Alpha – Alpha Testing

Kiểm thử Alpha là một loại kiểm thử phần mềm được thực hiện để xác định lỗi trước khi phát hành sản phẩm cho người dùng. Kiểm thử Alpha là một trong những kiểm thử chấp nhận người dùng. Điều này chỉ được gọi là kiểm thử alpha vì nó được thực hiện sớm, gần cuối quá trình phát triển phần mềm. Kiểm thử alpha thường được thực hiện bởi các kỹ sư phần mềm hoặc nhân viên đảm bảo chất lượng. Đây là giai đoạn kiểm thử cuối cùng trước khi phần mềm được phát hành vào thế giới thực.

Kiểm thử Beta – Beta Testing

Kiểm thử Beta được thực hiện bởi người dùng thực của ứng dụng phần mềm trong môi trường thực. Kiểm thử Beta là một trong những loại kiểm thử chấp nhận người dùng. Phiên bản Beta của phần mềm, cần phản hồi, được phát hành cho một số lượng hạn chế người dùng cuối của sản phẩm để nhận phản hồi về chất lượng sản phẩm. Kiểm thử beta giúp giảm thiểu rủi ro lỗi sản phẩm và giúp tăng chất lượng sản phẩm thông qua xác nhận của khách hàng. Đây là lần kiểm tra cuối cùng trước khi chuyển sản phẩm đến tay khách hàng. Một trong những lợi thế chính của kiểm thử beta là phản hồi trực tiếp từ khách hàng. 

Release Testing

Release testing được thực hiện sau khi triển khai phần mềm lên hệ thống thật.

Các bộ phận liên quan sẽ chuẩn bị tập dữ liệu để kiểm thử trên hệ thống production. Đây là giai đoạn quan trọng, quyết định sản phẩm sẽ đưa ra để khách hàng sử dụng hay hoãn lại (nếu có thể) hoặc rollback lại version trước đó.

Quy trình SOFTWARE TESTING

quy trình software testing

Phân tích yêu cầu

Yêu cầu là bước đầu tiên của quy trình kiểm thử phần mềm. Trong giai đoạn này, nhóm đảm bảo chất lượng hiểu các yêu cầu như những gì sẽ được kiểm thử. Nếu có bất cứ điều gì còn thiếu hoặc không hiểu thì nhóm đảm bảo chất lượng sẽ gặp các bên liên quan để hiểu rõ chi tiết về yêu cầu

Lập kế hoạch kiểm thử

Lập Test plan là giai đoạn hiệu quả nhất của quy trình kiểm thử phần mềm, nơi tất cả các kế hoạch kiểm thử được xác định. Trong giai đoạn này, người quản lý của nhóm kiểm thử sẽ tính toán nỗ lực và chi phí ước tính cho công việc. Giai đoạn này được bắt đầu sau khi hoàn thành giai đoạn thu thập yêu cầu.

Thiết kế Test case

Giai đoạn phát triển test case được bắt đầu sau khi giai đoạn lập kế hoạch được hoàn thành. Trong giai đoạn này, nhóm kiểm thử ghi lại các trường hợp kiểm thử chi tiết. Họ cũng phải chuẩn bị test data cần thiết. Khi các test case được chuẩn bị xong thì được xem xét bởi nhóm đảm bảo chất lượng

Thiết lập môi trường kiểm thử

Đây là phần quan trọng nhất của quy trình kiểm thử phần mềm. Về cơ bản, môi trường kiểm thử quyết định các điều kiện mà phần mềm được kiểm thử. Đây là hoạt động độc lập và có thể được bắt đầu cùng với quá trình phát triển test case. Trong quá trình này, nhóm kiểm thử không tham gia, nhà phát triển hoặc khách hàng tạo ra môi trường kiểm thử.

Thực hiện kiểm thử

Sau khi bắt đầu phát triển test case và thiết lập môi trường kiểm thử, giai đoạn thực hiện kiểm thử được bắt đầu. Trong giai đoạn này, nhóm kiểm thử bắt đầu thực hiện các test case dựa trên các test case đã chuẩn bị ở bước trước đó.

Kết thúc kiểm thử

Sau khi tiến hành kiểm thử, xem xét kết quả kiểm thử, xác định nguyên nhân của các lỗi được phát hiện. Nếu thực sự lỗi xảy ra do quá trình kiểm thử, cần phải sửa chữa và kiểm tra lại từ đầu.

Đánh giá quá trình kiểm thử: Bao gồm xem xét và đánh giá kết quả kiểm thử lỗi, chỉ định các yêu cầu thay đổi và tính toán số liệu liên quan đến quá trình kiểm thử (chẳng hạn số giờ, thời gian kiểm tra, số lượng lỗi…)

Thông báo tới các bên liên quan: Trưởng dự án sẽ thông báo cho các bên liên quan về kết quả kiểm thử đạt được.

Bên trên là những thông tin giúp bạn có thể hiểu được tầm quan trọng của Software Testing cũng như các công việc mà một tester cần làm.

Nhận ngay ưu đãi lên đến 20 % học phí khi đăng ký Khóa học tester trong tháng này!

5/5 - (2 votes)
Từ khóa:
Bình luận
Icon Phone Icon Zalo