Cách viết test case tích hợp

07/07/2021 - vừa được xem lúc 16 giờ trước

[image]

  • Là một trong các test level.
  • Được thực hiện trong quá trình kiểm thử tích hợp nhóm các thành phần [module] riêng lẻ.
  • Mục đích của kiểm thử tích hợp là tập trung vào các tương tác và chuyển tiếp giữa các thành phần hoặc hệ thống.

2. Đặc điểm

a. Thời điểm

Integration testing được thực hiện sau khi đã tiến hành kiểm thử đơn vị từng thành phần riêng lẻ [Unit testing].

    • Sau quá trình thực hiện unit test, các module đều được kiểm tra, tuy nhiên vẫn sẽ còn tồn tại các lỗi với các lý do sau:
      • Thông thường mỗi module sẽ được thiết kế bởi mỗi một lập trình viên, họ sẽ có kinh nghiệm và tính logic có thể khác với các lập trình viên khác. Integration testing sẽ đảm bảo được tính nhất quán của phần mềm sau khi tích hợp nhiều module lại với nhau.
      • Trong quá trình phát triển, luôn có những thay đổi về yêu cầu đặc tả, những thay đổi này có thể sẽ không được kiểm tra ở giai đoạn unit test.
      • Giao diện [interfaces] và cơ sở dữ liệu [database] có thể chưa hoàn chỉnh sau khi tích hợp.
      • Các module riêng lẻ đôi khi sẽ không tương thích với cấu hình chung của hệ thống hoặc một số công cụ, APIs của bên thứ 3.

b. Các đặc điểm chính

  • Test level [trong integration] : Kiểm thử tích hợp đơn vị [Component intergration testing] và Kiểm thử tích hợp hệ thống [System integration testing].
  • Test type: Kiểm thử chức năng [functional] và phi chức năng [non-functional].
  • Test method: Black-box và White-box
  • Môi trường test: Thực hiện trên môi trường test phù hợp [staging]
  • Người phụ trách: Developer and tester
  • Chiến lược test: Sử dụng phương pháp tiếp cận Big-bang hoặc Incremental

3. Ví dụ về Integration testing

a. Outline

Chúng ta là một công ty quảng cáo, các bài đăng sẽ được hiển thị trên các trang web khác nhau. Vào mỗi cuối tháng, cần phải thống kê dữ diệu về số người đã xem và số người đã nhấp vào quảng cáo là bao nhiêu. Từ đó tính phí tương ứng cho khách hàng của công ty.

b. Design

Chúng ta sẽ có design cơ bản về hệ thống như sau:

  • UI - User interface module về giao diện người dùng, nơi lấy được thông tin của đầu vào.
  • BL - Business logic module, xử lý các tính toán và phương pháp về kinh doanh cụ thể.
  • VAL - Validation module, xác thực tính đúng đắn của đầu nào.
  • CNT - Content module, nội dung do người dùng nhập vào, chúng sẽ đưuọc hiển thị trong các báo cáo.
  • EN - Engine module, được dùng để đọc tất cả dữ liệu đến từ BL, VAL và CNT sau đó trích xuất truy vấn SQL và đưa nó vào cơ sở dữ liệu.
  • Scheduler - Thống kê các báo cáo dựa trên yêu cầu của người dùng [hàng tháng, quý, năm].
  • DB - Database, lưu trữ cơ sở dữ liệu.

c. Chúng ta cần test những gì ?

Đối với integration testing, trong trường hợp này, sẽ tập trung vào kiểm tra luồng xử lý giữa các module.

  • Làm thế nào BL, VAL và CNT sẽ đọc và giải thích dữ liệu được nhập vào UI ?
  • BL, VAL và CNT có nhận được dữ liệu chính xác từ UI không?
  • Dữ liệu từ BL, AL và CNT được chuyển sang EN ở định dạng nào?
  • EN sẽ đọc dữ liệu và trích xuất truy vấn SQL như thế ào?
  • Truy vấn SQL có được trích xuất chính xác không?
  • Scheduler có nhận được dữ liệu chính xác cho các báo cáo không ?
  • Bộ kết quả mà EN nhận được, từ cơ sở dữ liệu có chính xác không ?
  • EN có thể gửi phản hồi lại cho BL, VAL và CNT không ?
  • UI có thể đọc dữ liệu và hiển thị phù hợp với giao diện không ?

