Dùbiết công tác kiểm thfí, đảm bảo chất lượng giữ vai trò quan trọng trong việc manglại thành công của các dự án phần mềm song không phải công ty nào cũng có đủchuyên môn và điều kiện ch
Trang 1ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ
THÔNG TIN
======***======
BÁO CÁO BTL HỌC PHẦN: KIỂM THỬ PHẦN
Trang 3LỜI NÓI ĐẦU
Hiện nay, sự phát triển mạnh mẽ cũng như bước chuyển mình nhanh chóngcủa các xu thế công nghệ thông tin trên thế giới đã mang lại cho Việt Nam đồngthời thuận lợi và khó khăn Do đó, những dự án, chương trình quốc gia nhằm thúcđẩy hiệu quả fíng dụng CNTT trong mọi mặt đời sống kinh tế - chính trị - xã hộiđang ngày càng được chú trọng và gấp rút triển khai Kéo theo đó là nhu cầu vềlĩnh vực kiểm thfí phần mềm, đặc biệt là kiểm thfí phần mềm tự động Tại ViệtNam, khái niệm này tuy không mới mẻ song cũng chưa hoàn toàn quen thuộc.Thực tế cho thấy, số lượng đơn vị đào tạo chuyên sâu, các tester chuyên nghiệp vềkiểm thfí phần mềm không nhiều, chưa thể đáp fíng đủ cho các dự án doanhnghiệp Nếu xét theo tiêu chuẩn quốc tế, tỷ lệ giữa lập trình viên và tester là 3:1(cfí 3 lập trình viên thì có 1 tester), đôi khi tỉ lệ này là 1:1 với những dự án đặc thù;thì tại Việt Nam, tỉ lệ đáp fíng được công việc tester chỉ rơi vào khoảng 1.5 Dùbiết công tác kiểm thfí, đảm bảo chất lượng giữ vai trò quan trọng trong việc manglại thành công của các dự án phần mềm song không phải công ty nào cũng có đủchuyên môn và điều kiện cho phép để thực hiện quy trình này Tuy nhiên, vớinhững lợi thế cạnh tranh như: nguồn nhân lực rẻ có sẵn trình độ kỹ thuật; đầu tưphát triển cơ sở hạ tầng nhanh; môi trường đầu tư an toàn; chất lượng dịch vụ nổitrội và tỉ lệ thay đổi nhân sự thấp… Việt Nam có thể hi vọng và tin tưởng vào khảnăng trở thành đối tác kinh doanh đầy tiềm năng và hấp dẫn trong ngành kiểm thfíphần mềm
Sau quá trình tìm hiểu nhóm 15 chúng em quyết định lựa chọn đề tài:
“Nghiên cứu công cụ kiểm thử Test Complete và ứng dụng” để làm báo cáo kết
thúc môn học Rất mong nhận được ý kiến nhận xét, đóng góp của thầy và các bạn
để báo cáo của nhóm được hoàn thiện hơn
Chúng em xin chân thành cảm ơn thầy giáo đã hỗ trợ chúng em vô cùng tận tình để chúng em có thể hoàn thành đề tài của mình Chúc thầy thật nhiều sfíc khỏe
và ngày một thành công trên con đường giảng dạy của mình
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1.1 Lý thuyết về kiểm thử phần mềm
1.1.1 Kiểm thử phần mềm là gì?
Kiểm thfí phần mềm là quy trình được sfí dụng để đánh giá, kiểm tra chấtlượng phần mềm ở nhiều khía cạnh khác nhau dựa trên các yêu cầu của người sfídụng đối với sản phẩm phần mềm, nhằm đảm bảo phần mềm hoạt động tốt trongcác môi trường, trường hợp khác nhau
Kiểm thfí phần mềm là một cuộc kiểm tra được tiến hành để cung cấp chocác bên liên quan thông tin về chất lượng của sản phẩm hoặc dịch vụ được kiểmthfí Kiểm thfí có thể cung cấp cho doanh nghiệp một quan điểm, một cách nhìnđộc lập về phần mềm để từ đó cho phép đánh giá và thấu hiểu được những rủi rotrong quá trình triển khai phần mềm
Trong kỹ thuật kiểm thfí không chỉ giới hạn ở việc thực hiện một chươngtrình hoặc fíng dụng với mục đích đi tìm các lỗi phần mềm (bao gồm các lỗi và cácthiếu sót) mà còn là một quá trình phê chuẩn và xác minh một chương trình máytính / fíng dụng / sản phẩm nhằm:
- Đáp fíng được mọi yêu cầu hướng dẫn khi thiết kế và phát triển phần mềm
- Thực hiện công việc đúng như kỳ vọng
- Có thể triển khai được với những đặc tính tương tự
- Và đáp fíng được mọi nhu cầu của các bên liên quan
Tùy thuộc vào từng phương pháp, việc kiểm thfí có thể được thực hiện bấtcfí lúc nào trong quá trình phát triển phần mềm Theo truyền thống thì các nỗ lựckiểm thfí được tiến hành sau khi các yêu cầu được xác định và việc lập trình đượchoàn tất nhưng trong Agile (là một tập hợp các phương pháp phát triển phần mềmlinh hoạt dựa trên việc lặp đi lặp lại và gia tăng giá trị) thì việc kiểm thfí được tiếnhành liên tục trong suốt quá trình xây dựng phần mềm
Như vậy, mỗi một phương pháp kiểm thfí bị chi phối theo một quy trìnhphát triển phần mềm nhất định
1.1.2 Các mục tiêu chính của kiểm thử phần mềm
- Phát hiện càng nhiều lỗi càng tốt trong thời gian kiểm thfí xác định trước
- Chfíng minh rằng sản phẩm phần mềm phù hợp với các đặc tả yêu
cầu của nó
Trang 5ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
- Xác thực chất lượng kiểm thfí phần mềm đã dùng chi phí và nỗ lực tốithiểu
- Tạo các testcase chất lượng cao, thực hiện kiểm thfí hiệu quả và tạo ra cácbáo cáo vấn đề đúng và hữu dụng
1.1.3 Phân loại kiểm thử phần mềm
Ta phân loại kiểm thfí dựa vào yếu tố: Chiến lược kiểm thfí, phương phápkiểm thfí và kỹ thuật kiểm thfí
- Dựa vào chiến lược kiểm thfí ta có thể phân chia kiểm thfí thành 2 loại:kiểm thfí thủ công và kiểm thfí tự động
- Theo phương pháp tiến hành kiểm thfí ta chia kiểm thfí thành 2 loại:
+ Kiểm thfí tĩnh: Là loại kiểm tra trong đó code không được thực hiện Nó
có thể được thực hiện bằng tay hoặc bằng một bộ công cụ Loại kiểm tranày thực hiện kiểm tra code, tài liệu yêu cầu và tài liệu thiết kế và đưa ranhận xét, lưu nhận xét vào tài liệu công việc Khi phần mềm không thựcthi và không làm gì, chúng ta thực hiện kiểm tra trạng thái an toàn đểphân tích phần mềm trong môi trường không chạy
+ Kiểm thfí động: Được thực hiện khi code đang ở chế độ thực thi Thfínghiệm động được thực hiện trong môi trường thực thi chạy chương trìnhfíng dụng Khi code được thực thi, thì đầu vào được truyền một giá trị,kết quả hoặc đầu ra của việc thực hiện được so sánh với kết quả dự kiếnban đầu đã đưa ra Với việc này chúng ta có thể quan sát được các hành
vi chfíc năng của phần mềm, giám sát hệ thống bộ nhớ, thời gian phảnhồi của CPU, hiệu suất của hệ thống.được thực hiện khi code đang ở chế
độ thực thi Thfí nghiệm động được thực hiện trong môi trường thực thichạy chương trình fíng dụng Khi code được thực thi, thì đầu vào đượctruyền một giá trị, kết quả hoặc đầu ra của việc thực hiện được so sánhvới kết quả dự kiến ban đầu đã đưa ra Với việc này chúng ta có thể quansát được các hành vi chfíc năng của phần mềm, giám sát hệ thống bộnhớ, thời gian phản hồi của CPU, hiệu suất của hệ thống
- Dựa vào kỹ thuật kiểm thfí ta có thể phân chia kiểm thfí thành 3 loại:
+ Kiểm thfí hộp đen+ Kiểm thfí hộp trắng+ Kiểm thfí hộp xám
Trang 61.1.4 Các cấp độ kiểm thử phần mềm
Kiểm thfí phần mềm không đơn giản như nhiều người thường nghĩ, côngviệc này có nhiều mfíc độ khác nhau và có mối tương quan với các chặng pháttriển trong dự án phát triển phần mềm Trong một dự án kiểm thfí phần mềm baogồm 4 mfíc độ cơ bản: Kiểm thfí đơn vị, kiểm thfí tích hợp, kiểm thfí hệ thống vàkiểm thfí chấp nhận
- Kiểm thfí đơn vị (Unit Testing): kiểm thfí sự hiện thực chi tiết của từng đơn
vị nhỏ (hàm, class, ) có hoạt động đúng không?
- Kiểm thfí module (Module Testing): kiểm thfí các dịch vụ của module cóphù hợp với đặc tả của module đó không?
- Kiểm thfí tích hợp (Integration Testing): kiểm thfí xem từng phân hệ củaphần mềm có đảm bảo với đặc tả thiết kế của phân hệ đó không?
- Kiểm thfí hệ thống (System Testing): kiểm thfí các yêu cầu không chfícnăng của phần mềm như hiệu suất, bảo mật, làm việc trong môi trườngcăng thẳng,
- Kiểm thfí độ chấp nhận của người dùng (AcceptanceTesting): kiểm tra xemngười dùng có chấp thuận sfí dụng phần mềm không?
- Kiểm thfí hồi quy: được làm mỗi khi có sự hiệu chỉnh, nâng cấp phần mềmvới mục đích xem phần mềm mới có đảm bảo thực hiện đúng các chfícnăng trước khi hiệu chỉnh không?
Trang 7ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
1.1.5 Test case
Mỗi testcase chfía các thông tin cần thiết để kiểm thfí thành phần phần mềmtheo 1 mục tiêu xác định Testcase gồm bộ 3 thông tin {tập dữ liệu đầu vào, trạngthái của thành phần phầm mềm, tập kết quả kỳ vọng}
- Tập dữ liệu đầu vào (Input): gồm các giá trị dữ liệu cần thiết để thành phầnphầm mềm dùng và xfí lý
- Tập kết quả kỳ vọng: kết quả mong muốn sau khi thành phần phần mềm xfí lý dữ liệu nhập
- Trạng thái thành phần phần mềm: được tạo ra bởi các giá trị prefix và postfix
Tập các testcase: tập hợp các testcase mà ta có ý định dùng để kiểm thfíthành
phần phần mềm để minh chfíng rằng TPPM có đúng các hành vi mong muốn
Các phương pháp thiết kế test case
- Kiểm thfí hộp đen (Black box testing): theo góc nhìn sfí dụng
+ Không cần kiến thfíc về chi tiết thiết kế và hiện thực bên trong
+ Kiểm thfí dựa trên các yêu cầu và đặc tả sfí dụng thành phần phầnmềm
- Kiểm thfí hộp trắng (White box testing): theo góc nhìn hiện thực
+ Cần kiến thfíc về chi tiết thiết kế và hiện thực bêntrong
+ Kiểm thfí dựa vào phủ các lệnh, phủ các nhánh, phủ các điều kiện con
Kiểu kiểm thfí Kỹ thuật kiểm thfí được dùng
Integration testing Hộp đen, hộp trắng
Trang 81.1.6 Các nguyên tắc cơ bản về kiểm thử
Thông tin thiết yếu của mỗi testcase là kết quả hay dữ liệu xuất kỳ vọng
Nếu kết quả kỳ vọng của testcase không được định nghĩa rõ ràng, người ta
sẽ giải thích kết quả sai (plausible) thành kết quả đúng bởi vì hiện tượng “the eyesseeing what it wants to see.”
=> 1 test case phải chfía 2 thành phần thiết yếu:
- Đặc tả về điều kiện dữ liệu nhập
- Đặc tả chính xác về kết quả đúng của chương trình tương fíng với
Xác xuất xuất hiện nhiều lỗi hơn trong 1 section phần mềm tỉ lệ thuận với số lỗi đã phát hiện được trong section đó
Kiểm thfí là 1 tác vụ rất thách thfíc đòi hỏi sự sáng tạo và trí tuệ
Kiểm thfí phần mềm nên bắt đầu từ các thành phần nhỏ đơn giản rồi đến các thành phần ngày càng lớn hơn
Kiểm thfí theo kiểu vét cạn là không thể
Nên hoạch định qui trình kiểm thfí trước khi bắt đầu thực hiện kiểm thfí
1.1.7 Quy trình kiểm thử phần mềm
Dẫu cho các biến thể tồn tại giữa các tổ chfíc lập trình thì vẫn có một quy trình điển hình để kiểm thfí Mẫu dưới đây là phổ biến trong các tổ chfíc sfí dụng
Hộp đenAcceptance testing
Trang 9ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
mô hình phát triển Waterfall (thác nước) Các hoạt động tương tự thường được tìmthấy trong các mô hình phát triển khác, nhưng có thể có hoặc không rõ ràng
Quy trình kiểm thfí phần mềm:
- Phân tích yêu cầu: Kiểm thfí thường sẽ bắt đầu lấy các yêu cầu trong cácgiai đoạn của vòng đời phát triển phần mềm Trong giai đoạn thiết kế, cácTester làm việc với các nhà phát triển để xác định những khía cạnh củamột thiết kế được kiểm chfíng và những thông số được kiểm tra
- Lập kế hoạch kiểm thfí: Chiến lược kiểm thfí, kế hoạch kiểm thfí, kiểmthfí sáng tạo… Và có một kế hoạch là cần thiết vì nhiều hoạt động sẽ đượcthực hiện trong thời gian kiểm thfí
- Kiểm thfí phát triển: Các quy trình kiểm thfí, các kịch bản, Test Case, các
dữ liệu được sfí dụng trong kiểm thfí phần mềm
- Kiểm thfí thực hiện: Dựa trên các kế hoạch, các văn bản kiểm thfí và cácbáo cáo bất kỳ lỗi nào tìm thấy cho nhóm phát triển
- Kiểm thfí báo cáo: Sau khi hoàn tất kiểm thfí, các Tester tạo ra các số liệu
và báo cáo cuối cùng về nỗ lực kiểm thfí của họ và có sẵn sàng phát hànhphần mềm hay không
- Phân tích kết quả kiểm thfí hoặc phân tích thiếu sót được thực hiện bởi độingũ phát triển kết hợp với khách hàng để đưa ra quyết định xem nhữngthiếu sót gì cần phải được chuyển giao, cố định và từ bỏ (tfíc là tìm ra đượcphần mềm hoạt động chính xác) hoặc giải quyết sau
- Test lại khiếm khuyết: Khi một khiếm khuyết đã được xfí lý bởi đội ngũphát triển, nó phải được kiểm tra lại bởi nhóm kiểm thfí
- Kiểm thfí hồi quy: Người ta thường xây dựng một chương trình kiểm thfínhỏ là tập hợp của các bài kiểm tra cho mỗi tích hợp mới, sfía chữa hoặc
cố định phần mềm, để đảm bảo rằng những cung cấp mới nhất đã khôngphá hủy bất cfí điều gì và toàn bộ phần mềm vẫn còn hoạt động một cáchchính xác
- Kiểm thfí đóng gói: Mỗi phép thfí thỏa mãn các chỉ tiêu truy xuất và thuđược những kết quả quan trong như: bài học kinh nghiệm, kết quả, các bảnghi, tài liệu liên quan được lưu trữ và sfí dụng như một tài liệu tham khảocho các dự án trong tương lai
Trang 101.2 Kỹ thuật kiểm thử tự động
1.2.1 Khái quát về kiểm thử phần mềm tự động
Kiểm thfí phần mềm tốn nhiều chi phí nhân công, thời gian Trong một số
dự án, chi phí kiểm thfí phần mềm chiếm 40% tổng giá trị của dự án Nếu cần fíngdụng an toàn hơn, chi phí kiểm thfí còn cao hơn nữa Do đó một trong các mục tiêucủa kiểm thfí là tự động hóa nhiều, nhờ đó mà giảm thiểu chi phí, giảm lỗi, đặcbiệt giúp việc kiểm thfí hồi qui dễ dàng và nhanh chóng hơn Tự động hóa việckiểm thfí là dùng phần mềm điều khiển việc thi hành kiểm thfí, so sánh kết quả cóđược với kết quả mong muốn, thiết lập các điều kiện đầu vào, các kiểm soát kiểmthfí và các chfíc năng báo cáo kết quả
1.2.2 Kiểm thử tự động là gì?
Kiểm thfí tự động là quá trình thực hiện một cách tự động các bước trongmột kịch bản kiểm thfí Kiểm thfí tự động bằng một công cụ nhằm rút ngắn thờigian kiểm thfí
1.2.3 Tại sao phải kiểm thử tự động
Kiểm thfí phần mềm tự động với mục đích:
• Giảm bớt công sfíc và thời gian thực hiện quá trình kiểm thfí
• Tăng độ tin cậy
• Giảm sự nhàm chán cho con người
• Rèn luyện kỹ năng lập trình cho kiểm thfí viên
• Giảm chi phí cho tổng quá trình kiểm
thfí Khi nào cần kiểm thfí tự động:
• Không đủ tài nguyên: khi số lượng tài nguyên quá nhiều mà kiểm thfí viên không thể hoàn tất trong thời gian cụ thể
• Kiểm tra hồi quy: nâng cấp phần mềm, kiểm tra lại các tính năng đã chạy tốt và những tính năng đã sfía -> khó đảm bảo về mặt thời gian
• Kiểm tra khả năng vận hành phần mềm trong môi trường đặc biệt:
- Đo tốc độ trung bình xfí lí một yêu cầu của web server
- Xác định số yêu cầu tối đa xfí lý bởi web server
- Xác định số cấu hình máy thấp nhất mà phần mềm vẫn có thể hoạt động tốt
1.2.4 Nguyên tắc kiểm thử tự động
Thực sự là sai lầm khi nghĩ tự động là đơn giản chụp lại, ghi lại 1 tiến trình kiếm thfí thủ công Thực tế, kiểm thfí tự động có những điểm khác với kiểm thfí
Trang 11ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
thủ công Nó có những lỗi và khả năng dự đoán Vì thế, những cơ hội thành côngvới kiểm kiêm thfí tự động sẽ được cải thiện đáng kể trong trượng hợp bạn thực sựhiểu nó
Kiểm thfí tự động tuân theo đầy đủ những nguyên tắc kiểm thfí nói chung,
đó là các nguyên tắc sau:
- Nguyên tắc 1: Kiểm thfí đưa ra lỗiKiểm thfí có thể cho thấy rằng phần mềm đang có lỗi, nhưng không thểchfíng minh rằng phần mềm không có lỗi Kiểm thfí làm giảm xác suất lỗi chưatìm thấy vẫn còn trong phần mềm, thậm chí là không còn lỗi nào, nó không phải làbằng chfíng của sự chính xác
- Nguyên tắc 2: Kiểm thfí mọi thfí là không thểKiểm thfí mọi thfí (tất cả các tổ hợp của điều kiện input đầu vào) làkhông thể thực hiện được, trừ phi nó chỉ bao gồm một số trường hợp bình thường(ít trường hợp tổ hợp thì có thể test toàn bộ được)
Thay vì kiểm thfí toàn bộ, việc phân tích rủi ro và dựa trên sự mfíc độ ưutiên chúng ta có thể tập trung việc kiểm thfí vào một số điểm cần thiết
- Nguyên tắc 3: Kiểm thfí sớm
Để tìm được bug sớm, các hoạt động kiểm thfí nên được bắt đầu càngsớm càng tốt trong qui trình phát triển (vòng đời phát triển) phần mềm hoặc hệthống, và nên tập trung vào các hoạt động đã định trước
- Nguyên tắc 4: Sự tập trung của lỗi
Nỗ lực kiểm thfí nên tập trung một cách cân đối vào mật độ lỗi dự kiến
và lỗi phát hiện ra sau đó trong các mô-đun
Một số ít các mô-đun thường chfía nhiều lỗi không phát hiện ra trong lúckiểm thfí trước khi phát hành (release), hoặc chịu trách nhiệm cho hầu hết các lỗihoạt động của phần mềm
- Nguyên tắc 5: Nghịch lý thuốc trừ sâu
- Nếu việc kiểm thfí tương tự nhau được lặp đi lặp lại nhiều lần, thì cuốicùng sẽ có một số trường hợp kiểm thfí (ca kiểm thfí - test case) sẽ không còn tìmthấy bất kỳ lỗi nào mới Để khắc phục "nghịch lý thuốc trừ sâu" này, các trườnghợp kiểm thfí cần phải được xem xét và sfía đổi thường xuyên, và cần phải viết cáctest case mới và khác nhau để thực hiện nhiều phần khác nhau của phần mềm hoặc
hệ thống để tìm ra lỗi tiềm ẩn nhiều hơn nữa
- Nguyên tắc này giống như việc trừ sâu trong nông nghiệp, nếu chúng ta
Trang 12cfí phun một loại thuốc với nồng độ giống nhau trong một khoảng thời gian dài thì
Trang 13ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
có một số con sâu sẽ quen dần và cuối cùng việc phun thuốc giống như là tắmchúng vậy (bị lờn thuốc) => lúc đó chúng ta không thể diệt sạch chúng được Dovậy, để diệt sạch sâu một cách hiệu quả, người ta thường thay đổi loại thuốc trừsâu, mỗi loại chỉ dùng trong khoảng thời gian ngắn
- Nguyên tắc 6: Kiểm thfí theo các ngữ cảnh độc lậpNguyên tắc này là việc testing phụ thuộc vào ngữ cảnh, test trong nhiềungữ cảnh khác nhau
- Nguyên tắc 7: Sự sai lầm về việc không có lỗiViệc tìm và sfía chữa lỗi sẽ không giúp được gì nếu hệ thống được xâydựng xong nhưng không thể dùng được và không đáp fíng được nhu cầu và sựmong đợi của người dùng (Nghĩa là nếu sau khi code, test rồi fix bug, làm đủ tất
cả các trường hợp và cuối cùng cho ra một sản phẩm không như mong đợi hoặckhông đáp fíng được nhu cầu của khách hàng thì dự án phần mềm đó coi như thấtbại mặc dù đã được test xong)
1.2.5 Quy trình kiểm thử tự động
Bước 1 Tạo kịch bản kiểm thfí Giai đoạn này dùng công cu kiểm
thfí để ghi lại các thao tác lên phầnmềm cần kiểm tra và tự động sinhra
kịch bản kiểm thfíBước 2 Chỉnh sfí kịch bản Chỉnh sfía để kịch bản kiểm thfí
thực hiện kiểm tra theo đúng yêucầu đặt ra (làm theo trường hợpkiểm thfí
cần thực hiện)Bước 3 Chạy kịch bản kiểm thfí Chạy kịch bản kiểm thfí để kiểm
tra phần mềm có đưa ra đúng như mong
muốn không
Bước 4 Đánh giá kết quả Đánh giá kết quả sau khi chạy kịch
bản kiểm thfí
Trang 141.3 Kỹ thuật kiểm thủ thủ công.
1.3.1 Khái niệm kiểm thử thủ công
Kiểm thfí thủ công là kiểm thfí một phần mềm một cách thủ công (không sfídụng bất kỳ công cụ tự động hoặc bất kỳ đoạn mã nào) Với loại kiểm thfí này,tester như người sfí dụng cuối sẽ kiểm tra phần mềm để xác định bất kỳ hành vikhông mong muốn hoặc lỗi Có rất nhiều giai đoạn để kiểm thfí bằng tay nhưKiểm thfí đơn vị (Unit testing), Kiểm thfí tích hợp (Integration testing), Kiểm thfí
hệ thống (System testing) và Kiểm thfí chấp nhận (User Acceptance testing)
Bất kỳ fíng dụng mới nào cũng phải được kiểm thfí thủ công trước khi thựchiện kiểm thfí tự động hóa Kiểm thfí thủ công đòi hỏi nhiều nỗ lực hơn nhưng lạirất cần thiết để kiểm tra tính khả thi để thực hiện tự động hóa
Tester sfí dụng kế hoạch kiểm thfí (test plans), trường hợp kiểm thfí (testcase), hoặc kịch bản kiểm thfí (test scenarios) để đảm bảo tính đầy đủ của kiểmthfí Kiểm thfí thủ công cũng bao gồm kiểm thfí phám phá, tester kiểm thfí khámphá phần mềm để tìm ra lỗi trong phần mềm đó
1.3.2 Mục tiêu của kiểm thử thủ công
Khái niệm của kiểm thfí thủ công là đảm bảo rằng fíng dụng hoạt động phùhợp với các yêu cầu chfíc năng được chỉ định
Kiểm thfí thủ công cũng đảm bảo rằng các lỗi đã tìm thấy được sfía chữa bởi cácdeveloper và được kiểm thfí lại bởi những tester sau khi các lỗi được khắc phục
Kiểm thfí thủ công kiểm tra chất lượng của hệ thống và cung cấp sản phẩmkhông có lỗi cho khách hàng
1.3.3 Các loại kiểm thử thủ công
- Black Box Testing
- White Box Testing
- Unit Testing
- System Testing
- Integration Testing
- Acceptance Testing
1.3.4 Cách thực hiện kiểm thử thủ công
Đọc và hiểu tài liệu của dự án phần mềm Ngoài ra, nghiên cfíu Ứng dụng khithực hiện kiểm thfí (AUT) nếu có
Dự thảo kiểm thfí bao gồm tất cả các yêu cầu được đề cập trong tài liệu
Trang 15ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
Xem xét và vạch ra các trường hợp thfí nghiệm với Trưởng nhóm, Kháchhàng (nếu có)
Thực hiện các trường hợp kiểm thfí trên
AUT Báo cáo lỗi
Khi các lỗi đã được sfía sẽ được tester thực hiện một lần nữa các trường hợpkiểm thfí thất bại để xác minh rằng lỗi đã được khắc phục
1.3.5 Điểm mạnh và điểm yếu của kiểm thử thủ công
Điểm mạnh:
- Cho phép tester thực hiện việc kiểm thfí khám phá
- Thích hợp kiểm tra sản phẩm lần đầu tiên
- Thích hợp kiểm thfí trong trường hợp các test case chỉ phải thực hiện một
có thể nhanh chóng tạo một bộ kịch bản kiểm tra (test script) bằng cách trực tiếp
“thu” các thao tác của mình trên đối tượng cần kiểm tra thành 1 tập các câu lệnh
“Selenese” (ngôn ngữ kịch bản được phát triển cho Selenium IDE và SeleniumCore có dạng bản HTML) Sau đó chạy lại các câu lệnh này để kiểm tra Chfícnăng này rất hữu dụng, cho phép tiết kiệm thời gian viết kịch bản kiểm tra.Selenium IDE cho phép lưu kịch bản đã thu dưới nhiều loại ngôn ngữ lập trình
Trang 161.4.2 Selenium Remote Control
Selenium RC là framework kiểm thfí hàng đầu của dự án Selenium trong mộtthời gian dài Đây là công cụ kiểm tra web tự động đầu tiên cho phép người dungsfí dụng ngôn ngữ lập trình mà họ thích Kể từ phiên bản 2.25.0, RC có thể hỗ trợcác ngôn ngữ lập trình sau: Java, C#, PHP, Python, Perl, Ruby
Trình duyệt chéo và nền tảng
chéo
Cài đặt phfíc tạp hơn IDE
Có thể thực hiện vòng lặp và các Phải có kiến thfíc lập trình
hoạt động có điều kiện Cần máy chủ selenium RC để
Đã phát triển và hoàn thành API Tương tác của Brower ít thực tế
Có thể hỗ trợ trình duyệt mới hơn
Thực thi nhanh hơn IDE Kết quả không phù hợp và sfí
dụngJavascriptThời gian thực hiện chậm hơnwebDriver
1.4.3 Selenium Grid
Selenium Grid là một công cụ được sfí dụng cùng với Selenium RC để chạythfí nghiệm song song trên các máy khác nhau và các trình duyệt khác nhau cùngmột lúc Thực thi song song có nghĩa là chạy nhiều thfí nghiệm cùng một lúc.Đặc điểm:
• Cho phép chạy đồng thời các thfí nghiệm trong nhiều trình duyệt và môitrường
• Tiết kiệm thời gian rất nhiều
• Sfí dụng khái niệm hub-and-nodes Hub hoạt động như một nguồn trung
Trang 17ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
tâm của các lệnh Selenium cho mỗi nút được kết nối với nó
Trang 191.4.4 Selenium webdriver
WebDriver chfíng minh rằng nó tốt hơn cả Selenium IDE và Selenium RC ởnhiều khía cạnh Nó thực hiện một cách tiếp cận hiện đại và ổn định hơn trong việc
tự động hóa các hành động của trình duyệt WebDriver, không giống như Selenium
RC, không dựa vào JavaScript cho tự động hóa Nó kiểm soát trình duyệt bằngcách giao tiếp trực tiếp với nó Các ngôn ngữ được hỗ trợ giống như ngôn ngữtrong Selenium RC
Cài đặt đơn giản hơn so với selenium
RC
Giao tiếp trực tiếp với trình
duyệt Tương tác Brower thực
tế hơn
Không cần một thành phần riêng biệt
như máy chủ của RC
Thời gian thực thi nhanh hơn IDE và
ký thời gian chạy và tạo kết quả kiểmtra
1.4.5 Jmeter
Apache JMeter là một mã nguồn mở, phát triển dựa trên nền tảng Java thuần(pure Java), được thiết kế để kiểm tra tải của các hành vi, chfíc năng và đo lườnghiệu suất của một hệ thống
Ban đầu, JMeter được giới thiệu cho các fíng dụng web kiểm tra tải và hiệunăng, nhưng sau đó, phạm vi của nó đã mở rộng và có thể thực hiện kiểm tra tải vàhiệu năng trên các trang web, fíng dụng web và các tài nguyên tĩnh hay động nhưDatabase, Rest Web Services, LDAP, Java Object…
Stefano Mazzocchi của Apache Software Foundation là người phát triển raJMeter Ông ban đầu đã viết nó chủ yếu để kiểm tra hiệu năng của Apache Jserv(hiện nay được gọi là Apache Tomcat – được sfí dụng phổ biến đối với server)
Trang 20Sau
Trang 21ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
đó, cộng đồng Apache đã thiết kế lại để nó cải thiệu về mặt GUI (Giao diện), thêmnhiều tính năng cũng như có khả năng kiểm thfí chfíc năng
1.4.6 Katalon
Là một bộ công cụ toàn diện cho kiểm thfí tự động hóa fíng dụng trên web vàđiện thoại di động Công cụ này bao gồm một gói đầy đủ các tính năng mạnh mẽgiúp vượt qua những thách thfíc phổ biến trong tự động hóa thfí nghiệm giao diệnweb, ví dụ như pop-up, iFrame và wait-time Giải pháp thân thiện và linh hoạt nàygiúp tester thực hiện công tác kiểm tra tốt hơn, làm việc nhanh hơn và khởi chạyphần mềm chất lượng cao nhờ vào sự thông minh mà nó cung cấp cho toàn bộ quátrình tự động hóa kiểm thfí
1.4.7 Junit
Junit là một framwork kiểm thfí đơn vị cho ngôn ngữ lập trình Java JUnit đãrất quan trọng trong việc phát triển phần mềm theo hướng thfí nghiệm Junit là mộtthể hiện của kiến trúc xUnit cho các khung kiểm thfí đơn vị JUnit thiết lập ý tưởng
"thfí nghiệm đầu tiên sau codeing", nhấn mạnh vào việc thiết lập dữ liệu thfínghiệm cho một đoạn code có thể được kiểm tra trước và sau đó được triển khai.Cách tiếp cận này giống như "kiểm tra một chút, viết mã một chút, kiểm tra mộtchút, viết mã một chút." Junit làm tăng năng suất của lập trình viên và sự ổn địnhcủa mã chương trình, do đó làm giảm sự căng thẳng trên lập trình viên và thời giandành cho việc gỡ lỗi
1.4.8 Appium
Appium đã nổi lên là một trong những test tool phổ biến nhất để thfí nghiệmcác fíng dụng di động và đã được xác nhận hiệu quả bởi những Tester vàDeveloper về tính dễ sfí dụng Nó là một tool mã nguồn mở cho phép tự động hóaweb gốc, web di động và fíng dụng lai trên nền tảng iOS và Android Ứng dụnggốc là những fíng dụng được viết bằng iOS, Android hoặc Windows SDK Ứngdụng web di động là các fíng dụng web được truy cập bằng trình duyệt dành cho
Trang 22thiết bị di
Trang 23ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
động Ứng dụng lai có trình bao bọc xung quanh “chế độ xem web” một điều khiểngốc cho phép tương tác với nội dung web Các dự án như Apache Cordova hoặcPhoneapp giúp dễ dàng xây dựng các fíng dụng bằng cách sfí dụng công nghệ websau đó được gói thành một trình bao bọc gốc, tạo ra một fíng dụng lai
Một trong những điểm nổi bật của Appium là nó hỗ trợ Safari trên iOS vàChrome trên Android hoặc bất kỳ trình duyệt nào tích hợp trên Android Điều nàygiúp cho Appium trở thành một công cụ tự động hóa đa nền tảng và cho phépngười dùng viết các thfí ngiệm trên nhiều nền tảng, cụ thể là iOS, Android vàWindows với cùng một API
Công cụ này được built trên nền tảng testing native apps, không cần phải xfí
lý SDK hoặc sắp xếp lại fíng dụng Quan trọng nhất, nó cho phép người dùng sfídụng đồng thời với các framework và tool khác cùng lúc Hơn nữa, phụ trợ củaAppium là Selenium, cung cấp mọi chfíc năng của Selenium cho các yêu cầu kiểmthfí của bạn
LoadStorm này được sfí dụng để hỗ trợ nhiều người dùng đồng thời một fíngdụng web hoặc trang web Các nhà phát triển web có thể tạo các tài khoản miễnphí để thiết kế, thfí nghiệm và lập kế hoạch kiểm tra tải, sau đó chạy thfí nghiệmvới 50 người dùng ảo Nếu số lượng người dùng ảo lớn hơn và kiểm tra băng thônglớn hơn thì tài khoản phải trả phí
Trang 24Mục tiêu của LoadStorm là tiện lợi và tiết kiệm Biểu đồ và báo cáo mở rộngcủa LoadStorm hiển thị cho bạn thời gian phản hồi, thông lượng, tỷ lệ lỗi, yêu cầumỗi giây, thời gian hoàn thành trang, v.v.
1.4.10 Quick Test Professional (QTP)
Là một công cụ kiểm thfí tự động được thiết kế bởi Mercury Interactive vàsau đó được mua lại bởi HP QTP giúp tester tiến hành các kiểm tra một cách tựđộng để xác định errors, defects khác với kết quả mong muốn của fíng dụng, phầnmềm hay chfíc năng mà ta đang kiểm tra
1.4.11 Robotium
Kiểm thfí tự động giúp chúng ta duy trì chất lượng phần mềm cao và cungcấp một cơ sở để nắm bắt rõ ràng với bất kỳ thay đổi mã nào gây ảnh hưởng khi sfídụng thực tế Đầu tiên giới thiệu tổng quan về Robotium, các tính năng khác nhau
và lợi ích của nó trong kiểm thfí tự động Đến cuối phần này, sẽ thiết lập hoànchỉnh Môi trường Android trong Android studio để kiểm thfí Robotium
1.4.12 SOASTA CloudTest
CloudTest giúp bạn kiểm tra các website và fíng dụng trên di động một cáchlinh hoạt, nhanh chóng SOASTA CloudTest có thể kiểm tra khả năng chịu tải củacác fíng dụng theo vị trí địa lý khác nhau, đặc biệt 2 khâu integration và phân tíchthời gian thực giữa các monitoring, test design, reporting đều được tiến hành mộtcách liền mạch
1.4.13 Test Complete
TestComplete, được phát triển bởi SmartBear Software, cung cấp hỗ trợ chocác công nghệ như là: Net, Delphi, C++Builder, Java, Visual Basic, HTML5,Flash, Flex, Silverlight Desktop, hệ thống Web and Mobile TestComplete giúpngười kiểm thfí phát triển các trường hợp thfí nghiệm của họ bằng nhiều ngôn ngữkịch bản khác nhau như JavaScript, Python, VBScript, Delphi Script, JavaScript
Trang 25ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
Nó có sẵn với hai giấy phép và một phiên bản dùng thfí miễn phí có giá trị trong
30 ngày
CHƯƠNG 2 CÔNG CỤ KIỂM THỬ TEST COMPLETE
2.1 Giới thiệu chung về Test Complete
TestComplete là một môi trường kiểm thfí tự động cho một loạt các loại fíng dụng và công nghệ, bao gồm Windows, NET, WPF, Visual C + +, Visual Basic, Delphi, C + + Builder, Java và các fíng dụng Web và dịch vụ
TestComplete được định hướng như nhau đối với chfíc năng kiểm thfí, đơn
vị Nó cung cấp hỗ trợ cho các thfí nghiệm hồi quy hàng ngày và hỗ trợ nhiều loạithfí nghiệm: thfí nghiệm dữ liệu điều khiển, kiểm thfí đối tượng điều khiển, vànhững người khác
Bạn tạo ra các bài kiểm thfí bằng cách ghi lại chúng hoặc lệnh kiểm thfíchỉnh sfía trong bảng và biên tập viên của TestComplete Kiểm thfí có thể đượcchạy từ bên trong TestComplete hoặc họ có thể được xuất khẩu sang một fíng dụngbên ngoài và chạy đó
TestComplete nhận đối tượng và điều khiển trong các fíng dụng thfí nghiệm
và cung cấp các lệnh đặc biệt để mô phỏng hành động sfí dụng với họ Nó cũngcung cấp các trạm kiểm soát cụ thể, cho phép bạn dễ dàng kiểm thfí trạng thái fíngdụng trong thời gian chạy thfí nghiệm
2.2 Lịch sử hình thành
TestComplete được phát triển đầu tiên vào năm 1999 bởi công tyAutomatedQA với tên Aqtest Từ đó cho đến năm 2022, TestComplete trải quanhiều phiên bản khác nhau Phiên bản hiện tại là TestComplete 15.40
Các phiên bản trải qua:
• Aqtest 1.x (1.01; 1.5)
• TestComplete 2.x (2.0; 2.02; 2.03; 2.04)
Trang 26• TestComplete 3.x (3.0; 3.01; 3.02; 3.03; 3.04; 3.05; 3.06; 3.07; 3.08;3.09;3.10).
• TestComplete 4.x (4.0; 4.10; 4.20; 4.21; 4.22;4.23; 4.24; 4.25; 4.26;4.27;4.28; 4.29; 4.30)
• TestComplete 5.x (5.0; 5.1; 5.11; 5.12; 5.13; 5.14)
• TestComplete 6.x (6.0; 6.10; 6.11; 6.12; 6.20; 6.30; 6.40; 6.50; 6.51;6.52)
• TestComplete 14.x (14.0; 14.10; 14.20; 14.30; 14.40; 14.50; 14.60;
14.61; 14.70; 14.71; 14.72; 14.73; 14.74; 14.80; 14.81; 14.90; 14.91;14.92; 14.93)
- Scripted Testing: Người kiểm thfí có thể viết kịch bản kiểm thfí từ scratchhoặc sfía đổi các tập lệnh được ghi trong trình chỉnh sfía được tích hợp sẵn
Trang 27ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
- Test Record and Playback: Cung cấp cơ chế cơ bản của bản ghi và phát lạinhững kiểm thfí đã khởi tạo Các test cases được ghi lại có thể được sfía đổikhi cần thiết
- Distributed Testing: TestComplete có thể chạy các tests tự động trên cácmáy trạm hoặc máy ảo riêng biệt
- Access to Methods and Properties of Internal Objects: TestComplete đọctên của các phần tfí hiển thị và nhiều phần tfí bên trong của các fíng dụngDelphi, C ++ Builder, NET, WPF, Java và Visual Basic và cho phép các tậplệnh kiểm tra truy cập các giá trị này để xác minh hoặc sfí dụng trong cáctest
- Integration to Bug Tracking Software: Tích hợp với nhiều phần mềm theodõi lỗi khác nhau như Jira, Bugzilla, v.v Nó có thể được sfí dụng để sfía đổihoặc tạo ra các mục trong phần mềm theo dõi lỗi bằng những mẫu theo dõivấn đề
- Data Driven Testing: Trích xuất dữ liệu dễ dàng từ tệp CSV, bảng cơ sở dữliệu, trang tính Excel, v.v
- COM-based, Open Architecture: Công cụ của TestComplete dựa trên giaodiện COM, API mở Nó độc lập với ngôn ngữ nguồn và có thể đọc thông tintrình gỡ lỗi và sfí dụng nó trong thời gian chạy thông qua TestCompleteDebug Info Agent
- Test Visualizer: Chụp ảnh màn hình trong quá trình thực hiện kiểm thfícho phép chúng ta có thể phân biệt giữa các màn hình mong muốn và thựctế
- Extensions and SDK - Mọi thfí hiển thị trong TestComplete - bảng, mục
dự án, đối tượng tập lệnh cụ thể và các mục khác - được triển khai dưới dạngplug-ins Các plugin này được tích hợp trong sản phẩm và được cài đặt trênmáy tính của bạn cùng với các mô-đun TestComplete khác Bạn có thể
Trang 28tạo các plug-ins riêng của mình để mở rộng TestComplete và cung cấp chfíc năng cụ thể cho nhu cầu cần thiết.
2.3.2 Các dạng test được hỗ trợ
- Functional (or GUI) Testing: Kiểm tra hàm
- Regression testing: Kiểm tra hồi quy
- Unit testing: Kiểm tra đơn vị
- Distributed Testing: Kiểm tra phân tán
- Load Testing: Kiểm tra truyền tải
- Web Testing: Kiểm tra trên nền Web
-Functional and load testing of web services: Kiểm tra các hàm và truyền tải của dịch vụ Web
- Coverage Testing
- Data-Driven Testing
- Manual Testing: Kiểm tra bằng tay
- Keyword testing: Kiểm tra từ khóa
2.4 Cấu hình tối thiểu
- Hệ điều hành: Microsoft Windows 7 with Service Pack 1
- Trình duyệt: Microsoft Internet Explorer 10.0 hoặc cao hơn
- Chip: Intel Core 2 Duo 2 GHz hoặc cao hơn
- RAM: 2 GB
Trang 29ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
- Đĩa hệ thống: 4 GB dung lượng trống trên đĩa hệ thống 1.5 GB dung luợngtrống để cài đặt, cộng thêm không gian cho các tệp tạm thời trong quá trìnhchạy thfí
- Độ phân giải 1024×768 hoặc cao hơn
- Chuột hoặc thiết bị trỏ khác
2.5 Ưu nhược điểm của công cụ TestComplete
Ưu điểm:
- Dễ sfí dụng: Trình chỉnh sfía tích hợp cho phép người dùng có kíến thfíc về bất kỳngôn ngữ lập trình nào đều có thể thêm và xóa các bài kiểm tra, sfía đổi các tham
số và thay đổi thfí tự kiểm tra
- Tùy biến: Bên cạnh việc sfí dụng giao diện trực quan, bạn được phép viết hoặcchỉnh sfía tập lệnh theo cách thủ công nếu bạn thấy công cụ chỉnh sfía không đủ
- Cập nhật kịp thời: Vì đây là một sản phẩm thương mại, bạn có thể mong đợi mộtmfíc độ bảo trì cao, hỗ trợ khách hàng và tất nhiên là các bản cập nhật.Documentation của tool cũng đã và luôn đuợc hoàn thiện cho nên bạn không phảimất thời gian truy cập, tìm kiếm trong các diễn đàn một mẹo hoặc giải pháp nàocho phần mềm này
- Hỗ trợ các fíng dụng Desktop: Trong khi Selenium chỉ có thể thực thi các teststrong trình duyệt (và fíng dụng di động sfí dụng Appium), TestComplete hỗ trợ cácfíng dụng Windows
- Ngoài ra kiểm tra chfíc năng được đưa lên cấp độ tiếp theo khi bạn tích hợp các tậplệnh Selenium test của mình với các giải pháp SmartBear bao gồm TestComplete.Nhược điểm:
- Chỉ hỗ trợ trên hệ điều hành Windows, nếu muốn sfí dụng trên các hệ điều hànhkhác điển hình là MacOS bạn cần phải cài máy ảo và tất nhiên cài máy ảo thì hiệusuất làm việc không thể bằng máy thật được
Trang 30- Đây là một phần mềm trả phí một lần, tuy nhiên bạn còn phải trả thêm phí duy trìmỗi năm (nhưng theo nhận xét của cộng đồng nguời sfí dụng trên mạng phản ánh
nó là một công cụ hỗ trợ đáng để cho bạn trả ra khoản tiền này)
2.6 Cài đặt TestComplete
- TestComplete có thể được tải xuống từ trang chủ của
SmartBear:
https://smartbear.com/product/testcomplete/free-trial/
Hình 2.1 Giao diện để điền thông tin lấy link tải test complete
- Các bước hướng dẫn tải:
Bước 1: Nhấp đúp vào gói cài đặt TestComplete đã tải xuống Cài đặt phần mềm sẽ bắt đầu và thỏa thuận cấp phép sẽ được hiển thị
Bước 2: Chỉ định đường dẫn của thư mục mà bạn muốn cài đặt phần mềm Bước 3: Hộp thoại chào mừng được hiển thị để yêu cầu kích hoạt giấy phép, chúng ta có thể bắt đầu bằng cách nhấp vào giấy phép dùng thfí 30 ngày.Bước 4: Sau đó khởi động lại máy tính, chúng ta đã hoàn tất quá trình cài đặt TestComplete
Trang 31ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
Hình 2.2 Giao diện để chọn tính năng khi cài test complete
Hình 2.3 Giao diện để vị trí cài test complete
Trang 322.7 Tạo project trong TestComplete
1) Chuyển đến File trong menu
2) Nhấp vào New từ menu
3) Nhấp vào New Project Hoặc bằng cách khác, bạn có thể sfí dụng phím tắt (shift + ctrl + N) để tạo New Project
4) Một cfía sổ sẽ xuất hiện, và bạn đặt tên cho Project
5) Nhấp vào Finish
6) Vậy là chúng ta đã tạo xong New Project trong TestComplete
Hình 2.4 Giao diện để tạo 1 project
Trang 33ĐỀ TÀI NGHIÊN CỨU CÔNG CỤ KIỂM THỬ TEST COMPLETE VÀ ỨNG DỤNG
CHƯƠNG 3 ỨNG DỤNG
3.1 Giao diện sử dụng
3.1.1 Giao diện chính
Hình 3.1 Giao diện chính của phần mềm kiểm thử test complete
cụ
quản lý testProject Explorer Panel Sfí dụng để hiển thị và thay đổi
cấutrúc của dự án Nó cũng hiển thị cấu trúc của các bản ghi và testWorkspace Panel Là khu vực làm việc chính của
bạn trong TestComplete và cáctrình biên tập, cho phép xem vàchỉnh sfía các nội dung của dự