So sánh giữa kiểm tra phần cứng và kiểm thử phần mềm (Hardware Verification and Software Testing) - (Part3)
1 - Mục đích bài viết Ở bài viết trước, chúng ta đã đề cập đến một số điểm tương đồng giữa những kĩ thuật trong kiểm tra phần cứng và kiểm thử phần mềm, như kĩ thuật bao phủ mã nguồn, kĩ thuật kiểm định mô hình. Phần này, chúng ta sẽ tiếp tục đề cập đến những kĩ thuật khác trong đó có sự tương ...
1 - Mục đích bài viết
Ở bài viết trước, chúng ta đã đề cập đến một số điểm tương đồng giữa những kĩ thuật trong kiểm tra phần cứng và kiểm thử phần mềm, như kĩ thuật bao phủ mã nguồn, kĩ thuật kiểm định mô hình. Phần này, chúng ta sẽ tiếp tục đề cập đến những kĩ thuật khác trong đó có sự tương hỗ giữa kiểm thử phần mềm và kiểm tra phần cứng, như kĩ thuật phân tích khuyết tật, kĩ thuật sinh ra các bài kiểm tra tự động, kĩ thuật kiểm tra đồng thời và kĩ thuật kiểm thử dựa trên hành vi.
Mình xin tiếp tục với mục 1.4 do bài viết trước đang dừng lại ở mục “1.3. Kĩ thuật kiểm định mô hình”
1.4 - Kĩ thuật phân tích khuyết tật
Chúng ta đều biết đây là một trong những kĩ thuật quan trọng nhất để đánh giá lỗi, nguyên nhân gây ra lỗi và ảnh hưởng của chúng đối với hệ thống. Sự đánh giá này sau đó có thể được dùng để có thể chỉ ra đâu là những liên kết yếu trong quá trình phát triển và kiểm thử, và cung cấp những dự đoán vô cùng quan trọng đối với việc đánh giá sẽ cần thêm bao nhiêu nỗ lực để đạt đến một hệ thống có độ tin cậy như mong muốn.
Mô hình phân tích là phương pháp chính được sử dụng để dự đoán độ tin cậy của phần mềm và đánh giá số những khuyết tật còn lại trong hệ thống. Những đối số đầu vào của mô hình được lấy từ những dữ liệu, những điều kiện đã từng xảy ra lỗi trong trong lịch sử phát triển phần mềm. Mô hình này sau đó được sử dụng để đưa ra một số thông số có tính đo lường đặc trưng của hệ thống, như độ ổn định của hệ thống, mức độ phát hiện khuyết tật của hệ thống, …
Gốc rễ của kĩ thuật này ban đầu là những mô hình thống kê được phát triển để đánh giá độ ổn định và thời gian hoạt động (life-time) của các thành phần cơ khí và điện tử. Kĩ thuật này sau đó đã được chấp nhận bởi cộng đồng phát triển phần mềm và nhiều mô hình sau đó đã được phát triển thêm để phù hợp với môi trường phát triển phần mềm. Ngày nay, việc sử dụng công cụ này là rộng khắp và hỗ trợ rất tốt cho việc cung cấp các dự đoán cần thiết cho hệ thống phần mềm.
Những kĩ thuật quản lý nâng cao dựa trên kĩ thuật phân tích khuyết tật có thể kể đến như ODC (Orthogonal Defect Classification), đưa vào thêm những kĩ thuật phân tích nguyên nhân gốc rễ. Kĩ thuật ODC cũng cung cấp một bộ những thuộc tính để giúp nắm bắt nhanh bản chất của những khuyết tật. Việc phân tích thông kê những dữ liệu bên trong kĩ thuật ODC cũng giúp cung cấp một phương thức chuẩn đoán rất có giá trị cho việc đánh giá những pha khác nhau của quá trình phát triển (thiết kế, phát triển, kiểm tra và dịch vụ) và sự trưởng thành của sản phẩm.
Trong khi những kĩ thuật và những công cụ cho mô hình thống kê và phân tích nguyên nhân gốc rễ gây ra lỗi đã được sử dụng nhiều năm và trong nhiều lĩnh vực khác nhau của ngành công nghiệp phần mềm thì trong thế giới phần cứng, chúng lại rất ít được sử dụng. Những thí nghiệm, nghiên cứu đã chỉ ra rằng việc ứng dụng kĩ thuật này vào quá trình phát triển phần cứng mang lại lợi ích tương tự như đối tác quá trình phát triển phần mềm, bởi quá trình phát triển phần cứng còn đòi hỏi độ ổn định cao hơn quá trình phát triển phần mềm và sử dụng những công cụ quản lý chất lượng như ODC sẽ còn mang lại lợi ích lớn hơn. Chúng ta có thể thấy rằng nguyên nhân chủ yếu của việc những kĩ thuật này còn chưa được ứng dụng nhiều trong ngành công nghiệp phần cứng vẫn là việc thiếu thông tin và trao đổi.
Hình dưới đây là ODC (Orthogonal Defect Classification) - Cause/Effect Relationships 1.5 - Kĩ thuật kiểm thử đồng thời Có lẽ một trong những khu vực quan trọng nhất mới nổi lên trong lĩnh vực kiểm thử là kiểm thử một ứng dụng chạy đa luồng hoặc kiểm thử một hệ thống chạy nhiều ứng dụng đồng thời. Trong quá trình phát triển phần mềm hiện nay, những hệ thống này là phổ biến, ví dụ như một ứng dụng java viết ở phía server. Trong lĩnh vực phần cứng, những nền tảng đa lõi (multiprocessor) cũng đã trở nên phổ biến. Điều này mang đến những thách thức mới cho lĩnh vực kiểm thử, bao gồm những vấn đề liên quan đến sự đồng bộ giữa các tiến trình, thời gian kết thúc của mỗi tiến trình (deadlock), …
Do kĩ thuật đa luồng này là mới và kiểm thử những ứng dụng kiểu này vẫn còn khá khó khăn nên xảy ra hiện tượngnhiều bugs đồng thời được phát hiện bởi người dùng cuối và những kĩ thuật kiểm tra đã và đang được phát triển ở mức độ nhanh chóng để xử lý vấn đề này. Trong lĩnh vực phần cứng, những bộ kiểm tra mới cho những hệ thống đa luồng đã được sáng tạo. Thử thách của công việc này là tạo ra một bài test thú vị với nhiều bài kiểm tra cùng chạy một lúc và đều chờ đợt kết quả đúng. Trong phần mềm, những công cụ kiểm tra và quản lý việc thực thi đa luồng cũng đã được tạo ra để quản lý các điều kiện, hoàn cảnh có thể sinh ra lỗi. 1.6 - Kĩ thuật sinh ra các bài kiểm thử tự động
Đối với lĩnh vực kiểm tra phần cứng, do đặc thù về phương pháp thực hiện, việc sinh ra các bài test tự động là một kĩ thuật cốt lõi đã được phát triển không ngừng trong suốt 20 năm nay. Do đó, những công cụ này hiện nay có tính hoàn thiện rất cao và thậm chí có nhiều đặc điểm rất ưu việt, nhằm tối ưu hóa quá trình kiểm tra để mang lại hiệu suất cao nhất. Do đó, việc ứng dụng những công cụ kiểm tra tự động này trong việc kiểm thử phần mềm nếu được sẽ mang lại giá trị rất lớn về mặt kinh tế, đặc biệt khi chúng được sử dụng trong sự kết hợp với việc kiểm thử theo những hành vi cụ thể của hệ thống phần mềm.
Những công cụ test tự động dựa trên FSM là một trong những ví dụ như vậy. Những công cụ test này sử dụng những thuật toán khảo sát đồ thị để sinh ra các bài test cái mà bao hàm bên trong một mô hình FSM chuẩn của hệ thống được kiểm tra. Sau đó, những bài test này sẽ được thực hiện trong chính hệ thống cần kiểm tra và sử dụng kết quả từ mô hình FSM chuẩn như kết quả mong đợt. Kĩ thuật này có nguồn gốc từ việc kiểm tra phần cứng, cụ thể là việc kiểm tra các giao thức phần cứng liên quan đến cơ chế state-machine, sau đó được chuyển sang ứng dụng trong việc kiểm thử phần mềm ở tầng middle-ware. 1.7 - Kĩ thuật kiểm thử dựa trên hành vi
“Hành vi” hay “những mô hình tham chiếu” là những chương trình để mô phỏng cư xử của hệ thống được kiểm tra. Chúng được sáng tạo để dự đoán cư xử, đáp ứng của hệ thống test đối với các thông số được đưa ra, và do đó cung cấp một phương pháp để đánh giá nhanh khi nào hệ thống cư xử đúng. Kĩ thuật này là rất phổ biến trong lĩnh vực kiểm tra phần cứng, tuy nhiên lại hiếm được áp dụng trong kiểm thử phần mềm, một phần do để viết được một bài test hành vi, hầu hết những tester sẽ cần phải tham gia viết mã nguồn cho hệ thống từ các bước ban đầu và hiểu toàn bộ về hệ thống đó.
Sử dụng hành vi giúp làm tăng quá trình kiểm thử tự động, giảm quá trình phải kiểm tra thủ côn, qua đó tối ưu hóa hơn quá trình kiểm thử. 2 - Kết luận Như vậy, sau khi phân tích những đặc điểm kĩ thuật chung giữa hai ngành kiểm tra phần cứng và kiểm thử phần mềm, chúng ta có thể nhận thấy hiện nay việc trao đổi thông tin và kĩ thuật giữa chung còn rất hạn chế. Mặt khác, hầu hết kĩ thuật đều bắt nguồn từ kĩ thuật kiểm tra phần cứng một thời gian dài do đặc thù về mặt kĩ thuật cũng như lịch sử phát triển, sau đó được ứng dụng và phát triển thêm trong lĩnh vực kiểm thử phần mềm.
Chúng ta cùng hi vọng trong tương lai sự phối hợp giữa 2 ngành này sẽ phát triển ở mức độ cao hơn để cùng hỗ trợ lẫn nhau phát triển các kĩ thuật kiểm tra nhắm nâng cao hơn nữa hiệu suất và chất lượng kiểm tra sản phẩm cuối cùng.