Hiểu thêm một chút vào hệ thống nào.

  • Thông thường, việc giao tiếp dữ liệu được thực hiện ở định dạng XML. Vì vậy, khi người dùng nhập dữ liệu vào UI, nó sẽ được chuyển đổi thành định dạng XML
  • Trong ví dụ trên, dữ liệu nhập vào UI sẽ được BL, VAL và CNL thông dịch và chuyển thành tệp XML. EN sẽ đọc tệp XML, trích xuất SQL để truy vấn vào cơ sở dữ liệu, sau đó EN cũng sẽ nhập tập kết quả và chuyển thành tệp XML để trả lại kết quả cho UI và tất nhiên là UI chuyển đổi kết quả sang định dạng mà người dùng có thể đọc được để hiển thị nó.
  • Trong quá trình giao tiếp dữ liệu đó, Scheduler sẽ nhập tập hợp kết quả từ module EN để tạo và đưa ra các báo cáo tương ứng.
  • Sau khi đã hiểu được cách thức hoạt động, bạn sẽ có thể đưa ra các trường hợp kiểm tra:
    • Tập trung vào việc xác thực xem các tệp XML có được tạo đúng cách không ?
    • Dữ liệu được tạo có chính xác không ?
    • ...

Từ các câu hỏi và kiến thức về hệ thống trên, bạn sẽ đưa ra được các trường hợp test tích hợp các module. Tùy thuộc vào xử lý và logic mà chúng ta sẽ có các kết quả mong đợi tương ứng.

d. Một số trường hợp khác

Các trường hợp kiểm thử tích hợp tập trung chủ yếu vào giao diện giữa các module, liên kết, truyền dữ liệu. Vì vậy ý tưởng chính là kiểm tra xem việc tích hợp hai module làm việc có hoạt động như mong đợi khi tích hợp hay không.

Chúng ta có một số trường hợp khi kiểm tra tích hợp cho ứng dụng Linkedin:

  • #1. Xác minh liên kết giữa trang Login và Home : User đăng nhập thành công nó sẽ chuyển hướng đến Home.
  • #2. Xác minh liên kết giữa Home và Profile : Khi tap vào menu Profile ở Home sẽ dẫn đến trang Profile.
  • #3. Xác minh liên kết ở MyNetwork: Hoạt động chấp nhận lời mời khi nhấp vào Accept button ở trang My Network.
  • #4. Xác minh liên kết ở Notifications: Thông tin chi tiết khi nhấp vào một thông báo bất kỳ.

4. Một số defect/ failure điển hình

  • Không nhất quán về cấu trúc giữa các hệ thống.
  • Dữ liệu không chính xác, thiếu hoặc quá trình mã hóa dữ liệu không chính xác.
  • Trình tự hoặc thời gian giao tiếp giữa các module không chính xác.
  • Giao diện không khớp.
  • Giao tiếp giữa các module thất bại.
  • Giao tiếp giữa các module không được xử lý hoặc xử lý không đúng cách.
  • Các giả định không chính xác về ý nghĩa, đơn vị hoặc ranh giới của dữ liệu được truyền giữa các module. Ví dụ: Khi call API để hiển thị dữ liệu có đơn vị tiền tệ, nhưng UI chỉ cho phép hiển thị với 4 ký tự.
  • Không tuân thủ các quy định bảo mật bắt buộc.

5. Để kiểm thử tích hợp, cần gì?

a. Các bước cần thiết để bắt đầu

  • Hiểu được kiến trúc của ứng dụng.
  • Xác định các modules.
  • Hiểu được vai trò của mỗi module [làm gì?].
  • Hiểu cách dữ liệu được chuyển từ module này sang module khác như thế nào.
  • Hiểu các dữ liệu được nhập và nhận vào hệ thống như thế nào [ entry và exist point].
  • Tách ứng dụng để phù hợp với nhu cầu [chia nhỏ các luồng giao tiếp của các module].
  • Xác định và tạo được các điều kiện kiểm thử.
  • Xác định được các trường hợp kiểm thử dựa vào thời gian và ngữ cảnh tương ứng.

b. Tiêu chí đầu vào/ ra [Entry/ Exist criteria]

Entry

  • Test plan đã được chấp nhận
  • Test case [Trường hợp kiểm thử]
  • Test data [Dữ liệu thử nghiệm]
  • Các module đã được kiểm thử đơn vị [Unit testing]
  • Tất cả các lỗi quan trọng và có mức độ ưu tiên cao trước đó đều được fix xong và closed.
  • Môi trường thử nghiệm được thiết lập.

