Những đòi hỏi độc đáo của sự thử nghiệm cấp tiến trong ngành kỹ thuật

Thử nghiệm các chức năng Asynnnous trong phần mềm kỹ thuật là một loại máy tính có bẫy tinh tế và hành vi không xác định. Không giống như mã thời gian thực, nơi lệnh thực hiện tuyến tính và dễ đoán, aynchinration giới thiệu các cuộc gọi điện thoại, sự kiện, và tính thời gian phụ thuộc. Những tính năng này là thiết yếu để xây dựng các ứng dụng kỹ thuật đáp ứng- như hệ thống điều khiển thời gian thực, thu thập dữ liệu và mô phỏng trong phần cứng - nhưng chúng cũng làm cho các thử nghiệm phức tạp hơn. chậm, thất bại và khó khăn tùy chọn lỗi thời điểm là các triệu chứng thường gặp phải các chương trình thử nghiệm các bài kiểm tra tính chất đặc trưng cho các bài kiểm tra và các giải pháp có thể lặp lại.

Thử thách về hàm Asychin

Độ trưng thời gian

Các hàm Asynronous phụ thuộc vào các bộ phát triển bên ngoài kích hoạt, đáp ứng mạng, hoặc phần cứng ngắt quãng. Một thử nghiệm phụ thuộc vào một cửa sổ thời gian đặc biệt có thể chạy nhanh CN nhưng không thể phát triển chậm hơn. Lấy thí dụ, độ nhạy (FLT: 0) đặt thời gian [FLT: 1] với 100 mét có thể hoàn tất trong vòng 95m trong một môi trường khác, gây ra việc thử nghiệm quá sớm. Độ nhạy này làm cho khả năng ghi chú khó xác định thời gian để xác định thời gian để viết mà không có cơ chế đồng bộ hoá.

Thiết lập thử nghiệm phức tạp và xoá bỏ

Thử nghiệm một chức năng bất thường thường đòi hỏi dàn xếp nhiều hoạt động đồng thời: bắt đầu công nhân nền, nghe các sự kiện phát ra, chế nhạo dịch vụ bên ngoài, và làm sạch các dụng cụ còn lại. Kỹ sư phải quản lý các lời hứa, gọi lại, hoặc một cú pháp đặc biệt/chờ trong khi đảm bảo tất cả các nguồn lực được phát hành đúng sau mỗi lần thử nghiệm. Thiết lập sai có thể dẫn đến việc thử nghiệm ô nhiễm, nơi mà một thử nghiệm không hoàn thành một thao tác đặc biệt can thiệp vào các thử nghiệm tiếp theo.

Điều kiện đua xe và không hoàn thành

Điều kiện chạy đua xảy ra khi kết quả kiểm tra phụ thuộc vào sự kết nối của các sợi đa nhánh. Ví dụ, hai phần mềm cảm biến đã được mô phỏng đến nhanh có thể được xử lý theo thứ tự khác nhau tùy thuộc vào thiết kế CPU. Tính năng không xác định này làm cho nó không thể tái tạo các lỗi. Một thử nghiệm mà vượt qua 99% thời gian nhưng không thể giảm dần sự tin tưởng trong toàn bộ phòng thử nghiệm.

Khúc khích và mô phỏng sự phức tạp

Phần mềm kỹ thuật thường tương tác với phần cứng, giao thức sở hữu, hay luồng dữ liệu thời gian thực. Việc cười nhạo những giao diện co giãn này là thách thức: một trò đùa phải mô phỏng sự chậm trễ, điều kiện lỗi và giao dịch ngoài lề. Có thể ẩn lỗi thực, trong khi các lỗi giả sử quá phức tạp trở thành gánh nặng bảo trì. Các nhà phát triển phải đánh dấu sự cân bằng giữa tính trung thực và khả năng kiểm tra.

Phát hiện nguồn tài nguyên và treo

Các chức năng mở ổ cắm, khởi động đồng hồ hẹn giờ, hoặc sản xuất sợi chỉ có thể để lại tài nguyên bị xáo trộn nếu chưa được dọn sạch. Các thử nghiệm có thể thành công nhưng để lại hệ thống trong trạng thái không ổn định cho các cuộc thử nghiệm sau đó. Tệ hơn, một thử nghiệm bị treo vì lời hứa không thành công có thể gây ra toàn bộ dãy phòng thử nghiệm thời gian ra ngoài, cần thiết sự can thiệp bằng tay. Khả năng kiểm tra thường xuyên phải bao gồm bảo vệ chống lại sự treo và rò rỉ tài nguyên.

