1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web

56 303 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 56
Dung lượng 1,92 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương này cũng trình bày một số kỹ thuật điển hình nhằm tăng tính khả kiểm thử của một hệ thống phần mềm nói chung.. Một số chuyên gia kiểm thử và phát triển phần mềm đã chỉ ra tầm qua

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRẦN THỊ THEN

NGHIÊN CỨU TÍNH KHẢ KIỂM THỬ

CỦA ỨNG DỤNG TRÊN NỀN WEB

LUẬN VĂN THẠC SỸ NGÀNH CÔNG NGHỆ THÔNG TIN

Hà Nội - 2014

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

TRẦN THỊ THEN

NGHIÊN CỨU TÍNH KHẢ KIỂM THỬ

CỦA ỨNG DỤNG TRÊN NỀN WEB

Ngành: Công nghệ Thông tin

Chuyên ngành: Kỹ thuật Phần mềm

Mã số: 60480103

LUẬN VĂN THẠC SỸ NGÀNH CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Đặng Văn Hưng

Hà Nội - 2014

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn này là công trình nghiên cứu của cá nhân tôi, dưới sự hướng dẫn trực tiếp từ phía TS Đặng Văn Hưng Các số liệu, nội dung tham khảo được trích dẫn có nguồn gốc rõ ràng, tuân thủ tôn trọng quyền tác giả Kết quả cuối cùng đạt được của luận văn là thành quả của quá trình nghiên cứu của bản thân, chưa từng được công bố dưới bất kỳ hình thức nào

Tôi xin chịu trách nhiệm về nghiên cứu trong luận văn

Tác giả

Trang 4

Đồng kính gửi lời cảm ơn đến tập thể các thầy , cô giáo trong trường Đa ̣i ho ̣c công nghê ̣ – Đa ̣i ho ̣c Quốc gia Hà Nô ̣i đã trau dồi kiến thức cho tôi , điều đó là nền tảng quí báu góp phần to lớn trong quá trình vâ ̣n du ̣ng vào hoàn thiê ̣n luâ ̣n văn

Cuối cùng, tôi xin được gửi lòng biết ơn sâu sắc đến gia đình , bạn bè, đồng nghiê ̣p đã ta ̣o điều kiê ̣n về vâ ̣t chất cũng như tinh thần , luôn sát cánh bên tôi , đô ̣ng viên giúp tôi yên tâm học tập và kết thúc khóa học

Xin chân thành cảm ơn!

Tác giả

Trần Thị Then

Trang 5

MỤC LỤC

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

DANH MỤC CÁC KÝ HIỆU , THUẬT NGỮ, CHỮ VIẾT TẮT v

DANH MỤC CÁC BẢNG vi

DANH MỤC CÁC HÌNH VẼ vii

PHẦN MỞ ĐẦU 1

Tính cấp thiết và mục tiêu của đề tài 1

Phương pháp nghiên cứu 1

Bố cục của luận văn 2

CHƯƠNG 1 TỔNG QUAN 3

1.1 Tầm quan trọng của tính khả kiểm thử 3

1.2 Khái niệm tính khả kiểm thử 4

1.3 Các khái niệm liên quan tính khả kiểm thử 6

1.4 Một số yếu tố ảnh hướng đến tính khả kiểm thử 9

1.5 Một số độ đo tính khả kiểm thử 12

1.5.1 Độ đo cấu trúc và hành vi 12

1.5.2 Độ đo luồng dữ liệu 13

1.6 Kết chương 14

Trang 6

CHƯƠNG 2 KỸ THUẬT LÀM TĂNG TÍNH KHẢ KIỂM THỬ 15

2.1 Tính khả kiểm thử của tài liệu đặc tả 15

2.2 Tính khả kiểm thử của thiết kế kiến trúc 18

2.3 Tính khả kiểm thử của thiết kế chi tiết 22

2.4 Kiểm thử xây dựng sẵn 22

2.5 Khung và công cụ hỗ trợ kiểm thử 23

2.6 Tổng kết 27

sCHƯƠNG 3 TÍNH KHẢ KIỂM THỬ CỦA ỨNG DỤNG TRÊN NỀN WEB 28

3.1 Đặc trưng chính của các ứng dụng trên nền web 28

3.2 Tính khả kiểm thử của các ứng dụng trên nền web 31

3.2.1 Khía cạnh là một phần mềm 31

3.2.2 Tính khả kiểm thử cho phần máy chủ 32

3.2.3 Tính khả kiểm thử cho phần trình duyệt 35

KẾT LUẬN 44

TÀI LIỆU THAM KHẢO 45

Trang 7

DANH MỤC CÁC KÝ HIỆU , THUẬT NGỮ, CHỮ VIẾT TẮT

2 SOAP Simple Object Access Protocol – Giao thức truy

cập đối tƣợng đơn giản

Trang 8

DANH MỤC CÁC BẢNG

Bảng 1 Kịch bản thuộc tính chất lƣợng dạng bảng 19Bảng 2 Một số công cụ và khung kiểm thử 26Bảng 3 Url có ngữ nghĩa 33

Trang 9

DANH MỤC CÁC HÌNH VẼ

Hình 1 Ví dụ về một file log 8

Hình 2 Chạy javac ở chế độ thường và chế độ verbose 9

Hình 3 Sáu yếu tố ảnh hưởng đến tính khả kiểm thử 10

Hình 4 Một kịch bản thuộc tính chất lượng cho tính khả kiểm thử 18