Exist

  • Tất cả các trường hợp kiểm thử tích hợp đã được thực thi
  • Không có defect P1 &P2 còn mở.
  • Báo cáo về kiểm thử tích hợp đã được chuẩn bị.

Tham khảo

Hiện nay, để đảm bảo cho hệ điều hành của một thiết bị không xảy ra lỗi trước khi được bán đi thì cần cho sản phẩm trải qua quá trình kiểm thử. Các bài test cần thiết dành cho các phần mềm đó đều gói gọn trong cái tên Integration test. Tuy nhiên, bạn đã hiểu Integration testing là gì chưa? Cùng tìm hiểu định nghĩa về nó cũng như các bước làm việc kiểm thử như sau. 

Integration testing là gì?

Integration test là một trong những giai đoạn cần thiết nằm trong phần kiểm thử phần mềm. Mỗi một modun phần mềm riêng biệt đều sẽ được kết hợp lại để thực hiện kiểm thử theo nhóm. Nếu như một công ty hoặc cá nhân đặt hàng về phần mềm thì các lập trình viên sẽ có nhiệm vụ trước tiên là: đọc rõ được mọi chức năng, các yêu cầu cũng như nhu cầu mong muốn của bên mua.

Từ đó, phát triển ở rộng cho các ý tưởng cần thiết hay code rồi tiến hành cho quá trình chạy thử hệ điều hành. Ngoài ra, họ còn có nhiệm vụ thực hiện quá trình  kiểm thử để đảm bảo cho quá phần mềm được chính xác và linh hoạt nhất.

Từ đó, hệ điều hành có thể kéo dài thời gian làm việc trong khoảng thời gian lâu dài hơn. Quá trình này sẽ thực  hiện từ  việc xây dựng phần  mềm cho đến kiểm thử để có thể thực hiện thủ tục cho việc giảm bớt các trải nghiệm có phần phức tạp hơn. 

Định nghĩa Integration Testing là gì?

Mục đích chủ yếu của Integration testing là gì: Quá trình này có mục đích là cho ra hai ứng dụng tốt nhất, mượt mà nhất mà người dùng cần đến. Từ đó, loại bỏ được các Bug cũng như những nguy cơ có thể xảy ra gây ra lỗi cho hệ điều hành trước khi chuyển đến tay người tiêu dùng.Chắc chắn rằng, bất  kỳ hệ điều hành nào cũng mong muốn rằng mình có thể đạt được những chất lượng tốt nhất.

Mà muốn đạt được những điều đó thì buộc bạn phải trải nghiệm qua 3 bài đánh giá hết sức quan trọng và nó có tên đại diện chính là Integration testing. Đây là một thuật ngữ đã được viết tắt bởi I&T và còn được hiểu là ý nghĩa kiểm thử và trang bị. Integration test là giai đoạn quan trọng không thể thiểu để đảm bảo hiệu quả cho hệ điều hành, trong khi đó thì các mô đun thường sẽ được trang bị phần mềm riêng và được đánh giá dựa theo từng nhóm.

Đây được xem là một trong những quá trình trung gian nằm giữa bài kiểm tra Unit Testing các thủ tục sử dụng cũng như vận hành cho các công ty nguồn hoặc Acceptance test. Đây là một dạng kiểm thử xác nhận, ở đó thì tester và khách hàng sẽ có khả năng kiểm thử tại địa chỉ thiết kế phần mềm rồi đánh giá mọi tính năng của phần mềm này sau khi chuyển hướng hoạt động về nền tảng của họ. 

Bạn đọc tham khảo thêm

Embedded System là gì? Kỹ năng cần có của một Embedded Developer

Những điều cần biết về Automation Testing là gì?

Manual Testing Là Gì ? Và Học Gì Để Trở Thành Một Manual Test Chuyên Nghiệp?

Để hiểu rõ hơn thì bạn có thể tham khảo ví dụ:Bạn là nhân viên tại một tổ chức chuyên dụng về công nghệ thông tin, khách hàng yêu cầu bạn thực hiện phát triển cho website mua sắm trực tuyến dành cho Camp World [là một công ty buôn bán dụng cụ cắm trại]. Sau khi bạn đã thu thập được mọi yêu cầu từ phía khách hàng thì nhà phát triển sẽ hoàn toàn được chỉ định để thực hiện các mô đun dưới đây. 
  • Thực hiện các bước đăng ký và xác thực cho người dùng
  • Tiến hành đăng nhập
  • Lên danh mục sản phẩm
  • Lên giỏ hàng
  • Thực hiện mục thanh toán
  • Tích hợp cổng thanh toán
  • Tiến hành theo dõi vận chuyển và gói hàng

