Tải bản đầy đủ (.pdf) (18 trang)

Vai trò của kiểm thử tự động trong quy trình kiểm thử phần mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.13 MB, 18 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

Vai trò của kiểm thử tự động trong quy trình


kiểm thử phần mềm



Nguyễn Thị Huệ


Trường Đại học Công nghệ



Luận văn Thạc sĩ ngành: Công nghệ phần mềm; Mã số: 60 48 10


Người hướng dẫn: TS. Đặng Văn Hưng



Năm bảo vệ: 2012



<b>Abstract: </b>Nghiên cứu về sự tự động hóa trong kiểm thử phần mềm gồm khái niệm,
lợi ích và cách thức thực hiện tự động hóa, chỉ ra một số công cụ kiểm thử phần mềm
và tập trung vào việc tìm hiểu cơng cụ kiểm thử TestComplete 9 - công cụ đang được
sử dụng khá phổ biến hiện nay. Trình bày một phương pháp sử dụng cơng cụ kiểm thử
TestComplete trong kiểm chứng thiết kế phần mềm.


<b> Keywords: </b>Công nghệ thông tin; Công nghệ phần mềm; Thiết kế phần mềm; Kiểm
thử phần mềm


<b>Content </b>


<b>Chương 1 – GIỚI THIỆU </b>
<b>1.1 Đặt vấn đề </b>


<b>1.2 Nội dung nghiên cứu </b>


Luận văn tập trung nghiên cứu về sự tự động hóa trong kiểm thử phần mềm gồm khái
niệm, lợi ích và cách thức thực hiện tự động hóa, chỉ ra một số cơng cụ kiểm thử phần mềm
và tập trung vào việc tìm hiểu cơng cụ kiểm thử TestComplete 9 – cơng cụ đang được sử dụng
khá phổ biến hiện nay. Ngồi ra, luận văn có trình bày một phương pháp sử dụng công cụ


kiểm thử TestComplete trong kiểm chứng thiết kế phần mềm.


<b>1.3 Cấu tru<sub>́ c luâ ̣n văn </sub></b>


Phần còn lại của luận văn có cấu trúc như sau:


Chương 2: Quy trình kiểm thử phần mềm. Chương này trình bày về mơ hình phát triển
phần mềm và quy trình kiểm thử trong các mơ hình phát triển phần mềm


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

kiểm thử phần mềm. Giới thiệu một số công cụ kiểm thử tự động và đi sâu vào việc tìm hiểu
cơng cụ kiểm thử TestComplete 9. Trình bày phương pháp sử dụng công cụ kiểm thử này
trong kiểm chứng thiết kế.


<b>Chương 2 – QUY TRÌNH KIỂM THỬ PHẦN MỀM </b>
<b>2.1 Quy trình phát triển phần mềm: </b>


Quy trình phát triển phần mềm hay cò n go ̣i là vòng đời phát triển phần mềm là mô ̣t cấu
trúc được dùng để phát triển một sản phẩm phần mềm . Các thuật ngữ tương tự gồm vòng đời
của phần mềm và quy trình phần mềm . Nó được coi như một tập con của vòng đờ i phát triển
hê ̣ thớng. Có nhiều mơ hình về quy trình phát triển phần mềm . Mỡi mơ hình mô tả cách tiếp
câ ̣n với mô ̣t loa ̣t các nhiê ̣m vu ̣ hay hoa ̣t đô ̣ng diễn ra trong suốt quy trình phần mềm .


<b>2.2 Quy trình kiểm thử phần mềm </b>


Quy trình kiểm thử gồm các hoạt động sau:
− Kế hoạch kiểm thử (test planning)
− Thiết kế kiểm thử (test design)


− Triển khai kiểm thử (test implementation)
− Thực thi kiểm thử (test execution)



− Đánh giá kiểm thử (test evaluation)


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>Hình 2.1</b>: Quy trình kiểm thử phần mềm


<b>2.3 Giai đoạn kiểm thư<sub>̉ phần mềm trong vòng đời phát triển phần mềm </sub></b>
<b>2.4 Các kỹ thuật kiểm thử phần mềm </b>


<b>2.4.1 Kiểm thử hộp trắng </b>
<b>2.4.2 Kiểm thư<sub>̉ hô ̣p đen </sub></b>


<b>2.4.3 Lựa cho ̣n kiểu kiểm thử cho hê ̣ thống phần mềm </b>
<b>Chương 3 –TỰ ĐỘNG HÓA KIỂM THỬ PHẦN MỀM </b>
<b>3.1 Định nghĩa: </b>