Hình 5 Các chiến thuật khả kiểm thử 20

Hình 6 Kiến trúc của mô-đun với mã tự kiểm tra [13] 23

Hình 7 Công cụ hỗ trợ lấy thông tin về ứng dụng 24

Hình 8 Kiến trúc chung của ứng dụng web 29

Hình 9 Mô hình tổng quát của các ứng dụng trên nền web 31

Hình 10 Ví dụ url 33

Hình 11 Màn hình SOAP UI 35

Hình 12 WebDriver 36

Hình 13 Ví dụ sử dụng Selenium với Java 36

Hình 14 Một đoạn mã HTML của trang web asp.net 38

Hình 15 Một đoạn mã HTML của trang web ruby-lang 39

Trang 11

PHẦN MỞ ĐẦU

Tính cấp thiết và mục tiêu của đề tài

Sự phát triển và lan tỏa rộng rãi của Internet trên toàn cầu những năm gần đây là cơ sở đánh dấu cho sự bùng nổ mạnh mẽ của các ứng dụng được viết trên nền web Các ứng dụng này có sự tăng mạnh về số lượng cũng như doanh thu

Do đó để có sự canh tranh cao, các công ty phần mềm đang không ngừng tìm cách cải tiến chất lượng ứng dụng, giảm chi phí, đồng thời đẩy nhanh tốc độ xây dựng ứng dụng

Làm việc trong một đơn vị xây dựng phần mềm trong gần năm năm, tôi

đã tham gia vào không ít dự án với vai trò là kỹ sư kiểm thử, trưởng nhóm kiểm thử và nhận thấy nỗ lực kiểm thử và sửa lỗi của các dự án quá lớn (chiếm tới 60-70% nỗ lực cả dự án) Và các nỗ lực này tập trung nhiều nhất ở hai giai đoạn kiểm thử là kiểm thử chức năng và kiểm thử hồi quy

Ngoài nỗ lực kiểm thử lớn, tác giả còn nhận thấy có nhiều lỗi tiềm ẩn mà trong quá trình kiểm thử rất khó hoặc gần như không có khả năng tìm ra Thông qua đề tài này, tôi mong muốn tìm ra phương pháp để việc kiểm thử dễ dàng thực hiện hơn, tránh được các lỗi tiềm ẩn nhằm giảm bớt các thiệt hại do lỗi không được phát hiện gây ra, đồng thời là cơ sở để giảm nỗ lực, chi phí cho việc kiểm thử

Phương pháp nghiên cứu

Để đề tài đạt được kết quả như mục tiêu đặt ra, trong luận văn tôi đã đề xuất và áp dụng các phương pháp nghiên cứu như sau:

- Nghiên cứu tài liệu: Nghiên cứu các khái niệm về tính khả kiểm thử và tập

trung vào các kỹ thuật làm tăng tính khả kiểm thử Đây là mảng kiến thức

mà các nghiên cứu trên thế giới vẫn còn hạn chế, các khái niệm còn chưa

Trang 12

có sự thống nhất do đó đòi hỏi nhiều kiến thức nền tảng để lựa chọn thông tin cho phù hợp với mục tiêu đặt ra ban đầu

- Phân tích và áp dụng: Qua việc phân tích các đặc thù của ứng dụng web

tôi đưa ra một số chú ý để tăng tính khả kiểm thử cho lớp ứng dụng này Các đề xuất này được trao đổi với các đồng nghiệp để nhận được góp ý từ đội phát triển phần mềm, gồm cả lập trình viên, kiểm thử viên

Bố cục của luận văn

Phần còn lại của luận văn được trình bày theo các phần chính sau:

 Chương 1: Tổng quan Chương này trình bày một số kiến thức cơ

sở về tính khả kiểm thử như các khái niệm, các yếu tố ảnh hưởng đến tính khả kiểm thử, lợi ích khi chúng ta chú ý đến tính khả kiểm thử

 Chương 2: Kỹ thuật làm tăng tính khả kiểm thử Chương này

trình bày một số khái niệm về tính khả kiểm thử thông qua các độ

đo cấu trúc thiết kế và chương trình Chương này cũng trình bày

một số kỹ thuật điển hình nhằm tăng tính khả kiểm thử của một hệ thống phần mềm nói chung

 Chương 3: Tính khả kiểm thử của ứng dụng trên nền web

Chương này phân tích đặc điểm của ứng dụng web và đề xuất một

số điểm quan trọng cần chú ý để tăng tính khả kiểm thử của các ứng dụng web nói chung

 Kết luận: Tổng hợp các kết quả đạt được, tồn tại và hướng mở

rộng của đề tài

Trang 13

CHƯƠNG 1 TỔNG QUAN

Trong chương này, chúng ta sẽ xem xét các khái niệm cơ bản nhất khi nói

về tính khả kiểm thử [1] Bao gồm các khái niệm, tầm quan trọng, các yếu tố tác động đến tính khả kiểm thử Mục tiêu là để cho người đọc có cái nhìn tổng quan nhất về tính khả kiểm thử

1.1 Tầm quan trọng của tính khả kiểm thử

Tính khả kiểm của phần mềm là một trong những khái niệm quan trọng trong thiết kế và kiểm thử chương trình và các thành phần phần mềm Xây dựng các chương trình và các thành phần với tính khả kiểm thử cao luôn luôn làm đơn giản hóa việc thực hiện kiểm thử, giảm chi phí kiểm thử và tăng chất lượng phần mềm Chi phí kiểm thử đang chiếm khoảng 50% chi phí sản xuất một phần mềm Tăng tính khả kiểm thử là điều kiện cần thiết để giảm tận gốc chi phí kiểm thử phần mềm nói riêng và chi phí sản xuất phần mềm nói chung