Giải pháp và chiến thuật chứng minh

Khung thử nghiệm khuôn khổ với hỗ trợ đặc trưng của bản địa

Những khuôn khổ thử nghiệm hiện đại như [FLT:] [FLT:] [FLT:], và Jasmine cung cấp hỗ trợ hạng nhất cho các cuộc thử nghiệm aschironous ], [FLT:], [FLT], [FLT], [FLT], hoặc [FT] nơi cần thiết để xác định các hoạt động đa năng [FT] [FT] [FT]. Khi sử dụng những kỹ sư này, có thể tránh dùng những phương tiện hướng dẫn và đảm bảo rằng việc theo dõi lời hứa cần thiết để xác định thời điểm [FT].

Khúc khích và gây chú ý

Thay thế quan hệ phụ thuộc asynconous bằng lời chế giễu xác định rằng trả lại giá trị có khả năng kiểm soát vào thời điểm có thể đoán trước. Chẳng hạn, thay vì đợi yêu cầu HTTP thật, hãy thả lớp mạng bằng cách chế giễu ngay. Các mật mã như [FLT: 0]; hoặc [FLT: 1] hoặc [FLT: 2] [FT:], bỏ qua các giao thức đùa cợt của mạng. [FL:] [FT:3] cho phép các kỹ sư mô phỏng phản ứng chậm, đường dẫn, lỗi và điều kiện chủng tộc không phụ thuộc vào chức năng thực tế [FLT: 0]. Trong phần mềm này, có thể thực hiện giao tiếp thiết bị kiểm tra giao tiếp hàng đợi: có thể giả sử trong giao thức thử ra cổng.

Dùng thời hạn và lịch làm việc cho việc đồng bộ

Ngay cả với lời chế nhạo, một số thử nghiệm cần thiết thời gian thực. Hãy dùng thời gian chờ đợi để hoàn tất các thao tác. Nhiều khung thử nghiệm cung cấp tiện ích như [FLT: 0] Chờ đợi [FLT: 1] (trong thư viện Jest hay thử nghiệm) để kiểm tra một điều kiện đúng cho đến khi nó trở thành đúng hoặc thời hạn chờ hạn đã hết hạn. Đối với nhiều kịch bản phức tạp hơn, hãy xem xét bằng đồng hồ hoặc đồng hồ ảo (v. d. [FL:] 2.) Dùng máy thời gian thử [FT.) [FT.F.E.S.S. [F.].S.S. [F.].S. [F.].] khả năng thời gian thử [F.] để xem thời gian biểu thời gian biểu: thời gian chạy] cho phép bạn có khả năng tự động, hãy xem thời gian khả năng xác định giờ thực sự thay đổi thời gian cho các ứng dụng. Tính toán này đặc biệt là thời gian thử định giờ giấc mơ dựa trên các ứng dụng hay thăm dò.

Nhận lấy kim tự tháp để thử một bộ mã nhất định

Không phải tất cả các bài kiểm tra định kỳ cần phải là thử nghiệm tổng hợp hoàn chỉnh. Theo kim tự tháp thử nghiệm: viết nhiều bài kiểm tra đơn vị riêng lẻ để cô lập một chức năng riêng lẻ bằng cách chế nhạo; một số bài kiểm tra tích hợp vừa phải xác định tương tác giữa một vài thành phần riêng biệt; và một vài thử nghiệm cuối cùng để kết thúc sử dụng đường ống thần kinh toàn bộ. Cách này giảm thiểu sự mềm mỏng vì các thử nghiệm đơn vị được xác định, trong khi các thử nghiệm cuối cùng đến cuối cùng được sử dụng một cách giải quyết dễ dàng, bao gồm lý hoặc ngắt mạch.

Làm cho thời gian trôi qua và làm sạch sẽ gương mẫu