Kiểm thử là bước quan trọng đối với mỗi doanh nghiệp

Sau khi đã gán được các mô-đun này cho nhà phát triển thì họ sẽ thực hiện mã hóa chức năng ngay trên các dạng máy riêng lẻ của họ. Nếu như đã triển khai xong thì các mô đun tương ứng đã có thể xem lại các hoạt động đã được thực hiện trước đó. 

Sau khi đã hoàn thành xong quá trình phát triển thì các nhà phát triển cần thực hiện kiểm tra các chức năng cá nhân và xem nó là một phần quan trọng của việc  kiểm thử đơn vị và từ đó sẽ tìm ra các khuyết điểm nhất định trên sản phẩm để thực hiện sửa những khuyết điểm này.

Trong cùng thời điểm thì họ có thể xác nhận được tất cả các mô đun đang hoạt động cùng nhau để thực hiện triển khai tất cả mã vào chung một máy. Nhờ vậy, họ có thể xác nhận rằng ứng dụng hoàn toàn không đủ khả năng hoạt động như những gì đã mong đợi vì những mô đun riêng lẻ không có khả năng hoạt động sao cho tốt với nhau.

Ngoài  ra, một số  lỗi xuất hiện sau khi đăng nhập như: giỏ hàng không hiển thị, giỏ hàng không hiển thị sản phẩm mới thêm vào, tiền hóa đơn không tính thêm chi phí vận chuyển,... Dựa vào cách kiểm thử tích hợp này thì bạn có thể xác định cũng như nắm bắt chính xác toàn bộ sự cố xảy ra với sản phẩm của mình từ đó đảm bảo cho các ứng dụng này có thể hoàn toàn hoạt động theo những gì khách hàng mong đợi. 

Bạn đọc tham khảo thêm :

Tester là gì? Tester cần những kiến thức và kỹ năng gì?

Hệ điều hành iOS là gì? Cách cài đặt hệ điều hành IOS

Lý do cần thực hiện Integration Testing là gì?

Mỗi một module đều sẽ được thực hiện kiểm thử đơn vị bởi những lý do như như sau: 

  • Mỗi một Module đều được thiết kế bởi những lập trình viên có khả năng lập trình logic nhờ tầm hiểu biết và khác biệt với những lập trình viên khác. Việc thực hiện kiểm thử tích hợp sẽ đảm bảo cho tính hợp nhất nhất định của phần mềm. 

Quy trình kiểm thử

  • Ngay tại thời điểm bạn phát triển cho module thì chúng vẫn có thể thay đổi bên trong spec của chính khách hàng và các thay đổi này thường không thể thực hiện kiểm tra được ở những giai đoạn unit test trước đó.
  • Các giao diện cũng như cơ sở dữ liệu của các module đều được xác định là có thể chưa hoàn chỉnh nếu như được ghép lại với nhau. 
  • Nếu như thực hiện tích hợp hệ thống các module thì chúng thường không thể tương thích được với các cấu hình chung của hệ thống. 
  • Việc thiếu các động thái xử lý ngoại lệ đều có thể xảy ra. 

Bạn đọc tham khảo thêm việc làm đang Hot nhất hiện nay

Việc làm PHP lương cao chế độ hấp dẫn

Việc làm Python lương cao chế độ hấp dẫn

Việc làm IOS lương cao chế độ hấp dẫn

Thực hiện kiểm thử như thế nào cho đúng chuẩn?

Phương pháp tiếp cận Big Bang

Tại lúc này thì tất cả mọi thành phần đều sẽ được tích hợp  1  lúc và tiến hành kiểm thử. Một số ưu điểm và nhược điểm như sau:Ưu điểm:
  • Người dùng có thể thuận tiện làm việc hơn với các dự án nhỏ.
Nhược điểm:
  • Tạo ra những khó khăn nhất định trong việc phát hiện ra các bug. 
  • Có thể đôi khi bạn có thể sẽ bỏ lỡ các bug giao diện nhỏ hơn trong quá trình tìm kiếm bug. 
  • Thường mất thời gian hơn cho việc tích hợp các hệ thống để làm giảm thời gian dành cho test. 
  • Bởi vì các module thường sẽ được  kiểm thử trong cùng một lúc nên các module này có nguy cơ sẽ bị cô lập ngay trong quá trình thực hiện kiểm thử. 

