Dù biếtcông tác kiểm thử, đảm bảo chất lượng giữ vai trò quan trọng trong việc mang lạithà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
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Nhóm:
Thành viên:
Hà Nội, Năm 2022
MỤC LỤC
Trang 22
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ả ứ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 thử phần mềm, đặc biệt là kiểm thử 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 thử phần mềm không nhiều, chưa thể đáp ứ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 (cứ
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 ứng được công việc tester chỉ rơi vào khoảng 1.5 Dù biếtcông tác kiểm thử, đảm bảo chất lượng giữ vai trò quan trọng trong việc mang lạithà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 thử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 sứ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 thử phần mềm là quy trình được sử 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 sử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 thử 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ểmthử Kiểm thử 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 thử không chỉ giới hạn ở việc thực hiện một chươngtrình hoặc ứ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 / ứng dụng / sản phẩm nhằm:
- Đáp ứ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 ứ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 thử có thể được thực hiện bất
cứ 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 thử đượ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 thử đượ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 thử bị chi phối theo một quy trình pháttriể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 thử xác định trước
- Chứ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ó
4
Trang 5- Xác thực chất lượng kiểm thử 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 thử 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 thử dựa vào yếu tố: Chiến lược kiểm thử, phương phápkiểm thử và kỹ thuật kiểm thử
- Dựa vào chiến lược kiểm thử ta có thể phân chia kiểm thử thành 2 loại:kiểm thử thủ công và kiểm thử tự động
- Theo phương pháp tiến hành kiểm thử ta chia kiểm thử thành 2 loại:
+ Kiểm thử 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 thử động: Được thực hiện khi code đang ở chế độ thực thi Thửnghiệm động được thực hiện trong môi trường thực thi chạy chương trìnhứ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 chứ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 Thử nghiệm động được thực hiện trong môi trường thực thichạy chương trình ứ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 chứ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 thử ta có thể phân chia kiểm thử thành 3 loại:
+ Kiểm thử hộp đen
+ Kiểm thử hộp trắng
+ Kiểm thử hộp xám
Trang 61.1.4 Các cấp độ kiểm thử phần mềm
Kiểm thử 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 mứ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 thử phần mềm baogồm 4 mức độ cơ bản: Kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống vàkiểm thử chấp nhận
- Kiểm thử đơn vị (Unit Testing): kiểm thử 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 thử module (Module Testing): kiểm thử các dịch vụ của module cóphù hợp với đặc tả của module đó không?
- Kiểm thử tích hợp (Integration Testing): kiểm thử 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 thử hệ thống (System Testing): kiểm thử các yêu cầu không chức năngcủa phần mềm như hiệu suất, bảo mật, làm việc trong môi trường căngthẳng,
- Kiểm thử độ chấp nhận của người dùng (AcceptanceTesting): kiểm tra xemngười dùng có chấp thuận sử dụng phần mềm không?
- Kiểm thử 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 chứcnăng trước khi hiệu chỉnh không?
6
Hình 1 SEQ Hình_1 \* ARABIC 1 Bốn cấp độ cơ bản của kiểm
Trang 71.1.5 Test case
Mỗi testcase chứa các thông tin cần thiết để kiểm thử 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à xử 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 xử
phần phần mềm để minh chứ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 thử hộp đen (Black box testing): theo góc nhìn sử dụng
+ Không cần kiến thức về chi tiết thiết kế và hiện thực bên trong
+ Kiểm thử dựa trên các yêu cầu và đặc tả sử dụng thành phần phầnmềm
- Kiểm thử hộp trắng (White box testing): theo góc nhìn hiện thực
+ Cần kiến thức về chi tiết thiết kế và hiện thực bêntrong
+ Kiểm thử dựa vào phủ các lệnh, phủ các nhánh, phủ các điều kiện con
Integration testing Hộp đen, hộp trắng
Hình 1 SEQ Hình_1 \* ARABIC 2 Sơ đồ use case
Trang 8Acceptance testing Hộp đen
1.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 chứ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 ứng với dữ liệu nhập
Việc kiểm thử đòi hỏi tính độc lập: lập trình viên nên tránh việc kiểm thử cácTPPM do mình viết
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 thử là 1 tác vụ rất thách thức đòi hỏi sự sáng tạo và trí tuệ
Kiểm thử phần mềm nên bắt đầu từ các thành phần nhỏ đơn giản rồi đến cácthành phần ngày càng lớn hơn
Kiểm thử theo kiểu vét cạn là không thể
Nên hoạch định qui trình kiểm thử trước khi bắt đầu thực hiện kiểm thử
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ổ chức lập trình thì vẫn có một quytrình điển hình để kiểm thử Mẫu dưới đây là phổ biến trong các tổ chức sử dụng
8
Trang 9mô 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 thử phần mềm:
- Phân tích yêu cầu: Kiểm thử 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ủa mộtthiết kế được kiểm chứng và những thông số được kiểm tra
- Lập kế hoạch kiểm thử: Chiến lược kiểm thử, kế hoạch kiểm thử, kiểm thử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 thử
- Kiểm thử phát triển: Các quy trình kiểm thử, các kịch bản, Test Case, các
dữ liệu được sử dụng trong kiểm thử phần mềm
- Kiểm thử thực hiện: Dựa trên các kế hoạch, các văn bản kiểm thử 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 thử báo cáo: Sau khi hoàn tất kiểm thử, 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 thử 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 thử 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ỏ (tứ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 xử lý bởi đội ngũphát triển, nó phải được kiểm tra lại bởi nhóm kiểm thử
- Kiểm thử hồi quy: Người ta thường xây dựng một chương trình kiểm thửnhỏ là tập hợp của các bài kiểm tra cho mỗi tích hợp mới, sử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ông pháhủy bất cứ điều gì và toàn bộ phần mềm vẫn còn hoạt động một cách chínhxác
- Kiểm thử đóng gói: Mỗi phép thử 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à sử 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 thử 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 thử phần mềm chiếm 40% tổng giá trị của dự án Nếu cần ứngdụng an toàn hơn, chi phí kiểm thử còn cao hơn nữa Do đó một trong các mục tiêucủa kiểm thử là tự động hóa nhiều, nhờ đó mà giảm thiểu chi phí, giảm lỗi, đặc biệtgiúp việc kiểm thử hồi qui dễ dàng và nhanh chóng hơn Tự động hóa việc kiểmthử là dùng phần mềm điều khiển việc thi hành kiểm thử, so sánh kết quả có đượcvớ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ểm thử vàcác chức năng báo cáo kết quả
1.2.2 Kiểm thử tự động là gì?
Kiểm thử 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 thử Kiểm thử tự động bằng một công cụ nhằm rút ngắn thờigian kiểm thử
1.2.3 Tại sao phải kiểm thử tự động
Kiểm thử phần mềm tự động với mục đích:
• Giảm bớt công sức và thời gian thực hiện quá trình kiểm thử
• 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 thử viên
• Giảm chi phí cho tổng quá trình kiểm thử
Khi nào cần kiểm thử tự động:
• Không đủ tài nguyên: khi số lượng tài nguyên quá nhiều mà kiểm thử viên khôngthể 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 đã sử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 xử lí một yêu cầu của web server
- Xác định số yêu cầu tối đa xử 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ìnhkiếm thử thủ công Thực tế, kiểm thử tự động có những điểm khác với kiểm thử
10
Trang 11thủ 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 thử 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 thử tự động tuân theo đầy đủ những nguyên tắc kiểm thử nói chung,
đó là các nguyên tắc sau:
- Nguyên tắc 1: Kiểm thử đưa ra lỗi
Kiểm thử có thể cho thấy rằng phần mềm đang có lỗi, nhưng không thểchứng minh rằng phần mềm không có lỗi Kiểm thử làm giảm xác suất lỗi chưa tìmthấ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 chứng của sự chính xác
- Nguyên tắc 2: Kiểm thử mọi thứ là không thể
Kiểm thử mọi thứ (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 thử toàn bộ, việc phân tích rủi ro và dựa trên sự mức độ ưutiên chúng ta có thể tập trung việc kiểm thử vào một số điểm cần thiết
- Nguyên tắc 3: Kiểm thử sớm
Để tìm được bug sớm, các hoạt động kiểm thử 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 thử 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 chứa nhiều lỗi không phát hiện ra trong lúckiểm thử 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 thử 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 thử (ca kiểm thử - 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 thử cần phải được xem xét và sử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
cứ 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 12có 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 thử theo các ngữ cảnh độc lập
Nguyê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ỗi
Việc tìm và sử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 ứ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 ứ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 thử Giai đoạn này dùng công cu kiểm
thử để ghi lại các thao tác lên phầnmềm cần kiểm tra và tự động sinh rakịch bản kiểm thử
Bước 2 Chỉnh sử kịch bản Chỉnh sửa để kịch bản kiểm thử thực
hiện kiểm tra theo đúng yêu cầu đặt
ra (làm theo trường hợp kiểm thửcần thực hiện)
Bước 3 Chạy kịch bản kiểm thử Chạy kịch bản kiểm thử để kiểm tra
phần mềm có đưa ra đúng như mongmuố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 thử
12
Trang 131.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 thử thủ công là kiểm thử một phần mềm một cách thủ công (không sử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 thử này,tester như người sử 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 thử bằng tay như Kiểmthử đơn vị (Unit testing), Kiểm thử tích hợp (Integration testing), Kiểm thử hệthống (System testing) và Kiểm thử chấp nhận (User Acceptance testing)
Bất kỳ ứng dụng mới nào cũng phải được kiểm thử thủ công trước khi thựchiện kiểm thử tự động hóa Kiểm thử 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 sử dụng kế hoạch kiểm thử (test plans), trường hợp kiểm thử (testcase), hoặc kịch bản kiểm thử (test scenarios) để đảm bảo tính đầy đủ của kiểmthử Kiểm thử thủ công cũng bao gồm kiểm thử phám phá, tester kiểm thử 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 thử thủ công là đảm bảo rằng ứng dụng hoạt động phùhợp với các yêu cầu chức năng được chỉ định
Kiểm thử thủ công cũng đảm bảo rằng các lỗi đã tìm thấy được sửa chữa bởi cácdeveloper và được kiểm thử lại bởi những tester sau khi các lỗi được khắc phục
Kiểm thử 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 cứu Ứng dụngkhi thực hiện kiểm thử (AUT) nếu có
Dự thảo kiểm thử bao gồm tất cả các yêu cầu được đề cập trong tài liệu
Trang 14Xem xét và vạch ra các trường hợp thử 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 thử trên AUT
Báo cáo lỗi
Khi các lỗi đã được sửa sẽ được tester thực hiện một lần nữa các trường hợpkiểm thử 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 thử 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 thử 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 Chứ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
14
Trang 151.4.2 Selenium Remote Control
Selenium RC là framework kiểm thử 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 dung
sử 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ó thể thực hiện vòng lặp và các
hoạt động có điều kiện
Có thể hỗ trợ kiểm tra theo hướng
dữ liệu
Đã phát triển và hoàn thành API
Có thể hỗ trợ trình duyệt mới
Thực thi nhanh hơn IDE
Cài đặt phức tạp hơn IDEPhải có kiến thức lập trìnhCần máy chủ selenium RC để chạyAPI chứa các câu lệnh dư thừa vàkhó hiểu
Tương tác của Brower ít thực tếhơn
Kết quả không phù hợp và sử dụngJavascript
Thời gian thực hiện chậm hơnwebDriver
1.4.3 Selenium Grid
Selenium Grid là một công cụ được sử dụng cùng với Selenium RC để chạythử 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 thử nghiệm cùng một lúc Đặc điểm:
• Cho phép chạy đồng thời các thử nghiệm trong nhiều trình duyệt và môitrường
• Tiết kiệm thời gian rất nhiều
• Sử dụng khái niệm hub-and-nodes Hub hoạt động như một nguồn trungtâm của các lệnh Selenium cho mỗi nút được kết nối với nó
Trang 171.4.4 Selenium webdriver
WebDriver chứ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, chứ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 ứ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, ứ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 sử dụng phổ biến đối với server) Sau
Trang 18đó, 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 thử chức năng.
1.4.6 Katalon
Là một bộ công cụ toàn diện cho kiểm thử tự động hóa ứ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 thức phổ biến trong tự động hóa thử 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 thử
1.4.7 Junit
Junit là một framwork kiểm thử đơ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 thử nghiệm Junit là mộtthể hiện của kiến trúc xUnit cho các khung kiểm thử đơn vị JUnit thiết lập ý tưởng
"thử nghiệm đầu tiên sau codeing", nhấn mạnh vào việc thiết lập dữ liệu thử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
18
Trang 19độ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 ứng dụng bằng cách sử 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 ứ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 thử 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 xử
lý SDK hoặc sắp xếp lại ứng dụng Quan trọng nhất, nó cho phép người dùng sử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 chức năng của Selenium cho các yêu cầu kiểmthử của bạn
LoadStorm này được sử dụng để hỗ trợ nhiều người dùng đồng thời một ứ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ễn phí
để thiết kế, thử nghiệm và lập kế hoạch kiểm tra tải, sau đó chạy thử nghiệm với 50ngườ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ông lớnhơn thì tài khoản phải trả phí
Trang 20Mụ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 thử 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 ứng dụng, phầnmềm hay chức năng mà ta đang kiểm tra
1.4.11 Robotium
Kiểm thử tự động giúp chúng ta duy trì chất lượng phần mềm cao và cung cấpmộ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 sử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 thử 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 thử Robotium
1.4.12 SOASTA CloudTest
CloudTest giúp bạn kiểm tra các website và ứ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 ứ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 thử phát triển các trường hợp thử 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
20
Trang 21Nó có sẵn với hai giấy phép và một phiên bản dùng thử miễn phí có giá trị trong 30ngà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 thử tự động cho một loạt các loại ứng dụng và công nghệ, bao gồm Windows, NET, WPF, Visual C + +, Visual Basic, Delphi, C + + Builder, Java và các ứng dụng Web và dịch vụ
TestComplete được định hướng như nhau đối với chức năng kiểm thử, đơn
vị Nó cung cấp hỗ trợ cho các thử nghiệm hồi quy hàng ngày và hỗ trợ nhiều loạithử nghiệm: thử nghiệm dữ liệu điều khiển, kiểm thử đố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 thử bằng cách ghi lại chúng hoặc lệnh kiểm thửchỉnh sửa trong bảng và biên tập viên của TestComplete Kiểm thử có thể đượcchạy từ bên trong TestComplete hoặc họ có thể được xuất khẩu sang một ứng dụngbên ngoài và chạy đó
TestComplete nhận đối tượng và điều khiển trong các ứng dụng thử nghiệm
và cung cấp các lệnh đặc biệt để mô phỏng hành động sử 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 thử trạng thái ứngdụng trong thời gian chạy thử 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 22• 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 thử có thể viết kịch bản kiểm thử từ scratchhoặc sửa đổi các tập lệnh được ghi trong trình chỉnh sửa được tích hợp sẵn
22
Trang 23- 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 thử đã khởi tạo Các test cases được ghi lại có thể được sử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 tử hiển thị và nhiều phần tử bên trong của các ứ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 sử 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 sử dụng để sử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à sử 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 thử chophép chúng ta có thể phân biệt giữa các màn hình mong muốn và thực tế
- Extensions and SDK - Mọi thứ 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ướidạng plug-ins Các plugin này được tích hợp trong sản phẩm và được cài đặttrên máy tính của bạn cùng với các mô-đun TestComplete khác Bạn có thể
Trang 24tạo các plug-ins riêng của mình để mở rộng TestComplete và cung cấp chứcnă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ảicủ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
24
Trang 25- Đĩ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 thử.
- Độ 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ễ sử dụng: Trình chỉnh sửa tích hợp cho phép người dùng có kíến thứ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, sửa đổi các tham
số và thay đổi thứ tự kiểm tra
- Tùy biến: Bên cạnh việc sử dụng giao diện trực quan, bạn được phép viết hoặcchỉnh sửa tập lệnh theo cách thủ công nếu bạn thấy công cụ chỉnh sử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ộtmứ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 ứng dụng Desktop: Trong khi Selenium chỉ có thể thực thi các teststrong trình duyệt (và ứng dụng di động sử dụng Appium), TestComplete hỗ trợ cácứng dụng Windows
- Ngoài ra kiểm tra chứ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 sử 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 26- Đâ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 sử 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ầnmề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 thử 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 đặtTestComplete
26