Luôn luôn đặt thời hạn thử nghiệm và sử dụng [FLT: 0] sau mỗi [FLT:] móc để làm sạch một tài nguyên riêng. Lấy thí dụ, trong Node.js, đóng tất cả các kết nối cơ sở dữ liệu mở hoặc dừng lại chế nhạo máy phục vụ sau mỗi lần thử nghiệm. Dùng các cuộc chạy lệnh để phát hiện các cuộc gọi: kết thúc một thao tác đặc trưng với một thời hạn bị từ chối quá lâu. Việc này bảo đảm rằng một thử nghiệm sai không hoãn toàn bộ bộ bộ bộ bộ bộ dãy.

Các chương trình và nghiên cứu về trường hợp trên thế giới

Hệ thống điều khiển thời gian thực

Trong hệ thống như điều khiển logic có thể lập trình (PLCs) hay robot, các chức năng aschironous xử lý sự hợp hạch và lệnh kích hoạt. Một thử nghiệm bị lỗi có thể cho phép đọc bị hoãn để ghi đè lên một giá trị mới hơn, dẫn tới trạng thái nguy hiểm. Đội ngũ tại các công ty như [FLT: 0] [FLTP] [TPPP][FT:1]]] [FLT: 1] Dùng mô phỏng phần cứng- khối kết hợp với các giả lập tùy chọn xác định để thử nghiệm độ thời gian biểu thức thời gian.

Name

Phần mềm kỹ thuật nuốt dữ liệu từ hàng ngàn thiết bị IoT phải xử lý gói, kết nối, và biến dạng. Thử nghiệm hệ thống này cần thiết máy phục vụ giả lập tinh vi để mô phỏng ứng xử của thiết bị dưới điều kiện mạng khác nhau. Bằng cách sử dụng công cụ như [FLT: 0] [FLT: 0] [FLT: 1]] hoặc tùy chọn [FL: 2] [FL:] A [FL:] [FL:] Mô phỏng [FL], T], các nhóm có thể tái tạo các trường hợp như một thông điệp bị vỡ, do hệ thống bị làm im lặng, bị quản lý.

Tính toán và mô phỏng khoa học

Các chức năng hỗ trợ bộ phận giả lập khoa học thường quản lý các tính toán song song, tập tin I/O và giao tiếp liên xử lý. Các thử nghiệm nhiệt độ trong môi trường này có thể làm xói mòn sự tự tin trong kết quả mô phỏng. Thực hành tốt nhất bao gồm việc cô lập I/O với bộ đệm trong bộ đệm in- o và sử dụng bộ lập lịch xác định để kiểm soát thứ tự các nhiệm vụ đồng thời.

Xây dựng một nền văn hóa thử thách

Vượt qua thử thách về tính chuyên môn không chỉ là một nỗ lực kỹ thuật, mà còn là một nền văn hóa có giá trị kiểm tra tính đáng tin cậy.

  • Chạy một thử nghiệm định kỳ trong các thùng chứa riêng biệt với sự phân bổ tài nguyên nhất quán để giảm sự phù hợp với môi trường flakiness.
  • Đang thử nghiệm flaky như lỗi: ngay lập tức điều tra và sửa lỗi gián đoạn thay vì bỏ qua chúng.
  • Phát triển hành vi theo hướng (BD): ) thử nghiệm tập trung vào hành vi hiển thị của hệ thống thay vì chi tiết thời gian bên trong.
  • Học tập continuous:) đều đặn xem lại một mẫu thử nghiệm và cập nhật thường xuyên khi hệ thống tiến hóa.

Kết luận

Thử nghiệm các chức năng liên quan đến phần mềm kỹ thuật vốn là khó khăn hơn thử nghiệm logic đồng bộ, nhưng nó không vượt qua được. Bằng cách hiểu được nguyên nhân gốc của sự phụ thuộc flaki- iminess, điều kiện đua, sự phức tạp cười nhạo, và rò rỉ tài nguyên, các kỹ thuật viên có thể áp dụng các chiến lược như là sự mô phỏng xác định, khung khung hỗ trợ, đồng hồ ảo, và các kim tự tháp xếp hạng. Mục tiêu không phải là loại bỏ tất cả các tính năng không xác định, mà là kiểm soát nó trong phạm vi, tạo ra các thử nghiệm đáng tin cậy đủ để đạt được trước khi họ cố ý đạt được sự tái tạo. Với cả hai công cụ và cả hai phần mềm có thể hỗ trợ và cả hai phần mềm đều có khả năng hỗ trợ đầy đủ hiệu lực.