Tự động hóa kiểm thử phần mềm là 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 khơng có sự tương tác của con người.Việc thực hiện tự động phải
đảm bảo được rằng khơng có hoạt động kiểm thử nào bị bỏ qua. Nó giúp các kỹ sư kiểm thử
(tester) không phải lặp đi lặp lại các bước nhàm chán.


<b>3.2 Mơ hình chung của tự động hóa kiểm thử phần mềm </b>


Tự động hóa kiểm thử phần mềm bao gồm một chuỗi các quá trình, các hoạt động, thao
tác được quy tụ với nhau để thực hiện phần mềm cần kiểm thử và ghi lại kết quả kiểm thử.


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Trong đó, các công cụ được dùng để tự động hóa quy trình kiểm thử trong mơ hình
kiểm thử thực hiện các chức năng:


<i><b>Test Manager</b></i>: quản lý việc thực hiện các kiểm thử của chương trình, theo dõi dữ liệu



kiểm thử, kết quả mong đợi và các chức năng, tiện ích của chương trình được kiểm thử.


<i><b>Test data generator</b></i>: sinh dữ liệu kiểm thử cho chương trình


<i><b>Oracle</b></i>: tạo các phán đốn của kết quả mong đợi. Nó có thể là các phiên bản chương


trình trước đó hoặc các hệ thống prototype. Chú ý, ở đây không phải là cơ sở dư liệu Oracle


<i><b>File comparator</b></i>: Đối chiếu kết quả kiểm thử chương trình với kết quả kiểm thử trước


đó và ghi lại sự khác nhau vào tài liệu


<i><b>Report generator</b></i>: cung cấp các mẫu báo cáo và các tiện ích cho kết quả kiểm thử


<i><b>Dynamic analyzer</b></i>: thêm mã cho chương trình để tính lượng thời gian mỗi lệnh được


thực hiện.


<i><b>Simulator</b></i>: mô phỏng môi trường kiểm thử cho sản phẩm phần mềm.


<b>3.3 Công cụ kiểm thử tự động </b>


Công cu ̣ kiểm thử phần mềm (Test Tool) trong lĩnh vực phát triển phần mềm là công cu ̣
giúp thực hiện viê ̣c phát triển phần mềm mô ̣t cách tự đô ̣ng . Tuy nhiên không phải mo ̣i viê ̣c
kiểm thử đều có thể tự đô ̣ng hóa , câu hỏi đă ̣t ra là trong điều kiê ̣n hay tình huống nào dùng
công cụ kiểm thử là thích hợp ?


<b>3.3.1 Lý do sử dụng công cụ kiểm thử </b>


Viê ̣c dùng công cụ kiểm thử được xem xét trong mô ̣t số tình huống sau:


<b>Không đủ tài nguyên: </b>


<b>Kiểm tra hồi quy: </b>


<b>Kiểm tra khả năng vâ ̣n hành phần mềm trong môi trường đă ̣c biê ̣t </b>
<b>3.3.2 Các bước thực hiện kiểm thử tự động </b>


Giống như phá t triển phần mềm , để thành công trong kiểm thử tự động chúng ta nên
thực hiê ̣n các bước cơ bản sau :


−Thu thập các đặc tả yêu cầu hoặc test case; lựa chọn những phần cần thực hiện kiểm thử
tự động.


− Phân tích và thiết kế mơ hình phát triển kiểm thử tự động.
− Phát triển lệnh đặc tả cho kiểm thử tự động.


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>3.3.3 Cơng cụ hỗ trợ trong quy trình kiểm thử phần mềm </b>


Công cụ kiểm thử tự động phần mềm rất đa dạng và được sử dụng trong nhiều giai đoạn
kiểm thử khác nhau. Hình vẽ 3.2 chỉ ra các loại công cụ khác nhau và việc sử dụng chúng
trong vòng đời phát triển phần mềm.


<i><b>Hình 3.2</b>: Cơng cụ hỗ trợ trong quy trình kiểm thử phần mềm </i>


<b>3.4 Chun mơn hóa con người </b>


<b>3.5 Chi phí trong kiểm thử tự động phần mềm </b>


So với kiểm thử thủ cơng thì chi phí kiểm thử tự động là cao hơn, đặc biệt ở thời điểm
bắt đầu của quy trình tự động hóa. Từ công cụ kiểm thử cho đến các trang thiết bị cần thiết


đều rất đắt đỏ. Tuy nhiên, vốn đầu tư sẽ được hoàn lại sau khoảng thời gian dùng kiểm thử tự
động.


Khơng có sự so sánh rõ ràng giữa chi phí thực hiện các kiểm thử tự động và kiểm thử
thủ công, ở đây ngụ ý về chi phí cho mỗi lần một ca kiểm thử được thực hiện.


