Với mong muốn được tìm hiểu sâu về lĩnh vực kiểm thử phần mềm cũngnhư bổ sung thêm kiến thức cho lĩnh vực kiểm thử và bảo mật, em đã chọn đề tài “Kiểm thử các chức năng của website.” Tro
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
Kiểm thử và đảm bảo chất lượng phần mềm + BTL
ĐỀ TÀI:
Kiểm thử các chức năng của website
Giáo viên giảng
Trang 2HÀ NỘI-2022
MỤC LỤC
MỞ ĐẦU 4
CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 5
1.1 Khái niệm 5
1.2 Phân loại kiểm thử 5
1.2.1 Kiểm thử tĩnh (Static testing) 6
1.2.2 Kiểm thử động (Dynamic testing) 6
1.3 Quy trình kiểm thử phần mềm 7
1.3.1 Phân tích yêu cầu – Requirement Analysis: 7
1.3.2 Lên kế hoạch kiểm thử - Test Planning: 8
1.3.3 Tạo ca kiểm thử - Test case Development: 8
1.3.4 Cài đặt môi trường kiểm thử - Test Enviroment Set up: 8
1.3.5 Thực hiện kiểm thử - Test Execution: 8
1.3.6 Đóng chu trình kiểm thử - Test Cycle Closure: 9
1.4 Các phương pháp kiểm thử 9
1.4.1 Kiểm thử hộp trắng 9
1.4.2 Kiểm thử hộp đen 10
1.4.3 Kiểm thử hộp xám 11
CHƯƠNG 2: GIỚI THIỆU VỀ WEBSITE 13
2.1 Tổng quan 13
Trang 32.2 Chức năng 13
2.2.1 Chức năng đăng nhập: 14
2.2.2 Chức năng đăng kí: 16
2.2.3 Chức năng tìm kiếm : 20
2.2.4 Chức năng giỏ hàng : 21
CHƯƠNG 3: THIẾT KẾ CA KIỂM THỬ 24
3.1 Thiết kế test case 24
3.1.1 Chức năng đăng nhập 24
3.1.2 Chức năng đăng kí 24
3.1.3 Chức năng tìm kiếm 25
3.1.4 Chức năng giỏ hàng: 26
3.2 Cài đặt môi trường 26
3.2.1 Visual Studio Code 26
3.2.2 Selenium IDE 32
3.3 Thực hiện kiểm thử 32
Trang 4MỞ ĐẦU
Ngày nay, công nghệ thông tin nói chung và công nghệ phần mềm nói riêngđang chiếm một vị trí quan trọng trong tiến trình công nghiệp hoá, hiện đại hoá đấtnước Song song với việc phát triển công nghệ phần mềm luôn tiềm ẩn nhữngthách thức cho dành các doanh nghiệp, nhà phát triển phần mềm trong việc kiểmsoát lỗi, chất lượng đầu ra của sản phẩm Nguyên nhân gây thiệt hại về kinh tế và
xã hội trong phần mềm không chỉ là lỗi về bảo mật mà còn là lỗi về một chức năngnào đó trong sản phẩm
Kiểm thử phần mềm là một quá trình liên tục, xuyên suốt mọi giai đoạn pháttriển phần mềm để đảm bảo rằng phần mềm thỏa mãn yêu cầu thiết kế và yêu cầu
đó đáp ứng được nhu cầu của người sử dụng Các kỹ thuật kiểm thử phần mềmđang được nghiên cứu và việc kiểm thử phần mềm trở thành quy trình bắt buộctrong các dự án phát triển phần mềm trên thế giới Ngày nay xu hướng áp dụng tựđộng hoá đang được triển khai rộng rãi ở nhiều lĩnh vực, trong đó có kiểm thửphần mềm Đặc biệt, khi kiểm thử phần mềm là công đoạn chiếm phần lớn thờigian trong quá trình phát triển dự án phần mềm thì sự ra đời của các công cụ kiểmthử tự động càng có ý nghĩa hơn bao giờ hết, giúp tiết kiệm thời gian, công sức vàtiền bạc
Với mong muốn được tìm hiểu sâu về lĩnh vực kiểm thử phần mềm cũngnhư bổ sung thêm kiến thức cho lĩnh vực kiểm thử và bảo mật, em đã chọn đề tài
“Kiểm thử các chức năng của website.” Trong quá trình làm bài tập lớn môn học,
do còn hạn chế về thời gian và kinh nghiệm thực tế, em mong nhận được nhữnggóp ý chân thành từ thầy cô và các bạn
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM.
1.1 Khái niệm.
Kiểm thử phần mềm (Software Testing) là quá trình thực thi một chương trìnhvới mục đích tìm ra lỗi Kiểm thử phần mềm đảm bảo sản phẩm phần mềm đápứng chính xác, đầy đủ và đúng theo yêu cầu của khách hàng, yêu cầu của sản phẩm
đã đặt ra Kiểm thử phần mềm cũng cung cấp mục tiêu, cái nhìn độc lập về phầnmềm, điều này cho phép việc đánh giá và hiểu rõ các rủi ro khi thực thi phần mềm.Kiểm thử phần mềm tạo điều kiện cho bạn tận dụng tối đa tư duy đánh giá và sángtạo để bạn có thể phát hiện ra những điểm mà người khác chưa nhìn thấy.Tùy thuộc vào phương pháp, việc kiểm thử có thể được thực hiện bất cứ lúcnào trong quá trình phát triển phần mềm Theo truyền thống thì việc kiểm thử đượctiến hành sau khi các yêu cầu được xác định và việc lập trình được hoàn tất nhưngtrong Agile thì việc kiểm thử được tiến hành liên tục trong suốt quá trình xây dựngphần mềm Như vậy, mỗi một phương pháp kiểm thử bị chi phối theo một quytrình phát triển phần mềm nhất định
Vai trò của kiểm thử phần mềm: Kiểm thử phần mềm đóng vai trò rất quantrọng trong việc đánh giá và thu được chất lượng cao của sản phẩm phần mềmtrong quá trình phát triển Thông qua chu trình “kiểm thử - tìm lỗi – sửa lỗi”, ta hyvọng chất lượng của sản phẩm phần mềm sẽ được cải tiến Mặt khác, thông quaviệc tiến hành kiểm thử mức hệ thống trước khi cho lưu hành sản phẩm, ta biếtđược sản phẩm của ta tốt ở mức nào Vì thế, nhiều tác giả đã mô tả việc kiểm thửphần mềm là một quy trình kiểm chứng để đánh giá và tăng cường chất lượng củasản phẩm phần mềm
1.2 Phân loại kiểm thử.
Có 2 phương pháp kiểm thử chính là: Static testing (Kiểm thử tĩnh) vàDynamic testing (Kiểm thử động):
Trang 61.2.1 Kiểm thử tĩnh (Static testing).
Kiểm thử tĩnh là một hình thức của kiểm thử phần mềm mà phần mềm khôngđược sử dụng thực sự Thường thì nó không kiểm thử chi tiết mà chủ yếu kiểm tratính đúng đắn của code (mã lệnh), thuật toán hay tài liệu Chủ yếu kiểm tra cú phápcủa code/ hoặc review code (kiểm tra xem code có được viết đúng tiêu chuẩn code.Đây là loại kiểm thử có thể được sử dụng bởi DEV (những người lập trình), làmviệc một cách độc lập Các kỹ thuật review code , kiểm tra và walkthoughs cũngđược sử dụng trong test tĩnh này Kiểm thử tĩnh liên quan đến việc xem xét các yêucầu và các tài liệu thiết kế chi tiết
Kiểm thử tĩnh cũng có thể được tự động hóa Nó sẽ thực hiện kiểm tra toàn bộbao gồm các chương trình được phân tích bởi một trình thông dịch hoặc biên dịch
mà xác nhận tính hợp lệ về cú pháp của chương trình
Các kỹ thuật kiểm thử tĩnh giúp nâng cao chất lượng phần mềm bằng cách hỗtrợ các nhà phát triển nhận ra và sửa chữa các sai sót của họ trong quá trình pháttriển phần mềm
1.2.2 Kiểm thử động (Dynamic testing).
Kiểm thử tự động là việc sử dụng phần mềm đặc biệt (tách biệt với phần mềmđang được kiểm thử) để kiểm soát việc thực hiện các bài kiểm tra và so sánh kếtquả thực tế với kết quả dự đoán Kiểm thử tự động có thể tự động hóa một sốnhiệm vụ lặp đi lặp lại nhưng cần thiết trong một quá trình kiểm thử đã được chínhthức hóa, hay là các kiểm thử bổ sung nhưng sẽ khó thực hiện thủ công Kiểm thửđộng kiểm tra cách thức hoạt động của mã lệnh, tức là kiểm tra sự phản ứng vật lý
từ hệ thống tới các biến luôn thay đổi theo thời gian Trong kiểm thử động, phầnmềm phải thực sự được biên dịch và chạy Kiểm thử động thực sự bao gồm: làmviệc với phần mềm, nhập các giá trị đầu vào và kiểm tra xem liệu đầu ra có nhưmong muốn hay không
Trang 7Các phương pháp kiểm thử động gồm có: Unit test (Kiểm thử đơn vị),Intergration Tests (Kiểm thử tích hợp), System Tests (Kiểm thử hệ thống) vàAcceptance Tests (Kiểm thử chấp nhận).
1.3 Quy trình kiểm thử phần mềm.
Kiểm thử phần mềm bao gồm nhiều giai đoạn với sự phối hợp của nhiều bênliên quan chứ không chỉ là một hoạt động đơn lẻ Chính vì thế, cần có quy trìnhkiểm thử phần mềm để làm rõ các công đoạn, các bước kiểm thử, người chịu tráchnhiệm và khi nào việc kiểm thử được tiến hành trong toàn bộ quy trình phát triểnphần mềm Nói cách khác, quy trình kiểm thử phần mềm chính là chuỗi các hoạtđộng được tiến hành để thực hiện việc kiểm thử Các giai đoạn trong quy trìnhkiểm thử phần mềm được biểu diễn tổng quát bằng sơ đồ sau:
Hình 1 - Quy trình kiểm thử phần mềm
1.3.1 Phân tích yêu cầu – Requirement Analysis:
Giai đoạn đầu tiên của quy trình kiểm thử là phân tích các yêu cầu thông quanhững tài liệu bao gồm: tài liệu yêu cầu của khách hàng, prototype của khách hàng,tài liệu đặc tả yêu cầu của phần mềm, tài liệu thiết kế hệ thống…
QA Team có nhiệm vụ phân tích và xác định những yêu cầu của khách hàng,trong đó có yêu cầu về kiểm thử chức năng/phi chức năng của phần mềm Trongquá trình phân tích, QA Team có thể đặt ra câu hỏi để hiểu chính xác hơn về yêucầu của sản phẩm, đồng thời hỗ trợ đưa ra giải pháp thích hợp cho khách hàng
Trang 81.3.2 Lên kế hoạch kiểm thử - Test Planning:
Dựa vào tài liệu nhận được trong giai đoạn đầu, Test Lead hoặc Test Manager
sẽ lên kế hoạch kiểm thử phần mềm cho QA team để xác định một số yếu tố:Phạm vi dự án: Thời gian thực hiện dự án bao lâu? Trong từng khoảng thời gian sẽ có những công việc gì?
Phương pháp tiếp cận: Dựa vào yêu cầu chất lượng của khách hàng, thời gian test, kỹ thuật phát triển ứng dụng, lĩnh vực của sản phẩm… Test Manager sẽ đưa raphương pháp tiếp cận sao cho đảm bảo tiến độ và chất lượng sản phẩm Sau khi kếtthúc giai đoạn này, QA team cần nhận được test plan, test schedule, test estimation
1.3.3 Tạo ca kiểm thử - Test case Development:
Trong giai đoạn này, các Tester sẽ đọc hiểu tất cả các tài liệu, từ đó xác định những việc cần làm, chức năng nào cần test hoặc không Sau đó, dựa vào kế hoạch
và kỹ thuật thiết kế kịch bản kiểm thử, Tester sẽ bắt đầu viết test case Yêu cầu củatest case: Thể hiện tất cả các trường hợp kiểm thử có thể phát sinh để đáp ứng yêu cầu sản phẩm Ngoài test case, Tester cũng cần chuẩn bị các dữ liệu cần thiết khác như test data, test script, test design, test automation script
1.3.4 Cài đặt môi trường kiểm thử - Test Enviroment Set up:
Đây là một trong những giai đoạn đóng vai trò rất quan trọng trong Software Testing Life Cycle (vòng đời phát triển phần mềm) Dựa trên yêu cầu khách hàng
và đặc thù của sản phẩm, môi trường kiểm thử sẽ được xác định Tester cần chuẩn
bị smoke test case để kiểm tra môi trường cài đặt đã đáp ứng yêu cầu và sẵn sàng cho giai đoạn kiểm thử tiếp theo hay chưa
1.3.5 Thực hiện kiểm thử - Test Execution:
Theo test case đã thiết kế và môi trường kiểm thử đã hoàn tất cài đặt, Tester
sẽ báo cáo bug lên tool quản lý lỗi và theo dõi đến khi fix bug thành công Tiếp đó,Tester thực hiện retest để verify các fix bug và regression test trong trường hợp có
Trang 9sự thay đổi Sau khi hoàn tất giai đoạn này, các chuyên viên kiểm thử cần có đượctest results (kết quả kiểm thử) và defect reports (danh sách các lỗi tìm được).
1.3.6 Đóng chu trình kiểm thử - Test Cycle Closure:
Để đóng chu trình kiểm thử, QA Team cần có được những tài liệu đã đượctổng hợp và hoàn thiện từ những giai đoạn trước: tài liệu phân tích đặc tả yêu cầu,test plan, defect reports, test results… Tiếp đó, QA team sẽ tổng kết, báo cáo vềquá trình kiểm thử, có bao nhiêu bug đã được fix, bug có nghiêm trọng hay không,chức năng nào còn lỗi, chức năng nào đã hoàn thành…
1.4 Các phương pháp kiểm thử.
1.4.1 Kiểm thử hộp trắng.
Khái niệm: Kiểm thử hộp trắng là việc nghiên cứu cụ thể chi tiết từng luồng
hoạt động cũng như các dòng lệnh bên trong hệ thống Kiểm thử hộp trắng cũngđược gọi dưới các cái tên khác như: Glass testing hay open-box testing Kiểm thửhộp trắng đòi hỏi tester phải có kiến thức về ngôn ngữ lập trình Tester sẽ cần phảinghiên cứu vào bên trong hê thống cụ thể là các dòng lệnh để tìm hiểu chúng cóchạy đúng hay không
Ưu điểm:
- Đối với những tester có kiến thức về ngôn ngữ lập trình sẽ rất dễ dàng đểphát hiện ra những lỗi ở trong các dòng lệnh
- Giúp tối ưu hóa các dòng lệnh của hệ thống
- Các dòng lệnh không cần thiết hoặc các dòng lệnh có khả năng mang đếncác lỗi tiềm ẩn sẽ bị loại bỏ
- Các tester có kiến thức về ngôn ngữ lập trình sau khi đã thực hiện phươngpháp này thì sẽ dễ dàng đạt được độ bao phủ lớn nhất khi thực hiện thiết kế cáctrường hợp kiểm thử sau này
Nhược điểm:
Trang 10- Trên thực tế việc sử dụng các tester có kiến thức về ngôn ngữ lập trình sẽlàm gia tăng giá thành để phát triển phần mềm.
- Đôi lúc sẽ là không khả thi khi kiểm tra chi tiết từng dòng lệnh để có thể từ
đó phát hiện ra các lỗi tiềm ẩn của hệ thống, có rất nhiều các luồng không thể kiểmtra được
- Rất khó để duy trì phương pháp này liên tục, cần phải có những tool chuyênbiệt như tool về phân tích code hay tool về phát hiện lỗi và sửa lỗi
1.4.2 Kiểm thử hộp đen.
Khái niệm: Kiểm thử hộp đen là một phương pháp kiểm thử mà các tester
không cần quan tâm đến các hoạt động bên trong hệ thống chạy ra sao, không cầnquan tâm đến các dòng lệnh bên trong hệ thống hệ thống như thế nào mà chỉ cầntập trung vào các giá trị đầu vào và các giá trị đầu ra của hệ thống có đúng với kếtquả mong đợi của các trường hợp kiểm thử không để từ đó đánh giá chất lượng hệthống
Ưu điểm:
- Rất phù hợp và hiệu quả khi mà số lượng các dòng lệnh của hệ thống là lớn
- Không cần truy cập vào các dòng lệnh
- Phân biệt được rõ ràng quan điểm của người dùng với quan điểm của nhàphát triển
- Không cần đòi hỏi những kiến thức về ngôn ngữ lập trình ở các tester để cóthể kiểm thử hệ thống
Nhược điểm:
- Bị giới hạn ở độ bao phủ của các trường hợp kiểm thử
- Sẽ không hiệu quả bởi thực tế các tester bị giới hạn kiến thức về hệ thống
- Độ bao phủ sẽ bị thiếu vì tester không kiểm tra được các đoạn lệnh của hệthống hoặc tập trung vào các dòng lệnh dễ xảy ra lỗi
Trang 11- Sẽ khó để có thể thiết kế đầy đủ các trường hợp kiểm thử.
1.4.3 Kiểm thử hộp xám.
Khái niệm: Kiểm thử hộp xám là một phương pháp kiểm thử mà đòi hỏi
tester phải có một lượng kiến thức nhất định về các luồng hoạt động ở bên trong hệthống Khác với kiểm thử hộp đen, phương pháp mà tester chỉ quan tâm duy nhất
để việc kiểm thử thông qua giao diện người dùng, kiểm thử hộp xám đòi hỏi testerphải truy cập vào các tài liệu thiết kế hệ thống cũng như hệ thống cơ sở dữ liệu của
hệ thống Do đó mà tester có thể chuẩn bị tốt hơn những dữ liệu cho việc kiểm thửcũng như các trường hợp kiểm thử trong quá trình lên kế hoạch kiểm thử hệ thống
Ưu điểm:
- Vì là sự kết hợp giữa kiểm thử hộp trắng và kiểm thử hộp đen nên có được
ưu điểm của cả hai phương pháp này
- Các tester sử dụng phương pháp này không dựa vào các dòng lệnh của hệthống mà chủ yếu dựa trên các tài liệu định nghĩa giao diện cũng như các tài liệuđặc tả chức năng
- Trong phương pháp này các tester có thể thiết kế nên những trường hợpkiểm thử đặc biệt xung quanh các giao thức kết nối và các loại dữ liệu khác nhau
- Việc kiểm thử được hoàn thành từ góc nhìn của người dùng chứ không phải
Trang 12- Việc kiểm tra tất cả các luồng đầu vào của hệ thống là không thể thực hiệnđược vì bị giới hạn về mặt thời gian kiểm thử và sẽ dẫn đến có rất nhiều các luồnghoạt động của hệ thống không được kiểm tra.
Trang 13CHƯƠNG 2: GIỚI THIỆU VỀ WEBSITE
2.1 Tổng quan.
Lazada là một trong những trang web thương mại điện tử lớn nhất và phổbiến nhất ở Đông Nam Á Lazada cung cấp các sản phẩm đa dạng về lĩnh vựcđiện tử, gia dụng, sức khỏe, làm đẹp, thời trang, đồ chơi, thực phẩm, v.v Lazadacũng có các dịch vụ giao hàng, thanh toán, đổi trả và bảo hành tiện lợi cho kháchhàng
Hình 2 - Giao diện chính website Lazada
Lazada không những đem lại cho người dùng những trải nghiệm tốt nhất vềchất lượng sản phẩm mà bên cạnh đó còn có những chính sách, dịch vụ đáng tincậy và phù hợp với mọi khách hàng
2.2 Chức năng.
Trang web được thiết kế với 4 chức năng chính:
Chức năng đăng nhập
Chức năng đăng kí
Trang 14 Chức năng tìm kiếm
Chức năng Giỏ hàng
2.2.1 Chức năng đăng nhập:
Hình 3- Giao diện chức năng đăng nhập
Tại giao diện này người dùng sẽ nhập đầy đủ thông tin tài khoản của mìnhbao gồm Tài khoản và mật khẩu:
- Nếu thông tin tài khoản nhập vào là không chính xác thì giao diện sẽ hiển thịnhư hình bên dưới:
Trang 15Hình 4 - Giao diện khi đăng nhập thất bại
2.2.2 Chức năng đăng kí:
Hình 5 - Giao diện chức năng đăng kí
Tại giao diện này, người dùng sẽ nhập thông tin của mình vào để đăng kí tàikhoản bao gồm: Họ và tên, mật khẩu và Tên đăng nhập, số điện thoại:
- Nếu thông tin nhập vào là chính xác và đầy đủ (số điện thoại chưa có ngườiđăng kí, số điện thoại nhập vào phải là số, mật khẩu đủ mạnh, không bỏ trống dữ
Trang 16liệu,… ) thì bạn đã đăng kí thành công tài khoản, trang web sẽ thông báo và quay
về trang chủ:
Hình 6 - Giao diện nhập thông tin đăng nhập
- Và ngược lại bạn đăng kí tài khoản thất bại, giao diện sẽ hiển thị như hìnhdưới:
Hình 8 - Giao diện khi đăng kí tài khoản thất bại
Trang 172.2.3 Chức năng Tìm kiếm:
Hình 9 - Giao diện chức năng tìm kiếm
Với chức năng này, người dùng có thể tìm kiếm sản phầm mình mong muốn
1 cách nhanh hơn
Hình 10 - Giao diện nhập tìm kiếm bằng chữ
Hình 11 - Giao diện tìm kiếm bằng chữ và kí tự đặc biệt
Trang 18Hình 12 - Giao diện tìm kiếm bằng Ký tự đặc biệt
Hình 13 - Giao diện nhập tìm kiếm bằng số
Trang 19Hình 14 - Giao diện tìm kiếm bằng chữ và kí tự đặc biệt, số
Hình 15 - Giao diện tìm kiếm quần áo bình thường