Một số chuyên gia kiểm thử và phát triển phần mềm đã chỉ ra tầm quan trọng của tính khả kiểm thử và thiết kế, đặc biệt là đối với các hệ thống lớn:

 Trong quá trình phân tích thiết kế một hệ thống, chúng ta không chỉ cần quan tâm đến tính khả thi (có thể xây dựng được) mà còn phải chú ý đến tính khả kiểm thử của chúng

 Bỏ qua việc thiết kế để có khả năng kiểm thử cao trong các hệ thống lớn có thể làm giảm hiệu quả kiểm thử rất nhiều [2]

Tầm quan trọng của tính khả kiểm thử phần mềm đối với một hệ thống phần mềm nào đó tỷ lệ thuận với:

 Kích thước và độ phức tạp của hệ thống

Trang 14

 Các rủi ro đối với cuộc sống và kinh doanh nếu có lỗi không được phát hiện

 Tần suất của các hoạt động kiểm thử

 Vòng đời của hệ thống (giả sử rằng kiểm thử hồi quy và bảo trì là nhiệm vụ thường xuyên)

Tính khả kiểm thử rất quan trọng đối với kiểm thử viên và lập trình viên

vì nó giúp họ kiểm soát được nỗ lực kiểm thử Khách hàng cũng sẽ được lợi ích nếu chất lượng sản phẩm cao hơn và tốc độ sửa lỗi nhanh hơn Những tính chất của tính khả kiểm thử như: xây dựng mã nguồn phục vụ kiểm thử tự động, báo cáo lỗi tự động, và khả năng chuẩn đoán lỗi bên trong (built-in diagnostic) sẽ cung cấp thông tin nhanh hơn, tốt hơn về nguyên nhân lỗi và do đó giúp đẩy nhanh tiến độ sửa lỗi

Sau khi đã ước lượng, tính toán được tính khả kiểm thử của một hệ thống,

ta có thể đưa ra các thông tin hữu ích cho kiểm thử viên, lập trình viên và quản trị dự án nhằm mục đích:

 Tập trung vào các thành phần có tính khả kiểm thấp – xem xét mã nguồn, phân tích hình thức, tiêu chuẩn kiểm thử cao hơn

 Thay đổi các thành phần có tính khả kiểm thấp để tăng tính khả kiểm

 Tự tin hơn với các thành phần có tính khả kiểm cao

 Phân tích rủi ro đối với các thành phần có tính khả kiểm thấp để xác định các rủi ro của hệ thống cũng như tìm ra nguyên nhân gốc

1.2 Khái niệm tính khả kiểm thử

Khi phát triển một phần mềm chúng ta không chỉ tạo ra phần chương trình mà thường tạo ra nhiều sản phẩm trung gian khác như các tài liệu đặc tả yêu cầu, tài liệu thiết kế, mã nguồn và chương trình phần mềm Tiếng Anh dùng

từ artifact để chỉ chung các sản phẩm này Tính khả kiểm thử là các đặc tính của các artifact mà các đặc tính này ảnh hưởng đến sự dễ dàng đạt được các mục

Trang 15

tiêu kiểm thử Nó được định nghĩa là “mức độ mà một artifact phần mềm tạo điều kiện cho việc kiểm thử” [3]

Định nghĩa này cho ta thấy:

 Không chỉ mã nguồn hay bản chạy chương trình ảnh hưởng đến kiểm thử mà là toàn bộ các artifact tạo ra trong quá trình phát triển phần mềm đều có vài trò quan trọng

 Liệu một artifact có tạo điều kiện cho việc kiểm thử hay không chỉ

có thể được xác định trong ngữ cảnh kiểm thử, ví dụ, với mục tiêu, nguồn lực, kỹ thuật và công cụ kiểm thử

Chúng ta xem một ví dụ để hiểu rõ hơn khái niệm tính khả kiểm thử này Một artifact mô tả một giao diện phần mềm sẽ hỗ trợ việc kiểm thử hộp đen và

nó không hỗ trợ kiểm thử hộp trắng vì giao diện không nêu cấu trúc của cài đặt (implementation) của giao diện đó Nếu mục tiêu kiểm thử không phải là đạt được một mức độ bao phủ kiểm thử hộp trắng, ví dụ bao phủ 100% dòng lệnh, thì mô tả giao diện không có ảnh hưởng gì nhiều đến việc đạt mục tiêu

Ngoài định nghĩa về tính khả kiểm thử trên có một số định nghĩa khác về tính khả kiếm thử Theo [4], tính khả kiểm thử là sự dễ dàng và chi phí tương đối để tìm ra lỗi phần mềm

Theo thuật ngữ của IEEE [5], tính khả kiểm thử gồm:

 “mức độ dễ dàng thiết lập các tiêu chuẩn kiểm thử và thực thi kiểm thử của một hệ thống hay một thành phần hệ thống để xác định xem các tiêu chuẩn đó có được thỏa mãn không.”

 “mức độ cho phép thiết lập các tiêu chuẩn kiểm thử và thực thi kiểm thử đối với một yêu cầu để xác định xem các tiêu chuẩn đó có được thỏa mãn không”