Tổng chi phí kiểm thử được xác định bằng tổng chi phí kiểm thử thủ cơng và tự động:


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>3.6 Một số hạn chế trong tự động hóa kiểm thử </b>
<b>Khơng thể thay thế kiểm thử thủ cơng </b>


<b>Kiểm thử thủ cơng có khả năng phát hiện lỗi tốt hơn kiểm thử tự động </b>
<b>Tự động hóa kiểm thử khơng cải thiện nhiều về tính hiệu quả </b>


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<i><b>Chương 4 – TÌM HIỂU CƠNG CỤ TESTCOMPLETE 9 </b></i>


<b>4.1 Loại phần mềm hỗ trợ </b>
<b>4.2 Hỗ trợ các loa ̣i kiểm thử </b>


<b>4.3 Các thành phần quan trọng trong TestComplete 9 </b>
<b>4.4 Ngôn ngư<sub>̃ sử du ̣ng viết Script </sub></b>


<b>4.5 Sư<sub>̉ du ̣ng TestComplete 9 </sub></b>
<b>Chọn loại kiểm thử </b>


<b>Dự án và các thành phần trong dự án kiểm thử </b>
<b>Giao diện người dùng (TestComplete User Interface) </b>


<b>Mơ hình đối tượng kiểm thử (TestComplete Test Object Model) </b>
<b>Đặt điểm kiểm tra và lưu giữ liệu kiểm tra (Checkpoints and Stores) </b>


<b>4.6 Các bước tạo một dự án kiểm thử với TestComplete 9 </b>


Bao gồm các bước sau:
1. Tạo một dự án kiểm thử


2. Xác định ứng dụng cần kiểm thử
3. Hoàn thành việc tạo dự án kiểm thử
4. Tạo ca kiểm thử


5. Phân tích ca kiểm thử đã được ghi
6. Chạy ca kiểm thử được ghi


7. Phân tích kết quả kiểm thử
<b>4.7 Ví dụ </b>


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<i><b>Hình 4.7: </b>Giao diện Patients Management </i>


<b>4.8 Đánh giá công cụ kiểm thử TestComplete 9 </b>
<b>4.8.1 So với mơ hình chung của kiểm thử tự động </b>


TestComplete 9 cung cấp các tính năng đặc biệt để tự động hóa các thao tác kiểm thử,
tạo ca kiểm thử, xác định dữ liệu kiểm thử, thực hiện kiểm thử và ghi lại kết quả. Nó thuộc
một trong các công cụ thực thi và đối chiếu kiểm thử (Test execution and comparison) cho
phép các kiểm thử được thực thi tự động và kết quả kiểm thử được đối chiếu với kết quả
mong đợi. Công cụ này có thể sử dụng ở bất kỳ mức: kiểm thử đơn vị, tích hợp, hệ thống hoặc
chấp nhận và thường được dùng trong kiểm thử hồi quy.


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>Hình 4.33: </b>TestComplete 9 trong mơ hình chung của tự động hóa kiểm thử
<b>4.8.2 So với cơng cụ kiểm thử khác </b>



<b>4.9.1 Một số khái niê ̣m </b>


<b>Kiểm chứng thiết kế (Design checking) </b>
<b>Mô hình trừu tượng </b>


<b>4.9.2 Kiểm chư<sub>́ ng thiết kế với TestComplete 9 </sub></b>
<b>Cơ sở của việc sử dụng kỹ thuật này </b>


Việc thực hiện kiểm chứng thiết kế trong quá trình tạo ra sản phẩm phần mềm đặc biệt
là những phần mềm phức tạp sẽ giúp làm tăng hiệu quả kinh tế nhờ việc phát hiện lỗi sớm –
ngay từ bước thiết kế phần mềm sẽ rút ngắn thời gian và chi phí hồn thành sản phẩm, đảm
bảo tính tin cậy, an toàn của hệ thống được làm ra. Tuy nhiên, thiết kế thường khơng ở dạng
chương trình có thể cài đăt và chạy được. Chính vì vậy, để có thể kiểm chứng thiết kế bằng
cơng cụ TestComplete 9 ta sẽ thực hiện việc chuyển thiết kế thành mơ hình /chương trình
chạy được, sau đó sử dụng cơng cụ kiểm thử này để kiểm thử vét cạn chương trình đó.


<b>Các bước thực hiện: </b>


- Bước 1: Chọn nhánh thiết kế cần kiểm chứng.


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

- Bước 3: Tạo giả chương trình mơ phỏng hoạt động của máy hữu hạn trạng thái trong
bước 2 gồm:


o Tập hữu hạn trạng thái.
o Các hàm chuyển trạng thái.


- Bước 4: Vét cạn các kịch bản kiểm thử giả chương trình bằng ngơn ngữ script của
TestComplete 9


- Bước 5: Sử dụng TestComplete 9 để kiểm thử tìm lỗi thiết kế.


<b>4.9.3 Ví dụ minh họa: </b>


<b>Mơ tả bài tốn </b>


Mong muốn phát triển một hệ thống theo dõi điện tim đồ (ECG) thông qua thiết bị điện
thoại thông minh để chúng ta có thể yêu cầu và ghi lại những thông tin liên quan về nhịp tim
và biết được nguyên nhân tại sao khi ta thấy có dấu hiệu loạn nhịp tim xảy ra.


Các thành phần cơ bản của hệ thống:


- Một thiết bị không dây, một mô đun để lưu trữ và thu thập thông tin.
- Một thuật toán kiểm tra nhịp tim theo thời gian thực hiệu quả.
- Một hệ thống tương tác có qui tắc (Sự kiện – Điều kiện – Giải pháp)


- Một hệ thống giao diện người dùng đơn giản giúp ta có thể yêu cầu bổ sung thêm
thơng tin từ người dùng.


<b>Phân tích bài tốn </b>


Các thành phần của hệ thống


- Hệ thống này sử dụng Bluetooth như một kênh khơng dây để nhận tín hiệu ECG
và chuyển thành tín hiệu nhịp tim đập ghi nhận được đồng thời ghi lại các thông
tin liên quan để giúp cho việc phân tích sau này tốt hơn.


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<b>Hình 4.34: </b>Nền tảng kiến trúc của hệ thống


Hình 4.36 chỉ ra những thành phần cơ bản của hệ thống trên thực tế. Ta có thể chia hệ
thống thành 3 phần chính là: <i>Truyền dữ liệu</i>, <i>thu nhận tín hiệu</i> và <i>xử lý tín hiệu (dựa trên </i>
<i>thơng tin ngữ cảnh sử dụng quy tắc E-C-A)</i>.



</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

cho mức tiếp theo (tương tác sự kiện nhịp sinh bởi thuật tốn kiểm tra nhịp), trong đó chúng
ta sẽ làm một chuỗi các phân tích của các sự kiện, và qua đó đánh giá các điều kiện và yêu
cầu thông tin ngữ cảnh tương ứng với hoạt động hiện tại của người dùng (<i>ADL: Active Daily </i>
<i>Living</i>), sau khi có đầy đủ thơng tin hệ thống lưu trữ ngữ cảnh sẽ thực thi những hành động
tương ứng với tình trạng hiện tại của nhịp tim bệnh nhân.


<b>Thiết kế hệ thống </b>


Với mục đích là một ví dụ phục vụ cho việc kiểm thử tự động, chúng ta sẽ chỉ xét đến
giao thức lý thuyết của hệ thống SAECA viết tắt của Tín hiệu (Signal) – Thuật toán
(Algorithm) – ECA.


Khi một tín hiệu thu nhận được, thuật toán tương ứng sẽ xử lý dữ liệu đến và truyền
kết quả tính tốn được vào cho ECA để đưa ra quyết định hoặc nhận những hành động tương
ứng với tình huống hiện tại.


− Pha 1: Gửi thông tin


Trước khi dữ liệu ECG được truyền đi, nó sẽ được chia ra và chuyển thành dạng
“số nguyên”. Để tăng cường độ chính xác của dữ liệu, hệ thống sẽ kết hợp ID của
bệnh nhân, tần suất lấy mẫu và số mẫu với dữ liệu ECG như sau:


<b>Hình 4.37: </b>Phân tích dữ liệu ECG và chèn thêm thông tin của mẫu
− Pha 2: Nhận và xử lý dữ liệu:


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

bệnh nhân, hệ thống sẽ phân tích để lấy ra mã số của mẫu và dữ liệu ECG. Dữ liệu
ECG sẽ được lưu trữ trong tệp tin và sẽ được phân tích bởi thuật tốn.


<b>Hình 4.38: </b>Sơ đồ xử lý dữ liệu ECG



<b>Chú ý</b>: <i>Sai lầm của mơ hình này nằm ở chỗ: nó đã khơng tính đến tần suất lấy mẫu mà </i>
<i>chỉ sử dụng ID của bệnh nhân, do đó có thể xảy ra trường hợp tràn bộ nhớ của hệ thống! Bởi </i>
<i>rất có thể, trong trường hợp lỗi, bộ phận thu nhận sẽ gửi lặp hoặc gửi liên tục các mẫu! </i>Đây
cũng chính là lỗi mơ hình chúng ta cần tìm ra thông qua vét cạn và thực hiện stress test bằng
TestComplete 9!


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<b>Hình 4.40: </b>Mơ hình trạng thái của module lưu trữ dữ liệu