Phương pháp tiếp cận Incremental

Đây là  phương pháp kiểm tra sẽ được thực hiện bằng cách kết hợp từ hai hoặc nhiều module có liên quan sao cho hợp lý nhất. Sau đó thì sẽ  phân hệ nhiều mảng liên quan khác vào và tiến hành kiểm tra sự hoạt động đúng đắn của nó. Quá trình này sẽ tiếp tục thực hiện cho đến khi mọi module đều đã được tham gia và thành công thử nghiệm. 

Integration Testing được thực hiện qua nhiều bước nghiêm ngặt

Đây là quá trình được thực hiện bằng các cách sử dụng những chương trình giả được gọi là Stub and Driver. Các thông tin sơ khai và trình điều khiển sẽ không có thể thực hiện được toàn bộ những logic của lập trình và các module chỉ có thể mô phỏng được các giao tiếp dữ liệu với những module được gọi khác. 
  • Stub: Sẽ được gọi nhờ Module dưới Test.
  • Driver: Sẽ gọi Module để có thể được kiểm tra.
  • Phương pháp Incremental sẽ được thực hiện với hai phương pháp khác nhau đó là: Bottom Up Top Down Bottom up Integration

Chiến lược Bottom Up

Tại các module mức thấp hơn sẽ được thử nghiệm cùng với những module  cao hơn cho đến khi các module này đều sẽ được kiểm tra. Và nó sẽ được sử dụng cho Driver testing để. Dưới  đây là các ưu điểm và nhược điểm của phương pháp chiến lược Bottom Up. 

Ưu điểm:

  • Nó có khả năng thu gọn được phạm vi bug sao cho dễ dàng nhất. 
  • Nó không làm mất thời gian cho việc chờ  đợi tất cả những module tích hợp. 
Nhược điểm:
  • Module quan trọng của hệ thống đều sẽ có thể dễ bị lỗi hơn. 
  • Không có khả năng giữ được những nguyên mẫu đầu tiên của chính hệ thống. 

Top down Integration:

Khi tiếp cận từ trên xuống dưới thì bạn sẽ có thể kiểm tra theo từ trên xuống dưới để theo dõi được dòng kiểm soát của các hệ thống phần mềm. Ngoài ra, nó còn được sử dụng cho Stub Testing. 

Ưu điểm:

  • Nó có khả năng thu gọn được phạm vi bug dễ dàng hơn rất nhiều. 
  • Nó có khả năng để có một nguyên mẫu ban đầu. 
  • Modules rất quan trọng và nó đang được thử nghiệm dựa trên mức ưu tiên và  một số lỗi trong thiết kế lớn để có thể tìm thấy cũng như cố định nó đầu tiên. 

Phương pháp kiểm thử Big Bang

Nhược điểm:
  • Cần phải có nhiều Stub.
  • Module có những mức độ thấp hơn thì sẽ  được kiểm tra không được đầy đủ. 
  • Với hai mô-đun khác nhau đều sẽ được tích hợp sau khi thử nghiệm tích hợp đã được thực hiện. 

Các bước thực hiện kiểm thử tích hợp

Sau khi hiểu được Integration testing là gì thì dưới đây là những bước thực hiện kiểm thử mà bạn nên tham khảo: 
  • Lựa chọn các mô-đun hoặc những thành phần sẽ được lựa chọn kiểm tra khác.
  • Thực hiện kiểm thử cho đơn vị
  • Có thể thiết kế ra các kịch bản thử nghiệm, trường hợp và Script. 
  • Bạn thực hiện kiểm tra dựa theo test case đã được viết.  
  • Chú ý theo dõi và tái kiểm tra các lỗi đã liệt kê ở trên. 
  • Thực hiện lặp  lại cho những bước  trên cho  cho hệ thống được hoàn chỉnh nhất và được kiểm tra đầy đủ nhất. 

Tổng kết

Hy vọng, thông tin trên là đủ để giải đáp thắc mắc Integration Testing là gì trong lòng bạn đọc. Hiện nay, không thể phủ nhận tầm quan trọng của việc kiểm thử trong lĩnh vực phần mềm. Nếu như bạn đam mê với lĩnh vực này thì đừng ngại thử thách để phát triển bản thân nhé. Ngoài ra, đừng quên đồng hành cùng ITNavi để tìm kiếm công việc phù hợp với đam mê và khả năng của chính mình. 

Video liên quan

Chủ Đề