Theo chuẩn ISO về chất lượng sản phẩm phần mềm [6], tính khả kiểm thử là tập các thuộc tính có liên quan đến nỗ lực cần thiết để thẩm định (validate) một phần mềm đã sửa đổi

Trang 16

Như vậy chúng ta có thể thấy, về cơ bản, tính khả kiểm thử đều được hiểu

là mức độ dễ dàng để thực hiện việc kiểm thử hay mức độ dễ dàng để tìm ra lỗi của hệ thống phần mềm Các việc kiểm thử không chỉ áp dụng cho chương trình phần mềm mà còn cả các sản phẩm trung gian như tài liệu yêu cầu, thiết kế, v.v Tuy nhiên, các định nghĩa vẫn có những chi tiết khác nhau về định nghĩa một hệ thống thế nào là có tính khả kiểm thử cao Trong chương sau, chúng ta sẽ nghiên cứu cụ thể hơn về một trong những cách để đo đạc một cách định lượng tính khả kiểm thử của một hệ thống

1.3 Các khái niệm liên quan tính khả kiểm thử

Khả năng kiểm soát và khả năng quan sát là hai khái niệm mấu chốt của tính khả kiểm thử [4] Để kiểm thử một thành phần, ta cần phải kiểm soát được đầu vào và quan sát được đầu ra Khả năng kiểm soát là khả năng điều khiển dễ dàng đầu vào để chuyển phần mềm đến một trạng thái cụ thể nào đó Còn khả năng quan sát liên quan đến mức độ dễ dàng trong việc quan sát kết quả đầu ra

và các thay đổi về trạng thái của phần mềm Nếu không có được hai khả năng này, việc cải tiến khả năng kiểm thử hệ thống là rất khó thực hiện Hay nói cách khác, một thành phần của phần mềm được gọi là khả kiểm thử nếu nó có hai thuộc tính này

Khả năng kiểm soát là khả năng điều khiển các thành phần của phần

mềm đến các trạng thái mong muốn thông qua các giá trị đầu vào Giá trị đầu vào có thể là các biến của hàm/phương thức, lấy từ tương tác của người dùng thông qua giao diện phần mềm hoặc các tương tác bên trong/bên ngoài của ứng dụng, được lưu trữ, thao tác trong các biến và có khả năng thay đổi tùy vào phạm vi của biến

Trạng thái phần mềm là một tập các biến và các giá trị tương ứng tại một thời điểm nhất định Trong một mô-đun hay một đơn vị chương trình, có thể có

vô số các trạng thái này, tuy nhiên chỉ một tập nhỏ các kết hợp là có ý nghĩa và được quan tâm Ví dụ phần mềm thao tác trên tài khoản ngân hàng: khi chủ tài khoản rút tiền, phần mềm sẽ đánh dấu trạng thái tài khoản đó là „đang hoạt động‟ khi hoàn tất giao dịch Nếu là thẻ tín dụng, sự thay đổi trạng thái tài

Trang 17

khoản chỉ được chủ thẻ để ý khi tài khoản không còn đủ tiền so với số tiền khách rút Tài khoản khi đó có thể được đánh dấu là rút quá (overdrawn) Khả năng thao tác trên các đầu vào và quan sát trạng thái dễ dàng sẽ giúp đội phát triển có thể tạo ra một bộ kiểm thử tự động hiệu quả

Khả năng quan sát là khả năng nhìn được phản ứng của hệ thống đối

với các đầu vào và theo dõi được các thay đổi trạng thái của phần mềm Thường thì ta có thể thấy đầu ra của hệ thống, tuy nhiên, có nhiều phản ứng hay trạng thái trung gian có thể không đúng và ta thường không nhìn thấy Ba điều kiện cần để một lỗi xuất hiện là: (1) chạy mã nguồn có lỗi; (2) mã nguồn lỗi đó dẫn đến 1 trạng thái dữ liệu sai; (3) trạng thái sai này được nhìn thấy Khả năng quan sát là sự dễ dàng để của hệ thống giúp chúng ta xem được cả các trạng thái trung gian mà bình thường không quan sát được

Thực hiện các phương pháp để tăng khả năng quan sát các trạng thái sẽ giúp phát hiện các lỗi tiềm ẩn của chương trình Khả năng quan sát do đó có liên quan đến thể hiện của kết quả kiểm thử phần mềm Có thể tăng cường khả năng quan sát của phần mềm bằng nhiều cách: ghi log, truy vết, chèn mã (code instrumentation), thăm dò và chèn các câu lệnh in ra màn hình vào mã nguồn

Ví dụ khi lập trình chúng ta ghi ra các file log một số cột mốc của hệ thống, như bắt đầu một hàm, kết thúc một hàm, hoặc một sự kiện nào đó, thì khi xem lại các file log này để giúp quan sát bên trong hệ thống thì chúng ta đã tăng khả năng quan sát của phần mềm Hình 1 là một ví dụ về log hệ thống cho thấy các thông tin chi tiết về hoạt động của hệ điều hành

Trang 19

Ở ví dụ này chúng ta có thể thấy khi chạy với tham số verbose, chương trình dịch in rất nhiều thông tin chi tiết từng bước hoạt động bên trong của chương trình dịch, giúp ta quan sát được các thông tin

1.4 Một số yếu tố ảnh hướng đến tính khả kiểm thử

Theo [4] có sáu yếu tố chính ảnh hưởng đến tính khả kiểm thử của một phần mềm Sáu yếu tố tương ứng với các bước chính trong quy trình phát triển phần mềm cơ bản gồm1:

1 http://robertvbinder.com/software-testability-part-2-controllability-and-observability/

C:\Users\thentt>javac HelloWorld.java

C:\Users\thentt>javac -verbose HelloWorld.java

[parsing started RegularFileObject[HelloWorld.java]]

[parsing completed 26ms]

[search path for source files: ]

[search path for class files: C:\Program

Trang 20

Hình 3 Sáu yếu tố ảnh hưởng đến tính khả kiểm thử

Yếu tố về tài liệu mô tả: Hành vi và kiến trúc phần mềm có thể được tài

liệu hóa dưới dạng các đặc tả yêu cầu, cách nhìn kiến trúc, mô hình thiết kế chi tiết và các giả thuật toán Sự rõ ràng và ngắn gọn của tài liệu này có thể hỗ trợ tính khả kiểm thử Một số đặc điểm của tài liệu làm tăng khả năng kiểm thử bao gồm: các yêu cầu được mô tả rõ ràng, không mơ hồ, có tính khả thi khi sinh ca kiểm thử từ yêu cầu, thiết kế chi tiết triệt để, khả năng lưu vết khi cài đặt và phân chia chức năng một cách tách bạch

Yếu tố về cài đặt: Phần mềm được cài đặt với nhiều ngôn ngữ lập trình

và mô hình khác nhau Các tính năng có sẵn trong những ngôn ngữ và mô hình này làm cho việc kiểm thử khó khăn hơn hay dễ dàng hơn phụ thuộc vào cách chúng được sử dụng Ví dụ, trong các hệ thống hướng đối tượng, thừa thế là một đặc tính có thể gây khó khăn cho việc kiểm thử nếu cây thừa kế có nhiều mức vì các lớp ở mức thấp hơn cần phải hoạt động giống với các lớp ở mức cao hơn

Yếu tố về kiểm thử kèm theo: Mã nguồn được viết thêm các lệnh để

kiểm tra tính chất của dữ liệu nhằm giảm bớt công việc kiểm thử Nó giúp hệ thống có khả năng tự kiểm tra và những kiểm tra này không là các tính năng được mô tả trong đặc tả của phần mềm Ví dụ, các lệnh assert trong các ngôn ngữ lập trình hiện đại nhằm giúp viết các lệnh kiểm tra này dễ dàng hơn

Trang 21

Ví dụ sau thể hiện việc sử dụng lệnh assert để kiểm tra giá trị của biến truyền vào nằm trong khoảng hợp lệ

6 private void setRefreshInterval(int interval) {

7 // Confirm adherence to precondition in nonpublic method

8 assert interval > 0 && interval <= 1000/MAX_REFRESH_RATE :

interval;

9 // Set the refresh interval

10 }

Yếu tố về bộ kiểm thử: Bộ kiểm thử là một tập các ca kiểm thử và các

bước để thực hiện các ca kiểm thử đó Bộ kiểm thử hướng dẫn cách để dự đoán các kết quả kiểm thử, do đó nó giúp cho việc kiểm thử hệ thống dễ dàng hơn

Bộ kiểm thử cũng được sử dụng lại mỗi khi kiểm thử hồi quy một hệ thống Nếu việc kiểm thử hồi quy này được thực hiện tự động một cách hiệu quả thì rõ ràng nó giúp tiết kiệm các chi phí và nỗ lực kiểm thử Bộ kiểm thử nếu được tổ chức một cách khoa học và có khả năng mở rộng sẽ làm tăng hiệu quả của công việc kiểm thử

Yếu tố về công cụ kiểm thử: Có các công cụ thực thi các kịch bản kiểm

thử tự động, ghi lại các bước thực thi, lưu thông tin trạng thái và thông tin, sau

đó báo cáo kết quả kiểm thử làm cho việc kiểm thử dễ dàng hơn rất nhiều Đặc biệt là giảm bớt nỗ lực kiểm thử trong giai đoạn kiểm thử hồi quy

Nếu hệ thống cho phép áp dụng dễ dàng các công cụ kiểm thử tự động và thay đổi dễ dàng bộ kiểm thử khi chương trình thay đổi thì rõ ràng nó có ảnh hưởng tích cực đến khả năng kiểm thử hệ thống

2 http://docs.oracle.com/javase/8/docs/technotes/guides/language/assert.html

Trang 22

Yếu tố về quy trình kiểm thử: Nên có một cam kết đối với việc kiểm

thử phần mềm của đơn vị sản xuất phần mềm Điều này phản ánh trong nguồn lực liên quan đến kiểm thử như nhân sự thực hiện, chiến lược kiểm thử hệ thống

và việc tích hợp công việc kiểm thử trong suốt quy trình phát triển

1.5 Một số độ đo tính khả kiểm thử

Theo Binder [4] khả năng kiểm thử được đánh giá hay đo dựa trên các độ

đo của chương trình phần mềm là độ phức tạp cấu trúc và hành vi, và độ phức tạp luồng dữ liệu Độ đo cấu trúc và hành vi thể hiện các thành phần phần mềm trong hệ thống và quan hệ, tương tác giữa chúng Độ đo luồng dữ liệu mô tả sự phức tạp của các đường đi dữ liệu di chuyển trong hệ thống

1.5.1 Độ đo cấu trúc và hành vi

Chúng ta biết rằng khi thiết kế một phần mềm chúng ta thường thể hiện bằng các mô hình, gồm các thành phần và liên kết giữa chúng (về cấu trúc), cũng như tương tác giữa các thành phần đó trong quá trình hoạt động của phần mềm (về hành vi) Các mô hình cấu trúc và hành vi này cuối cùng sẽ được chuyển sang bước cài đặt chương trình phần mềm Các mô hình và chương trình đều có thể được sử dụng để phục vụ công việc kiểm thử nên chúng ảnh hưởng trực tiếp đến mức độ dễ dàng để thực hiện việc kiểm thử Các tài liệu và mã nguồn phần mềm này sẽ được phân tích để chọn ra các thuộc tính dùng làm độ

đo để đo lường tính khả kiểm thử

Ngôn ngữ mô hình hóa thống nhất UML là một ngôn ngữ mô hình hóa phổ biến để mô tả cấu trúc và hành vi phần mềm Qua nghiên cứu, người ta thấy rằng, các mô hình lớp và mô hình trạng thái trong UML là hai mô hình chính ảnh hướng đến tính khả kiểm thử nên chúng được tập trung phân tích khi nói đến khả năng kiểm thử Các mô hình này có thể gây khó khăn cho việc kiểm thử

do các tác động phụ phát sinh khi các đối tượng tương tác với nhau

Ví dụ, một đối tượng thay đổi trạng thái của một đối tượng khác qua nhiều cách (đường) khác nhau Những khu vực này cần được chú ý để cải thiện

Trang 23

tính khả kiểm thử Hình 2 mô tả một ví dụ của các tương tác lớp có thể dẫn đến các tương tác đối tượng như vậy Trong hình này một đối tượng của lớp C có thể tương tác ngầm với một đối tượng của lớp D, hoặc trực tiếp thông qua quan

hệ lớp hoặc gián tiếp thông qua phân cấp kế thừa các lớp A, A2 hoặc A21

Hình 2 Tương tác lớp dẫn đến các tương tác đối tượng

Độ phức tạp của các tương tác được mô hình hóa bởi biểu đồ lớp này có thể là cơ sở để đo tính khả kiểm thửu của phần mềm Ở mức mã nguồn chương trình, việc phân tích tĩnh mã nguồn cũng có thể cung cấp một thông tin về độ đo tính khả kiểm thử

Phân tích tĩnh mã nguồn cũng được sử dụng để dự đoán tính khả kiểm của các lớp trong một hệ thống hướng đối tượng Chẳng hạn, để phân tích mối tương quan giữa các thuộc tính hướng đối tượng với kích thước bộ kiểm thử, có thể sử dụng hai độ đo là độ đo về độ sâu của cây phân cấp, số dòng lệnh cho mỗi lớp, và số con của một lớp và độ đo về số lượng ca kiểm thử Hay nói khác

đi, hai độ đo này có thể trả lời câu hỏi các thuộc tính hướng đối tượng có ảnh hưởng gì đến số lượng và độ phức tạp của các ca kiểm thử

1.5.2 Độ đo luồng dữ liệu

Độ đo luồng dữ liệu dựa vào luồng dữ liệu đi các thành phần của phần mềm để đánh giá/đo tính khả kiểm thử Các mô hình luồng dữ liệu cho thấy dữ liệu trong hệ thống di chuyển theo các đường như thế nào Các độ đo luồng dữ liệu có thể dựa trên việc phân tích các mô hình luồng dữ liệu hoặc mã nguồn

Trang 24

chương trình Các kỹ thuật phân tích luồng dữ liệu đã được sử dụng trong các trình biên dịch để thực hiện phân tích tĩnh mã nguồn và xác định đường đi dữ liệu trong phần mềm

Theo [7] một kỹ thuật đồ thị được gọi là đồ thị chuyển thông tin – Information Transfer Graph (ITG) được sử dụng để phân tích luồng dữ liệu trong các thành phần phần mềm Một ITG được tạo ra suốt quá trình phân tích một mô hình luồng dữ liệu Một luồng được định nghĩa là sự chuyển động/sự thay đổi của dữ liệu từ đầu vào, xuyên suốt một số các thành phần, đến một đầu

ra của hệ thống Bài báo cũng đưa ra nhiều độ đo khả kiểm thử

Ví dụ tính khả kiểm thử của các cặp def-use (từ lúc biến được gán giá trị - def, đến lúc giá trị của biến được sử dụng use) được đo bằng nghịch đảo của tổng số cặp def-use trong chương trình Dễ thấy giá trị này càng cao có nghĩa chương trình càng dễ kiểm thử

1.6 Kết chương

Chương này tóm tắt khái quát một số độ đo của tính khả kiểm thử một phần của phần mềm Để giảm chi phí và tăng hiệu quả kiểm thử, việc đo đạc và tăng tính khả kiểm thử cần được thực hiện càng sớm càng tốt để tránh phải thiết

kế lại hoặc cài đặt lại về sau Điều này có nghĩa chúng ta phải chú ý tính khả kiểm thử của tài liệu đặc tả đầu tiên, tiếp đó là phải chú ý đến tính khả kiểm thử của thiết kế, rồi mới đến tính khả kiểm thử mã nguồn, v.v

Ở mỗi giai đoạn của quá trình phát triển phầm mềm lại có nhiều độ đo khác nhau nên việc chọn một độ đo phù hợp là việc cần phân tích, cân nhắc Một số độ đo phức tạp nhưng phản ánh chính xác hơn tính khả kiểm thử, một số

độ đo lại đơn giản nhưng đánh giá khá thô tính khả kiểm thử Chúng ta cần chọn

độ đo cân bằng giữa nhu cầu khả kiểm thử của từng giai đoạn và công sức bỏ ra

để thực hiện việc tính toán, đo đạc các độ đo này

Trang 25

CHƯƠNG 2 KỸ THUẬT LÀM TĂNG TÍNH KHẢ KIỂM THỬ

Chương trước đã nói về các độ đo được sử dụng để làm giảm công việc kiểm thử phần mềm Tuy nhiên, bản thân phép đo tính khả kiểm không làm cho phần mềm có khả năng kiểm thử hơn mà là giúp đánh giá chất lượng của việc phát triển để hướng tới việc nâng cao yếu tố chất lượng này, tức là nâng cao tính khả kiểm thử Trong chương này, chúng ta sẽ xem xét một số kỹ thuật có thể được sử dụng để cải tiến tính khả kiểm thử phần mềm dựa trên [4] Độ đo tính khả kiểm thử là một thước đo giúp chúng ta biết đã cải tiến được bao nhiêu

Thiết kế phần mềm là bước xây dựng các tài liệu như đặc tả yêu cầu, khung nhìn kiến trúc và các mô hình thiết kế chi tiết Các tài liệu này cuối cùng

sẽ được dùng trong pha kiểm thử phần mềm vì nó mô tả các hành vi và đặc tính mong muốn của phần mềm Chất lượng của mỗi tài liệu này sẽ giúp cho bước cài đặt, bước kiểm thử thực hiện ở giai đoạn sau thực hiện dễ dàng hơn Tuy nhiên, đối với mỗi tài liệu sẽ có sự tương tác riêng đến khả năng kiểm thử mà ta cần xem xét cụ thể, chi tiết

2.1 Tính khả kiểm thử của tài liệu đặc tả

Một trong những giai đoạn đầu của thiết kế phần mềm là mô tả yêu cầu

kỹ thuật Yêu cầu kỹ thuật mô tả các chức năng hệ thống phải thực hiện, các đặc điểm đáng chú ý về và cần thiết của hệ thống, các ràng buộc về hoạt động của

Trang 26

thuật hơn Tuy nhiên, nó vẫn chỉ mô tả chức năng và các ràng buộc nhìn từ phía ngoài của hệ thống chứ chưa nêu chi tiết cần cài đặt như thế nào

Các yêu cầu hệ thống này có thể được viết bằng các đặc tả ngôn ngữ có cấu trúc, sử dụng các biểu mẫu với các trường dữ liệu chuẩn Ngoài ra, tài liệu yêu cầu hệ thống còn thường mô tả các trường hợp/ca sử dụng (use case) và biểu đồ tuần tự Tài liệu này là đặc tả yêu cầu phần mềm (SRS - Software Requirements Specification)

Các yêu cầu hệ thống thường không được sử dụng để thiết kế và cài đặt phần mềm ngay, mà trước khi đó chúng ta cần kiểm tra/kiểm thử tính đúng đắn

và chất lượng của chúng, để các việc phát triển sau đó được thuận lợi hơn Do

đó để tăng tính khả kiểm thử, các tài liệu yêu cầu cần được viết rõ ràng, không

mơ hồ để tránh bị người lập trình và người thiết kế hiểu sai hay hiểu không

Với các qui trình phát triển hiện đại ngày nay người ta thường lấy các ví

dụ trong qua trình thu thập yêu cầu để sử dụng chúng làm ca kiểm thử Các ví

dụ này cũng giúp cả người khách hàng và đội phát triển cùng hiểu đúng yêu cầu cần đạt của các chức năng phần mềm Theo phương pháp phát triển hướng hành

vi [8] (BDD -behaviour driven development) người ta còn sử dụng một ngôn ngữ chuyên dụng là gherkin3 để viết các kịch bản làm ví dụ cho các tính năng của sản phẩm như ví dụ sau

3 http://cukes.info/gherkin.html

Trang 27

Ở ví dụ này tính năng quản lý tài khoản (Password mangement) có một kịch bản (ví dụ) khi người sử dụng có email cukes@cukes.info quên mật khẩu

và chọn chức năng reset thì hệ thống sẽ gửi email với link để đặt lại mật khẩu mới cho người dùng

Thông thường một tính năng (feature) này có thể có nhiều kịch bản (scenario) chính là các ví dụ hay tương đương một ca kiểm thử Theo cách này chúng ta vừa sử dụng mô tả này làm tài liệu yêu cầu, đồng thời cũng sử dụng nó

để viết kiểm thử chấp nhận hay kiểm thử chức năng ở mức người sử dụng và chúng sẽ được chạy tự động

Lỗi về giao diện phần mềm (không phải giao diện người dùng) là một trong những vấn đề phổ biến nhất trong quá trình xây dựng phần mềm Do đó chúng ta cần tập trung đặc biệt vào đặc tả giao diện khi xây dựng đặc tả yêu cầu

kỹ thuật Đặc tả giao diện phải được mô tả rõ ràng trong tài liệu đặc tả yêu cầu Đặc tả giao diện bao gồm: các đặc tả thủ tục/hàm (giao diện lập trình ứng dụng, API) và các cấu trúc dữ liệu Giao diện phải được đặc tả cho cả hệ thống đang thiết kế và các hệ thống đã có mà sẽ tương tác với hệ thống này

Các yêu cầu được sử dụng để tạo ra các artifact như thiết kế, cài đặt, các

ca kiểm thử, v.v Nếu chúng ta lưu giữ thông tin yêu cầu nào được thể hiện ở trong artifact nào thì việc này giúp chúng lần xuôi, và lần ngược lại giữa các artifact để kiểm tra xem thiết kế có phù hợp với yêu cầu Tương tự, chúng ta có thể biết mô-đun nào cài đặt yêu cầu nào theo thiết kế nào Khái niệm này gọi là khả năng truy vết (traceability) Khả năng truy vết là cơ sở để kiểm tra chất lượng sản phẩm và là phương tiện để chứng minh rằng các yêu cầu đã được

Feature: Password management

Scenario: Forgot password

Given a user with email " cukes@cukes.info " exists

When I ask for a password reset

Then an email with a password reset link should be sent

Trang 28

hiểu rõ, tuân thủ và không có các tính năng/chức năng thừa, không cần thiết Khả năng truy vết cho biết các ca kiểm thử đã được tạo ra ở giai đoạn mô tả yêu cầu có thể được thực hiện trên phần mềm Nói cách khác, khả năng truy vết hỗ trợ đắc lực cho việc tăng tính khả kiểm thử của hệ thống

2.2 Tính khả kiểm thử của thiết kế kiến trúc

Kiến trúc phần mềm của một hệ thống tính toán là cấu trúc tổng thể của

hệ thống, bao gồm các thành phần của hệ thống, các quan hệ/liên kết giữa các thành phần đó và các thuộc tính có thể quan sát từ bên ngoài của các thành phần

và các liên kết đó [9] Kiến trúc tập trung giải quyết các yêu cầu chất lượng như hiệu năng (performance), tính dễ dùng (usability), độ an toàn (security), của hệ thống Tính khả kiểm thử cũng là một trong các thuộc tính chất lượng của hệ thống phần mềm

Thông thường người khách hàng không đưa ra được các yêu cầu thuộc tính chất lượng cụ thể chính xác Việc này sẽ gây khó khăn khi bàn giao, nghiệm thu sản phẩm Do đó khi xác định yêu cầu chất lượng người ta sử dụng các kịch bản thuộc tính chất lượng Một kịch bản thuộc tính chất lượng là một yêu cầu chất lượng cụ thể, nó thường gồm sáu yếu tố sau đây: tác động, nguồn tác động, môi trường, thành phần của hệ thống (artifact), phán ứng cần có, lượng hóa phản ứng bằng giá trị cụ thể Ví dụ về một kịch bản thuộc tính chất lượng khả năng kiểm thử như trong Bảng 1 hay tương đương là Hình 4 [9]

Hình 4 Một kịch bản thuộc tính chất lượng cho tính khả kiểm thử

Ngày đăng: 03/11/2015, 17:00

HÌNH ẢNH LIÊN QUAN

Hình  1 Ví dụ về một file log - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 1 Ví dụ về một file log (Trang 18)
Hình 1  Hình  2 Chạy javac ở chế độ thường và chế độ verbose - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
Hình 1 Hình 2 Chạy javac ở chế độ thường và chế độ verbose (Trang 19)
Hình  3 Sáu yếu tố ảnh hưởng đến tính khả kiểm thử - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 3 Sáu yếu tố ảnh hưởng đến tính khả kiểm thử (Trang 20)
Hình 2 Tương tác lớp dẫn đến các tương tác đối tượng - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
Hình 2 Tương tác lớp dẫn đến các tương tác đối tượng (Trang 23)
Hình  4 Một kịch bản thuộc tính chất lượng cho tính khả kiểm thử - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 4 Một kịch bản thuộc tính chất lượng cho tính khả kiểm thử (Trang 28)
Bảng  1 Kịch bản thuộc tính chất lượng dạng bảng - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
ng 1 Kịch bản thuộc tính chất lượng dạng bảng (Trang 29)
Hình  5 Các chiến thuật khả kiểm thử - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 5 Các chiến thuật khả kiểm thử (Trang 30)
Hình  6 Kiến trúc của mô-đun với mã tự kiểm tra [13] - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 6 Kiến trúc của mô-đun với mã tự kiểm tra [13] (Trang 33)
Hình  7 Công cụ hỗ trợ lấy thông tin về ứng dụng - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 7 Công cụ hỗ trợ lấy thông tin về ứng dụng (Trang 34)
Hình  8 Kiến trúc chung của ứng dụng web - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 8 Kiến trúc chung của ứng dụng web (Trang 39)
Hình  9 Mô hình tổng quát của các ứng dụng trên nền web - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 9 Mô hình tổng quát của các ứng dụng trên nền web (Trang 41)
Hình  11 Màn hình SOAP UI 16 3.2.3  Tính khả kiểm thử cho phần trình duyệt - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 11 Màn hình SOAP UI 16 3.2.3 Tính khả kiểm thử cho phần trình duyệt (Trang 45)
Hình  12 WebDriver - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 12 WebDriver (Trang 46)
Hình 13 là một đoạn  mã Java sử dụng selenium để tương tác với trang - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
Hình 13 là một đoạn mã Java sử dụng selenium để tương tác với trang (Trang 46)
Hình  14 Một đoạn mã HTML của trang web asp.net - Nghiên cứu tính khả kiểm thử của ứng dụng trên nền web
nh 14 Một đoạn mã HTML của trang web asp.net (Trang 48)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w