<b>Xây dựng giả chương trình </b>


Giả chương trình được mơ phỏng bằng ứng dụng web viết trên nền ASP NET MVC 4.0
ngôn ngữ C# chạy trên máy chủ ứng dụng web IIS 8.0.


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b>Hình 4.45: </b>Giao diện chương trình khách
<b>Kiểm thử vét cạn bằng TestComplete 9 </b>


Dựa trên bộ thông tin đầu vào (PatientID, SampleRate, ECGData) vả các trạng thái có
thể ta xây dựng vét cạn được tập ca kiểm thử sau (được chia thành 3 nhóm chính):


− Trường hợp 1: Mã bệnh nhân đúng, tần suất chuẩn, dữ liệu thay đổi (từ thấp nhất
(40) đến cao nhất (200)) gồm 4 ca kiểm thử


− Trường hợp 2: Mã bệnh nhân khơng chính xác, tần suất chuẩn, dữ liệu thay đổi (từ
thấp nhất (40) đến cao nhất (200)) gồm 4 ca kiểm thử


− Trường hợp 3: Mã bệnh nhân đúng, tần suất cực tiểu (0), dữ liệu thay đổi (từ thấp
nhất (40) đến cao nhất (200)) gồm 4 ca kiểm thử.


Với mỗi ca kiểm thử, ta sử dụng TestComplete để nhập trước kết quả mong đợi


(expected result) sau đó tiến hành chạy tự động


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

- <i>Mã bệnh nhân đúng </i>
- <i>Tần suất cực tiểu </i>


- <i>Tập dữ liệu gồm 3 mẫu ở 3 trạng thái (thấp nhất, trung bình, cao nhất) </i>


<b>Hình 4.46: </b>Kết quả mong đợi xây dựng trước


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

<b>Hình 4.48: </b>Kết quả chạy kiểm thử của TestComplete 9


Có tập trạng thái, chúng ta tiến hành lần ngược (debug) trên giả chương trình và phát
hiện lỗi hệ thống tại thời điểm kiểm tra và lưu trữ dữ liệu.


<b>Chương 5 – KẾT LUẬN </b>


Kiểm thử phần mềm, một nội dung nghiên cứu được triển khai từ rất sớm và không phải
là mới mẻ đối với thế giới, nhưng luôn là vấn đề cấp thiết cho việc nâng cao chất lượng phần
mềm.


Trong luận văn này, tác giả đã trình bày tổng quan về quy trình kiểm thử phần mềm, đi
sâu vào nghiên cứu tự động hóa kiểm thử phần mềm và nghiên cứu công cụ kiểm thử
TestComplete 9 – một công cụ kiểm thử khá phổ biến hiện nay.


Luận văn cũng trình bày cách tiếp cận áp dụng cơng cụ kiểm thử vào việc iểm thử thiết
kế mà cụ thể ở đây là công cụ kiểm thử TestComplete 9. Dùng kỹ thuật trừu tượng hóa, biến
đổi thiết kế thành mơ hình có thể tiến hành để kiểm thử bằng công cụ kiểm thử nhằm phát
hiện lỗi ở giai đoạn sớm hơn.


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

1. Nguyễn Xuân Huy (1994), Công nghệ phần mềm, Đại học Tổng hợp Tp. Hồ


Chí Minh.


<b>Tiếng Anh </b>


<i>2. </i> Kanglin Li and Menqi Wu (2004), <i>Effective Software Test Automation: Developing an </i>
<i>Automated Software Testing Tool, </i>Sybex, San Francisco.


<i>3. </i> Mark Fewster and Dorothy Graham (1994), <i>Software Test Automation Effective use of </i>
<i>test execution tools, </i>Copyright @ by ACM Press, Great Britain.


<i>4. </i> Myers and Glenford (1979), <i>The Art of Software Testing, </i>Willey, New York.


<i>5. </i> Pettichord and Bret (1996), <i>Success with test automation, </i>in Proceedings of the Ninth
International Quality Week, Sofware Research, San Francisco, California, Available at
/>


</div>

<!--links-->
VAI TRÒ CỦA TÍCH LUỸ TƯ BẢN TRONG QUÁ TRÌNH HÌNH THÀNH VÀ PHÁT TRIỂN KINH TẾ TƯ BẢN CHỦ NGHĨA.doc
  • 25
  • 53
  • 97
  • ×