TỔNG QUAN VỀ CÔNG TY TMA VÀ VI ̣ TRÍ TESTER
Giới thiệu tổng quát về công ty TMA Bình Định
1.1.1 Giới thiệu về công ty:
- Được thành lập năm 1997, TMA là tập đoàn công nghệ hàng đầu Việt Nam với
TMA hiện có 4,000 kỹ sư và phục vụ khách hàng là các tập đoàn công nghệ cao hàng đầu thế giới đến từ 30 quốc gia Công ty có 7 chi nhánh tại Việt Nam, bao gồm 6 chi nhánh tại Tp.HCM và 1 chi nhánh tại Tp Quy Nhơn.
6 chi nhánh ở nước ngoài (Mỹ, Úc, Canada, Đức, Nhật, Singapore)
1.1.2 Tầm nhìn và sứ mệnh:
+ Trở thành 1 trong những công ty hàng đầu về cung cấp giải pháp phần mềm tại Việt Nam và các nước trong khu vực
Chúng tôi cam kết cung cấp cho khách hàng những giải pháp phần mềm chất lượng cao với chi phí hợp lý, đồng thời xây dựng mối quan hệ tin cậy và uy tín với các đối tác trong lĩnh vực công nghệ thông tin để cùng nhau phát triển.
Trong suốt nhiều năm, TMA Bình Định đã vượt qua nhiều thách thức và khẳng định khả năng làm việc cũng như cam kết chất lượng với khách hàng Để đạt được những thành công này, TMA không ngừng duy trì và phát triển các giá trị cốt lõi của mình.
Tổng quan về vị trí Tester
1.2.1 Mô tả về vị trí Tester:
Tester là những người đảm nhận vai trò kiểm duyệt chất lượng phần mềm thông qua việc thực hiện các thử nghiệm để phát hiện lỗi, sai sót và các vấn đề có thể ảnh hưởng đến chất lượng sản phẩm Nhiệm vụ của họ là đảm bảo rằng phần mềm được giao đến tay khách hàng với mức rủi ro thấp nhất có thể.
Tùy thuộc vào từng doanh nghiệp, Tester có thể hoạt động trong nhiều lĩnh vực như QA và QC, đặc biệt là Manual Tester và Automation Tester Manual Tester thực hiện kiểm thử phần mềm một cách thủ công, không yêu cầu chuyên môn lập trình cao nhưng cần có kiến thức vững về test manual, đam mê và tư duy tìm lỗi Ngược lại, Automation Tester kiểm thử bằng các công cụ tự động, yêu cầu Tester phải nắm vững kiến thức lập trình.
1.2.2 Các kỹ năng cần có của một Tester:
Kiến thức về kiểm thử phần mềm bao gồm các phương pháp và kỹ thuật quan trọng như kiểm thử hộp trắng, kiểm thử hộp đen, kiểm thử tích hợp, kiểm thử chấp nhận người dùng (UAT), kiểm thử tự động và kiểm thử tải Những phương pháp này giúp đảm bảo chất lượng phần mềm, phát hiện lỗi và cải thiện hiệu suất hệ thống Việc áp dụng đúng kỹ thuật kiểm thử là yếu tố then chốt trong quy trình phát triển phần mềm.
Hiểu biết về quy trình phát triển phần mềm là điều quan trọng, giúp bạn nắm rõ các giai đoạn khác nhau của quy trình này Việc áp dụng kiểm thử phù hợp trong từng giai đoạn sẽ đảm bảo chất lượng sản phẩm cuối cùng, từ đó nâng cao hiệu quả phát triển phần mềm.
Hiểu rõ yêu cầu và thiết kế là rất quan trọng, bao gồm khả năng đọc và hiểu tài liệu yêu cầu, thông số kỹ thuật và thiết kế Điều này giúp phát triển các trường hợp kiểm thử hiệu quả.
Kỹ năng ghi nhận và báo cáo là khả năng ghi lại kết quả kiểm thử một cách chi tiết, đồng thời cung cấp báo cáo chất lượng phù hợp với thông tin về lỗi, trạng thái kiểm thử và tiến độ.
Kỹ năng giao tiếp là yếu tố quan trọng giúp bạn tương tác hiệu quả với các thành viên trong nhóm phát triển, bao gồm lập trình viên, quản lý và khách hàng Việc nắm vững khả năng giao tiếp không chỉ giúp cải thiện mối quan hệ trong nhóm mà còn góp phần nâng cao hiệu suất công việc và sự hài lòng của khách hàng.
Trong quá trình kiểm thử phần mềm, tinh thần kiên nhẫn và khả năng kiểm soát là rất quan trọng, bởi vì tester cần thực hiện nhiều lần kiểm tra và ghi nhận lỗi một cách chính xác.
Đam mê học hỏi là yếu tố quan trọng trong lĩnh vực kiểm thử phần mềm, nơi công nghệ luôn phát triển và thay đổi Do đó, các tester cần phải chủ động cập nhật kiến thức và kỹ năng của mình một cách thường xuyên để bắt kịp với xu hướng mới.
Môi trường làm việc của tester rất đa dạng, bao gồm các công ty phần mềm, công ty công nghệ thông tin, công ty phát triển ứng dụng di động, công ty kiểm thử phần mềm, công ty bảo mật và nhiều lĩnh vực công nghệ khác.
Cơ hội chuyển đổi ngành cho các Tester rất đa dạng, cho phép họ áp dụng kỹ năng của mình vào nhiều vai trò khác trong ngành công nghiệp phần mềm Các Tester có thể chuyển sang làm việc trong lĩnh vực kiểm thử tự động, quản lý kiểm thử, hoặc trở thành chuyên gia bảo mật, mở ra nhiều hướng phát triển nghề nghiệp hấp dẫn.
Cơ hội thăng tiến trong lĩnh vực kiểm thử phần mềm rất rộng mở; nếu sở hữu kỹ năng và kinh nghiệm phù hợp, tester có khả năng thăng tiến lên vị trí quản lý kiểm thử hoặc trở thành chuyên gia hàng đầu trong ngành.
Mức lương của tester phụ thuộc vào nhiều yếu tố như địa điểm làm việc, cấp bậc, kinh nghiệm và quy mô công ty Tổng thể, lương của tester thường khá tốt và cạnh tranh trong ngành công nghiệp phần mềm Tại những quốc gia và thành phố có ngành công nghệ phát triển mạnh, lương có thể dao động từ 6.000 USD đến 15.000 USD hoặc cao hơn mỗi năm Ngoài ra, lương cũng có thể tăng nếu tester sở hữu chứng chỉ, kỹ năng đặc biệt, hoặc tham gia vào các dự án lớn và quan trọng.
CƠ SỞ LÝ THUYẾT
Tổng quan về kiểm thử phần mềm
2.1.1 Khái niệm kiểm thử phần mềm:
Kiểm thử phần mềm là quá trình thực thi ứng dụng nhằm phát hiện lỗi và đánh giá tính đúng đắn, đầy đủ cũng như chất lượng của phần mềm đã phát triển.
2.1.2 Mục tiêu của kiểm thử phần mềm:
- Tìm các bug phát sinh do DEV tạo ra khi code
- Đạt được sự tự tin và cung cấp thông tin về mức độ chất lượng
- Đảm bảo rằng kết quả cuối cùng đáp ứng các yêu cầu kinh doanh và người sử dụng
- Để đạt được sự tín nhiệm của khách hàng bằng cách cung cấp cho họ một sản phẩm chất lượng
2.1.3 Quy trình phát triển phần mềm:
2.1.4 Các nguyên tắc của kiểm thử:
Hình 1 7 nguyên tắc của kiểm thử
Kiểm thử phần mềm chỉ có khả năng chỉ ra sự hiện diện của lỗi mà không thể chứng minh phần mềm hoàn toàn không có lỗi Dù kiểm thử có thể giảm thiểu xác suất tồn tại lỗi chưa được phát hiện, việc không phát hiện lỗi trong quá trình kiểm thử không đồng nghĩa với việc phần mềm là sạch lỗi.
Nguyên tắc 2: Kiểm thử mọi thứ là bất khả thi Việc kiểm thử toàn bộ các điều kiện và giá trị đầu vào là không thể thực hiện, ngoại trừ một số trường hợp đơn giản Chẳng hạn, với các chức năng có ít dropdown hoặc checkbox, chúng ta có thể kiểm thử tất cả trong vài giờ Thay vì kiểm thử toàn diện, nên dựa vào phân tích rủi ro, áp dụng các kỹ thuật kiểm thử và ưu tiên để tập trung vào những khu vực quan trọng, từ đó nâng cao hiệu quả kiểm thử.
Nguyên tắc 3 trong kiểm thử phần mềm là kiểm thử sớm để tiết kiệm thời gian và chi phí Việc phát hiện lỗi (defect, bug) sớm trong vòng đời phát triển phần mềm/hệ thống thông qua các hoạt động kiểm thử tĩnh và động nên được bắt đầu càng sớm càng tốt Kiểm thử sớm, hay còn gọi là shift left, chuyển dịch các hoạt động kiểm thử sang giai đoạn sớm hơn trong quá trình phát triển Điều này giúp giảm thiểu hoặc loại bỏ những thay đổi tốn kém trong các giai đoạn sau của chu kỳ phát triển phần mềm.
Nguyên tắc 4: Lỗi tập trung theo cụm chỉ ra rằng một số mô-đun chức năng nhỏ thường chứa hầu hết lỗi trong quá trình kiểm thử phần mềm trước khi phát hành Những mô-đun này cũng có thể gây ra phần lớn hỏng hóc trong quá trình vận hành Do đó, việc xác định và phân tích các cụm lỗi, được quan sát trong kiểm thử hoặc vận hành, là thông tin quan trọng để phân tích rủi ro Điều này giúp tập trung kiểm thử một cách hiệu quả dựa vào mật độ lỗi của các mô-đun, như đã nêu trong Nguyên tắc 2.
Nguyên tắc 5, hay còn gọi là nghịch lý thuốc trừ sâu, chỉ ra rằng việc sử dụng lặp đi lặp lại một bộ test case sẽ dẫn đến việc không phát hiện được lỗi mới Để khắc phục tình trạng này, các test case và test data cần được rà soát và cập nhật thường xuyên Nếu không, bộ test case sẽ trở nên kém hiệu quả trong việc phát hiện lỗi, tương tự như thuốc trừ sâu không còn hiệu quả sau một thời gian sử dụng Tuy nhiên, trong một số trường hợp như kiểm thử tự động, nghịch lý này lại mang lại lợi ích, với số lượng lỗi hồi quy ở mức tương đối thấp.
Nguyên tắc 6 trong kiểm thử phần mềm nhấn mạnh rằng quá trình kiểm thử cần được thực hiện khác nhau tùy theo ngữ cảnh Ví dụ, phần mềm kiểm soát trong công nghiệp, yêu cầu tính an toàn cao, sẽ có quy trình kiểm thử khác với trang thương mại điện tử Hơn nữa, việc kiểm thử các dự án theo mô hình Agile cũng sẽ khác so với các dự án áp dụng mô hình tuần tự như mô hình thác nước hoặc chữ V.
Nguyên tắc 7: Không có lỗi là một niềm tin sai lầm Việc phát hiện và sửa chữa lỗi không có giá trị nếu hệ thống không đáp ứng được nhu cầu và mong đợi của người dùng Nhiều công ty kỳ vọng rằng tester có thể thực hiện mọi trường hợp kiểm thử và tìm ra tất cả lỗi, nhưng điều này là không khả thi Hơn nữa, kỳ vọng rằng chỉ cần tìm và sửa nhiều lỗi sẽ đảm bảo thành công cho hệ thống phần mềm là một sai lầm Việc kiểm tra kỹ lưỡng và sửa chữa tất cả lỗi có thể vẫn dẫn đến phần mềm khó sử dụng, không đáp ứng nhu cầu người dùng, hoặc kém hơn so với sản phẩm của đối thủ cạnh tranh.
2.1.5 Phân biệt Error/Fault/Failure:
- Error: Là hành động của con người dẫn đến kết quả sai
- Fault: Lỗi xảy ra khi làm sai các step, process, hoặc chuẩn bị dữ liệu
Lỗi xảy ra khi kết quả thực tế không khớp với yêu cầu đã được chỉ định, dẫn đến sự khác biệt giữa những gì hiển thị trên màn hình và kết quả mà người dùng mong đợi từ một thành phần, hệ thống hoặc dịch vụ cụ thể.
- Tuy nhiên trên thực tế server chỉ có thể hoạt động tốt khi có 900 user
- Note: Không phải 100% failure là do bug gây ra, trong quá trình test cấu hình sai, test sai môi trường hoặc làm thiếu bước có thể dẫn đến failure
+ Việc xác minh đảm bảo rằng sản phẩm được thiết kế để cung cấp tất cả các chức năng cho khách hàng
Việc xác minh là bước quan trọng trong quá trình phát triển, bao gồm các cuộc đánh giá, họp và kiểm tra để xem xét tài liệu, kế hoạch, mã nguồn, yêu cầu và thông số kỹ thuật.
• Ưu điểm của xác minh phần mềm:
+ Việc xác minh giúp giảm thiểu số lượng khiếm khuyết trong các giai đoạn phát triển sau này
+ Việc xác minh sản phẩm ở giai đoạn bắt đầu phát triển sẽ giúp hiểu sản phẩm một cách tốt hơn
+ Nó làm giảm nguy cơ bị lỗi trong ứng dụng phần mềm hoặc sản phẩm
+ Nó giúp xây dựng sản phẩm theo thông số kỹ thuật và nhu cầu của khách hàng
Xác thực là quá trình xác định xem hệ thống có đáp ứng các yêu cầu và chức năng dự kiến, cũng như mục tiêu của tổ chức và nhu cầu người dùng hay không Diễn ra sau khi đã hoàn tất xác minh, xác thực trả lời các câu hỏi quan trọng như: "Tôi có đang xây dựng sản phẩm phù hợp không?" và "Tôi có đang truy cập đúng dữ liệu cần thiết không?" Đây là một hoạt động cấp cao, được thực hiện sau khi sản phẩm gia công được sản xuất theo các tiêu chí đã thiết lập, nhằm đảm bảo sản phẩm tích hợp chính xác vào môi trường Mục tiêu của xác thực là xác định tính đúng đắn của sản phẩm phần mềm cuối cùng đối với nhu cầu và yêu cầu của người dùng.
• Ưu điểm của xác thực:
+ Trong quá trình xác minh nếu bỏ sót một số lỗi thì trong quá trình xác nhận nó có thể được coi là lỗi
Trong quá trình xác minh, nếu một số thông số kỹ thuật bị hiểu nhầm và có sự phát triển xảy ra, sự khác biệt giữa kết quả thực tế và kết quả mong đợi có thể được nhận diện trong quá trình xác nhận khi thực hiện chức năng đó.
Trong quá trình thử nghiệm phần mềm, việc xác thực được thực hiện thông qua nhiều loại thử nghiệm khác nhau, bao gồm thử nghiệm tính năng, thử nghiệm tích hợp, thử nghiệm hệ thống, thử nghiệm tải, thử nghiệm khả năng tương thích và thử nghiệm căng thẳng.
+ Xác thực giúp xây dựng sản phẩm phù hợp theo yêu cầu của khách hàng và giúp đáp ứng nhu cầu của họ
2.1.7 Sự khác nhau giữa QA & QC:
QC- Quality Control (kiểm soát chất lượng)
Một chuỗi các hoạt động được tổ chức và thực hiện một cách có hệ thống là cần thiết để đảm bảo rằng các sản phẩm và dịch vụ đáp ứng đúng yêu cầu cụ thể và thỏa mãn nhu cầu của người tiêu dùng.
Quá trình đảm bảo chất lượng sản phẩm được đánh giá dựa trên các tiêu chuẩn áp dụng, và các hành động cần thiết sẽ được thực hiện khi phát hiện sự không phù hợp Điều này bao gồm việc định hướng quy trình và định hướng sản phẩm để nâng cao hiệu quả và đáp ứng yêu cầu của khách hàng.
Quá trình phòng ngừa Quá trình khắc phục
Dành cho toàn bộ vòng đời ( bao quát toàn bộ) Thử nghiệm 1 phần trong vòng đời phát triển phần mềm ( giai đoạn kiểm thử )
Tập trung vào việc xây dựng chất lượng
Tập trung vào việc kiểm tra chất lượng
Kỹ thuật quản lý chất lượng Phương pháp để xác minh chất lượng
Công cụ quản lý Công cụ điều chỉnh
Xác minh / Verification Xác nhận/ Validation
Bảng 0-1 Phân biệt QA & QC
Vòng đời phát triển phần mềm (SDLC Models)
- SDLC (Software Development Life Cycle) còn gọi là chu kỳ phát triển phần mềm
Nó là chuỗi các hoạt động do nhà phát triển thực hiện để thiết kế và phát triển phần mềm
2.2.1 Giai đoạn phát triển phần mềm:
Hình 2 Vòng đời phát triển phần mềm
Mô hình Waterfall, hay còn gọi là mô hình thác nước, là một trong những phương pháp quản lý dự án đơn giản và dễ hiểu nhất hiện nay Mô hình này dựa trên quy trình thiết kế tuần tự và liên tiếp, giúp tổ chức và thực hiện các bước trong dự án một cách rõ ràng và có hệ thống.
Trong mô hình Waterfall, các giai đoạn của dự án được thực hiện theo thứ tự tuần tự và liên tiếp Mỗi giai đoạn mới chỉ bắt đầu khi giai đoạn trước đó đã hoàn tất.
- Các giai đoạn của mô hình thác nước:
+ Giai đoạn yêu cầu: Nhóm thực hiện tìm kiếm các yêu cầu liên quan đến dự án
Trong giai đoạn thiết kế, nhóm phát triển sẽ tạo ra bản thiết kế sản phẩm nhằm đáp ứng đầy đủ các yêu cầu, ràng buộc và mục tiêu đã đặt ra Một bản thiết kế hoàn chỉnh sẽ được thực hiện với độ chi tiết cao, mô tả rõ ràng cách thức hệ thống được phân tích sẽ được triển khai.
Giai đoạn thực hiện là quá trình xây dựng sản phẩm nhằm hỗ trợ thiết kế Trong một số trường hợp, sản phẩm được phát triển trong các đơn vị thí nghiệm và sau đó sẽ được tích hợp vào giai đoạn tiếp theo.
Trong giai đoạn kiểm thử, các bộ phận của sản phẩm sẽ được kiểm tra kỹ lưỡng Nếu cần thiết, chúng sẽ được tích hợp lại để thực hiện các thử nghiệm toàn diện Mục tiêu của quá trình này là phát hiện lỗi và đảm bảo rằng toàn bộ hệ thống đáp ứng các yêu cầu thiết kế đã đề ra.
Giai đoạn triển khai là thời điểm sản phẩm chính thức được đưa vào hoạt động Đối với các dự án công nghệ thông tin, sản phẩm sẽ được triển khai trong môi trường thực tế để người dùng có thể bắt đầu sử dụng Còn trong lĩnh vực xây dựng, giai đoạn này diễn ra khi tòa nhà đã hoàn tất và sẵn sàng cho cư dân vào ở.
Giai đoạn bảo trì là thời gian giám sát ngắn để nhóm dự án giải quyết các vấn đề của khách hàng Đối với dự án phần mềm, giai đoạn này thường bao gồm việc phát hành bản vá và cập nhật để khắc phục sự cố Trong các dự án khác, các điều chỉnh về môi trường được thực hiện để xử lý vấn đề, chẳng hạn như tối ưu hóa hệ thống điều hòa không khí trong một tòa nhà mới.
+ Thích nghi tốt với những nhóm linh hoạt
+ Áp đặt một tổ chức có kết cấu chặt chẽ
+ Cho phép những thay đổi thiết kế sớm
+ Nó không phải là một mô hình lý tưởng cho một dự án kích thước lớn
Nếu yêu cầu không được làm rõ ngay từ đầu, phương pháp sẽ trở nên kém hiệu quả Việc quay lại giai đoạn trước để thực hiện những thay đổi cần thiết là rất khó khăn.
Quá trình thử nghiệm khởi đầu khi giai đoạn phát triển kết thúc, dẫn đến nguy cơ cao về việc phát hiện lỗi Việc sửa chữa những lỗi này thường rất tốn kém và phức tạp.
Mô hình Waterfall được khuyến khích áp dụng khi người thực hiện có hiểu biết sâu sắc về yêu cầu của dự án, đặc biệt trong những trường hợp cần tính rõ ràng và ổn định cao.
+ Nắm vững được công nghệ phát triển của công nghệ
+ Có lượng tài nguyên phát triển phong phú và trình độ chuyên môn, kỹ thuật cao + Có thể phù hợp cho dự án nhỏ, ngắn hạn
Mô hình chữ V là sự phát triển từ mô hình thác nước, trong đó mỗi giai đoạn kiểm thử tương ứng với một giai đoạn phát triển phần mềm Thử nghiệm trong mô hình chữ V diễn ra song song với chu kỳ phát triển phần mềm, giúp nâng cao hiệu quả và chất lượng sản phẩm.
Mô hình chữ V ra đời nhằm khắc phục những hạn chế của mô hình thác nước Khác với việc kiểm thử chỉ diễn ra sau khi hoàn tất phát triển mã nguồn như trong mô hình thác nước, mô hình chữ V cho phép thực hiện kiểm thử song song với từng giai đoạn của quá trình phát triển.
- Mô hình chữ V thực chất là tổ hợp của vòng đời phát triển phần mềm SDLC ở bên trái và vòng đời kiểm thử phần mềm STLC ở bên phải
Phân tích yêu cầu sẽ được liên kết chặt chẽ với quá trình Kiểm thử hệ thống, trong đó chúng ta tiến hành kiểm tra tổng thể toàn bộ hệ thống để đảm bảo mọi chức năng hoạt động đúng như mong đợi.
High Level Design (HLD) involves a corresponding process known as Integration Testing During this phase, we assess the connectivity and compatibility among various software components.
Low Level Design (LLD) corresponds to the process of Unit Testing, where we focus on testing the functionality of the software at the function level.
Test types- Các loại kiểm thử phần mềm
Kiểm thử thủ công (Manual Testing) là phương pháp kiểm tra phần mềm mà người kiểm tra thực hiện các test case một cách thủ công, không sử dụng công cụ tự động Đây là hình thức kiểm tra cơ bản nhất, giúp phát hiện lỗi trong hệ thống phần mềm Trước khi triển khai kiểm thử tự động, mọi ứng dụng đều cần trải qua quy trình kiểm tra thủ công Mặc dù đòi hỏi nhiều nỗ lực hơn, Manual Testing là cần thiết để xác định tính khả thi của việc tự động hóa.
Manual Testing không yêu cầu kiến thức về các công cụ kiểm thử, và một trong những thách thức lớn trong kiểm thử phần mềm là không thể tự động hóa hoàn toàn Điều này khiến Manual Testing trở thành một phần thiết yếu trong quy trình kiểm thử phần mềm.
Kiểm thử tự động (Automation testing) là quá trình ứng dụng các công cụ, script và phần mềm để thực hiện các trường hợp kiểm thử thông qua việc lặp lại các hành động đã được xác định trước Mục tiêu của kiểm thử tự động là thay thế các hoạt động thủ công của con người bằng hệ thống hoặc thiết bị, nhằm nâng cao hiệu quả và độ chính xác trong quá trình kiểm thử phần mềm.
Automation testing tiết kiệm thời gian trong các thử nghiệm khám phá nhờ vào việc sử dụng công cụ tự động hóa Nó cũng giúp duy trì các script kiểm tra hiệu quả hơn và nâng cao phạm vi kiểm tra tổng thể.
Kiểm thử tự động là lựa chọn lý tưởng cho các dự án lớn cần thực hiện kiểm tra lặp lại trong các khu vực tương tự và cho những dự án đã trải qua giai đoạn thử nghiệm thủ công ban đầu.
Kiểm thử tự động là quá trình tự động hóa các bước thực hiện một test case thông qua phần mềm kiểm thử tự động, hay còn gọi là Automation Testing Tool Một số công cụ kiểm thử tự động nổi tiếng hiện nay bao gồm Quick Test Professional của HP.
Hình 4 Quy trình thực hiện Automation Testing
Để đạt được thành công trong tự động hóa quy trình thử nghiệm, việc lập kế hoạch và thiết kế một cách cẩn thận là vô cùng cần thiết Các bước thực hiện trong quy trình tự động hóa cần được tuân thủ một cách nghiêm ngặt.
+ Lựa chọn công cụ kiểm thử
+ Xác định phạm vi tự động hóa
+ Lập kế hoạch, thiết kế và phát triển
Kiểm thử bảo mật là một hình thức kiểm thử phần mềm nhằm đảm bảo hệ thống và ứng dụng được bảo vệ an toàn khỏi các lỗ hổng và mối đe dọa có thể gây tổn thất lớn Quá trình này tìm ra các sơ hở và điểm yếu có thể dẫn đến mất thông tin, tiết lộ doanh thu hoặc hủy hoại danh tiếng của công ty Mục tiêu chính của kiểm thử bảo mật là xác định các mối đe dọa trong hệ thống và đánh giá các lỗ hổng tiềm ẩn, nhằm ngăn chặn việc hệ thống bị ngừng hoạt động hoặc bị khai thác ngoài ý muốn.
- Các dạng thức của Security Testing Có bảy loại thử nghiệm bảo mật chính theo phương pháp kiểm thử bảo mật mã nguồn mở:
Hình 5 Các dạng của Security Testing
+ Vulnerability Scanning / Quét lỗ hổng: phương pháp này được thực hiện bằng phần mềm tự động quét hệ thống chống lại các lỗ hổng đã biết
Quét bảo mật là quá trình xác định các điểm yếu trong hệ thống mạng và toàn bộ hệ thống, từ đó đưa ra các giải pháp nhằm giảm thiểu rủi ro Phương pháp này có thể được thực hiện thông qua quét thủ công hoặc quét tự động.
Kiểm thử thâm nhập (penetration testing) là quá trình mô phỏng cuộc tấn công từ tin tặc nhằm phân tích và kiểm tra các lỗ hổng bảo mật của một hệ thống cụ thể Mục tiêu của kiểm thử này là xác định các điểm yếu có thể bị khai thác để xâm nhập hệ thống từ bên ngoài.
Đánh giá rủi ro là quá trình phân tích các rủi ro bảo mật trong tổ chức, được phân loại thành ba mức độ: Thấp, Trung bình và Cao Phương pháp này không chỉ giúp xác định mức độ rủi ro mà còn đề xuất các biện pháp và kiểm soát cần thiết để giảm thiểu những rủi ro đó.
Kiểm toán bảo mật là quá trình kiểm tra nội bộ ứng dụng và hệ điều hành nhằm phát hiện các lỗi bảo mật Hoạt động này có thể bao gồm việc kiểm tra từng dòng mã nguồn để đảm bảo an toàn cho hệ thống.
Ethical hacking là quá trình kiểm tra và bảo mật hệ thống phần mềm của tổ chức, khác với các tin tặc độc hại, những người xâm nhập hệ thống với mục đích đánh cắp thông tin Mục tiêu của ethical hacking là phát hiện và khắc phục lỗ hổng bảo mật trước khi chúng bị khai thác bởi kẻ xấu.
31 pháp hack hệ thống với mục đích là để các lỗ hổng bảo mật trong hệ thống lộ ra và có phương án khắc phục
Posture Assessment is a comprehensive method that integrates security scanning, ethical hacking, and risk assessments to provide a holistic view of an organization's current security landscape.
Kiểm thử API (API Testing) là một phương pháp kiểm thử phần mềm, tập trung vào việc kiểm tra các giao diện lập trình ứng dụng Đây là một phần quan trọng của kiểm thử tích hợp, nhằm đánh giá xem phần mềm có đáp ứng các yêu cầu về chức năng, độ tin cậy, hiệu suất và bảo mật hay không.
Testing Methods- Phương pháp kiểm thử phần mềm
Kiểm thử tĩnh là một kỹ thuật quan trọng trong kiểm tra phần mềm, cho phép phân tích tài liệu và mã nguồn mà không cần thực thi chương trình Phương pháp này giúp phát hiện lỗi và cải thiện chất lượng sản phẩm ngay từ giai đoạn đầu của dự án.
- Static analysis là quan trọng cho hệ thống đòi hỏi tiêu chí an toàn cao, ví dụ như các phần mềm về hàng không, y khoa
- Những work product có thể được kiểm tra bởi kiểm thử tĩnh:
+ Đặc tả yêu cầu: requirements, functional requirements, security requirements + User story, acceptance criteria (tiêu chí chấp nhận)
+ Tài liệu thiết kế và kiến trúc
- Lợi ích của Static Testing:
+ Phát hiện và sửa lỗi hiệu quả hơn trước khi thực hiện kiểm thử động
+ Ngăn chặn những defect trong thiết kế và code bằng cách phát hiện ra sự mâu thuẫn, mơ hồ, thiếu sót, không chính xác
+ Xác định những defect mà không dễ dàng phát hiện bởi kiểm thử động
+ Tăng hiệu suất phát triển: ví dụ do thiết kế được cải tiến, code dễ bảo trì
+ Giảm thời gian và chi phí phát triển
+ Giảm thời gian và chi phí test
Kiểm thử động, trái ngược với kiểm thử tĩnh, yêu cầu thực thi phần mềm để kiểm tra hành vi của mã Phương pháp này thực hiện việc chạy phần mềm và so sánh kết quả thực tế với kết quả mong đợi nhằm phát hiện lỗi và sự cố.
Mục đích chính của Dynamic Testing là kiểm tra hành vi của phần mềm dưới tác động của các biến động không cố định, nhằm phát hiện các điểm yếu trong môi trường thực thi Để thực hiện kiểm tra hành vi động, mã nguồn cần phải được thực thi.
- Dynamic Testing được phân thành hai loại:
Kiểm thử Hộp Trắng là một phương pháp kiểm thử phần mềm, trong đó người kiểm tra có kiến thức về cấu trúc nội bộ của thiết kế Tester lựa chọn đầu vào để thực hiện các đường dẫn trong mã và xác định đầu ra phù hợp Để thực hiện kiểm thử Hộp Trắng hiệu quả, kiến thức lập trình và hiểu biết về cách thức hoạt động của mã là rất quan trọng.
Kiểm thử hộp trắng là quá trình phân tích dòng dữ liệu, điều khiển dòng, và mã thực hành để phát hiện các lỗi trong hệ thống Điều này giúp kiểm tra các hành động của phần mềm không được định hướng trước Kiểm thử hiệu suất là một yếu tố quan trọng, cho phép người kiểm thử nhanh chóng đánh giá hiệu suất hoạt động của hệ thống trong các điều kiện môi trường khác nhau.
- Phương pháp Kiểm tra Hộp trắng áp dụng cho các mức độ kiểm tra phần mềm sau đây:
+ Unit Testing(Kiểm thử đơn vị): Để kiểm tra đường dẫn trong một đơn vị
+ Integration Testing(Test tích hợp): Để kiểm tra đường dẫn giữa các đơn vị
+ System Testing(Test hệ thống): Để kiểm tra các đường dẫn giữa các hệ thống con
Kiểm thử hộp đen là một phương pháp kiểm thử phần mềm mà không yêu cầu hiểu biết về cấu trúc bên trong của hệ thống Các tester thực hiện kiểm tra bằng cách xem xét hệ thống như một chiếc hộp đen, nơi mà họ không thể nhìn thấy các thành phần bên trong Phương pháp này giúp đánh giá chức năng của phần mềm dựa trên đầu vào và đầu ra mà không cần biết cách thức hoạt động bên trong.
- Black Box Testing chủ yếu là được thực hiện trong Function test và System test
- Phương pháp này cố gắng tìm ra các lỗi trong các loại sau:
+ Chức năng không chính xác hoặc thiếu
+ Lỗi trong cấu trúc dữ liệu hoặc truy cập cơ sở dữ liệu bên ngoài
+ Hành vi hoặc hiệu suất lỗi
+ Khởi tạo và chấm dứt các lỗi
- Các kỹ thuật phổ biến trong kiểm thử hộp đen:
+ Kỹ thuật phân lớp tương đương (Equivalence Class Partitioning)
+ Kỹ thuật phân tích các giá trị biên (Boundary value analysis)
+ Kỹ thuật dùng các bảng quyết định (Decision Tables)
Kiểm thử Grey Box là một phương pháp kiểm thử phần mềm kết hợp giữa kiểm thử Black Box và White Box Trong phương pháp này, người kiểm thử chỉ có một phần kiến thức về cấu trúc bên trong của sản phẩm, giúp họ đánh giá hiệu suất và tính năng của phần mềm một cách hiệu quả.
- Grey box test có thể được sử dụng ở nhiều mức kiểm thử khác nhau Tuy nhiên, chủ yếu được ứng dụng trong Kiểm thử tích hợp (Integration test).
Test levels- Các cấp độ của kiểm thử
Kiểm thử đơn vị là cấp độ đầu tiên trong bốn cấp độ kiểm thử phần mềm, tập trung vào việc kiểm tra từng đơn vị mã nguồn, chức năng hoặc quy trình riêng lẻ Quá trình này diễn ra trong giai đoạn phát triển ứng dụng, giúp phát hiện và sửa lỗi ngay lập tức mà không cần lưu trữ hay quản lý như các cấp độ kiểm thử khác.
- Sử dụng phương pháp kiểm thử hộp trắng để kiểm tra
- Các giai đoạn thực hiện kiểm thử đơn vị:
+ Lập kế hoạch cho các thủ tục kiểm tra đơn vị
+ Xác định các trường hợp kiểm thử Đơn vị và sử dụng phương pháp
+ Viết mã có thể kiểm tra và thực hiện bài kiểm tra
Kiểm thử tích hợp là quy trình kiểm tra các module phần mềm hoặc chức năng riêng lẻ sau khi chúng được tích hợp lại với nhau Trong mỗi dự án phần mềm, các module thường được phát triển bởi nhiều lập trình viên khác nhau, do đó, kiểm thử tích hợp chú trọng vào việc xác minh tính chính xác của việc truyền dữ liệu giữa các module.
Mục đích của việc phát hiện lỗi tương tác giữa các Unit là nhằm cải thiện sự giao tiếp và thông tin giữa các module Chúng tôi tập trung vào việc kiểm tra các giao diện và tích hợp các Unit đơn lẻ thành những hệ thống nhỏ hơn, đảm bảo tính đồng bộ và hiệu quả trong hoạt động.
- Cách tiếp cận của kiểm thử tích hợp:
Tích hợp từ dưới lên (Bottom up) là phương pháp kiểm thử trong đó các module ở các cấp thấp hơn được kiểm tra kết hợp với các module cao hơn Quá trình này tiếp tục cho đến khi tất cả các module trong hệ thống được kiểm thử đầy đủ.
Kiểm thử từ trên xuống, hay còn gọi là phương pháp top down, là quá trình kiểm tra hệ thống phần mềm bắt đầu từ các thành phần cao nhất và di chuyển dần xuống các thành phần chi tiết hơn, theo luồng điều khiển của hệ thống.
Chiến lược tích hợp Hybrid/Sandwich kết hợp phương pháp Top Down và Bottom Up, cho phép kiểm thử các module trên cùng đồng thời với các module ở dưới Các module thấp hơn sẽ được tích hợp với các module trên và thực hiện kiểm thử, đảm bảo tính đồng bộ và hiệu quả trong quá trình phát triển phần mềm.
- Kiểm thử hệ thống là kiểm thử toàn bộ chức năng và giao diện của hệ thống
- Sử dụng phương pháp kiểm thử hộp đen
- Mục đích: Đánh giá hệ thống có đáp ứng theo đúng yêu cầu nghiệp vụ, yêu cầu về chức năng đưa ra hay không
- Các bước thực hiện kiểm tra hệ thống:
+ Chuẩn bị một môi trường thử nghiệm phù hợp
+ Chuẩn bị các test case cho các tiến trình test
+ Tạo dữ liệu cần thiết cho mục đích thử nghiệm
+ Thực thi các test case Sau đó, phác thảo các khiếm khuyết
+ Thực hiện Kiểm tra hồi quy để phát hiện các biến chứng của các quy trình kiểm thử và xác định chúng
+ Tiếp tục các bài kiểm tra cho đến khi chúng thành công
Kiểm thử chấp nhận là quá trình xác định xem phần mềm có đáp ứng đầy đủ các yêu cầu của khách hàng hay không, đồng thời đánh giá liệu khách hàng có chấp nhận sản phẩm cuối cùng hay không.
- Sử dụng phương pháp kiểm thử hộp đen
- Mục đích: Đánh giá hệ thống có đáp ứng theo đúng yêu cầu nghiệp vụ, yêu cầu về chức năng đưa ra hay không
Alpha test là giai đoạn kiểm thử phần mềm được thực hiện bởi các thành viên trong tổ chức phát triển, thường là nhóm quản lý sản phẩm, nhưng không trực tiếp tham gia vào dự án Kiểm thử này diễn ra tại nơi sản xuất phần mềm và được coi là một hình thức kiểm thử nội bộ, diễn ra trước khi phần mềm bước vào giai đoạn kiểm thử Beta.
Beta test là giai đoạn thử nghiệm được thực hiện bởi người dùng cuối, thường là khách hàng, trong môi trường riêng của họ Quá trình này diễn ra tại địa điểm của khách hàng, nơi người dùng có thể trải nghiệm và đánh giá hệ thống, khác với môi trường phát triển phần mềm.
Kỹ thuật thiết kế Test case
Phương pháp này tập trung vào việc phát triển phần mềm và các hệ thống phức tạp, nhấn mạnh tầm quan trọng của việc xác định, đặc tả và kiểm tra các yêu cầu hoặc tiêu chuẩn mà phần mềm hoặc hệ thống cần đáp ứng.
• Phân tích giá trị biên (Boundary value analysis):
Phân tích giá trị biên là một phương pháp kiểm thử tập trung vào các giá trị ở vùng biên của dữ liệu đầu vào và đầu ra Thay vì kiểm tra toàn bộ dữ liệu, các tester chỉ chú trọng vào các giá trị biên để đảm bảo tính chính xác và hiệu quả của hệ thống.
Boundary conditions là các điểm nằm ở giữa, trên và dưới các biên của lớp tương đương Khi thực hiện kỹ thuật phân tích giá trị biên, người kiểm thử sẽ lựa chọn các giá trị phù hợp để đảm bảo tính chính xác của quá trình kiểm thử.
+ Giá trị ngay dưới giá trị nhỏ nhất
+ Giá trị ngay trên giá trị lớn nhất
• Phân vùng tương đương (Equivalence partitioning):
Phân vùng tương đương là phương pháp kiểm thử hộp đen, chia miền đầu vào của chương trình thành các lớp dữ liệu để suy dẫn ra các ca kiểm thử Tất cả các giá trị trong một vùng tương đương sẽ cho kết quả đầu ra giống nhau, cho phép chúng ta kiểm tra một giá trị đại diện trong vùng tương đương đó.
- Thiết kế test case bằng phân vùng tương đương tiến hành theo hai bước: xác định các lớp tương đương, xác định các trường hợp kiểm thử
Hình 8 Phân vùng tương đương
• Bảng quyết định (Decision Tables)
- Bảng quyết định còn được gọi là bảng Nguyên nhân – Kết quả (Cause-Effect)
- Kỹ thuật kiểm thử phần mềm này được sử dụng cho các chức năng cần sự kết hợp của các yếu tố đầu vào các biến.
Tìm hiểu về Python
Hình 9 Bảng quyết định 2.6.2 Experience-based techniques:
Đoán lỗi (Error guessing) là phương pháp kiểm thử không tuân theo quy tắc cụ thể, cho phép thiết kế test case linh hoạt dựa trên tình huống thực tế hoặc quy trình làm việc được mô tả trong tài liệu chức năng Phương pháp này cũng hữu ích khi phát hiện lỗi không mong muốn hoặc chưa được mô tả trong tài liệu trong quá trình kiểm thử.
Kiểm thử thăm dò (Exploratory testing) là phương pháp kiểm thử tập trung vào việc phát hiện và điều tra lỗi, đồng thời nâng cao hiểu biết về ứng dụng Phương pháp này ưu tiên thực hiện kiểm thử hơn là việc tạo ra các test cases cụ thể.
Python là một ngôn ngữ lập trình phổ biến, được ứng dụng rộng rãi trong phát triển web, phần mềm, khoa học dữ liệu và máy học Với hiệu suất cao, dễ học và khả năng chạy trên nhiều nền tảng, Python thu hút sự quan tâm của các nhà phát triển Phần mềm Python miễn phí, tích hợp tốt với nhiều hệ thống khác nhau, giúp tăng tốc độ phát triển dự án.
Python là một ngôn ngữ lập trình phổ biến và mạnh mẽ, được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau Dưới đây là một số ví dụ tiêu biểu về các ứng dụng của Python.
Python là một ngôn ngữ lập trình mạnh mẽ với nhiều framework web như Django, Flask và Pyramid, giúp phát triển các ứng dụng web đa dạng và hiệu quả.
Python là ngôn ngữ phổ biến trong khoa học dữ liệu và máy học, nhờ vào các thư viện mạnh mẽ như NumPy, Pandas, Matplotlib, Seaborn và Scikit-learn Những thư viện này hỗ trợ việc phân tích và xử lý dữ liệu, cũng như xây dựng các mô hình học máy một cách hiệu quả và dễ dàng.
Trí tuệ nhân tạo (AI) đang trở thành một lĩnh vực quan trọng, và Python là ngôn ngữ lập trình được ưa chuộng trong phát triển các ứng dụng AI Ngôn ngữ này hỗ trợ mạnh mẽ cho các nhiệm vụ như xử lý ngôn ngữ tự nhiên (NLP), thị giác máy tính và học sâu (deep learning).
Xử lý ngôn ngữ tự nhiên (NLP) là một lĩnh vực quan trọng trong phân tích văn bản, và Python cung cấp nhiều thư viện hữu ích như NLTK (Natural Language Toolkit) và spaCy Những thư viện này hỗ trợ từ việc tách từ đến trích xuất thông tin, giúp người dùng dễ dàng xử lý và phân tích dữ liệu ngôn ngữ tự nhiên.
Python cung cấp một bộ thư viện phong phú cho việc điều khiển và tự động hóa, giúp tối ưu hóa quy trình làm việc bằng cách giảm thiểu công sức và thời gian cho các tác vụ lặp lại.
+ Ứng dụng di động: Python có thư viện Kivy và BeeWare cho phép xây dựng ứng dụng di động đa nền tảng, hỗ trợ trên Android và iOS
+ Game và đồ họa: Python được sử dụng trong phát triển game, đồ họa, và trình diễn tương tác
Python hỗ trợ xử lý ảnh và âm thanh thông qua các thư viện như OpenCV và PyAudio, rất hữu ích cho các ứng dụng liên quan đến lĩnh vực này Ngoài ra, Python còn cung cấp các thư viện mạnh mẽ như Socket, Requests và Scapy để tương tác với mạng và phát triển các ứng dụng mạng hiệu quả.
+ Ứng dụng desktop: Python hỗ trợ xây dựng các ứng dụng desktop đơn giản thông qua các framework như Tkinter, PyQT và WxPython
Tổng quan về Selenium
Selenium là một công cụ kiểm thử tự động miễn phí và mã nguồn mở, chuyên về tự động hóa ứng dụng web trên đa dạng trình duyệt và nền tảng Công cụ này được sử dụng rộng rãi để thực hiện kiểm thử tự động cho các ứng dụng web, được biết đến với tên gọi Kiểm thử Selenium.
Selenium là một bộ phần mềm đa dạng, không chỉ là một công cụ đơn lẻ, mà bao gồm bốn thành phần chính để phục vụ nhu cầu kiểm thử của các tổ chức: Selenium Integrated Development Environment (IDE), Selenium Remote Control (RC), WebDriver và Selenium Grid.
Selenium giúp kiểm thử ứng dụng web trở nên dễ dàng và hiệu quả, đảm bảo chất lượng và độ tin cậy của phần mềm trước khi ra mắt.
2.8.2 Ưu điểm và nhược điểm của Selenium:
Selenium hỗ trợ tự động hóa kiểm thử trên nhiều trình duyệt phổ biến như Chrome, Firefox, Edge và Safari, giúp kiểm tra ứng dụng web một cách hiệu quả trên các nền tảng khác nhau.
Selenium hỗ trợ nhiều ngôn ngữ lập trình như Python, Java, C#, Ruby, JavaScript và PHP, cho phép lập trình viên lựa chọn ngôn ngữ mà họ cảm thấy thoải mái nhất khi phát triển ứng dụng.
Selenium cho phép tích hợp dễ dàng với nhiều công cụ kiểm thử và framework khác, từ đó nâng cao khả năng tự động hóa quy trình kiểm thử một cách toàn diện và hiệu quả.
Selenium cung cấp hỗ trợ mạnh mẽ cho việc kiểm thử ứng dụng web, cho phép người dùng kiểm tra và tương tác với các phần tử web, từ đó giúp việc kiểm thử các tính năng và chức năng của ứng dụng trở nên dễ dàng hơn.
- Hỗ trợ nguồn mở: Selenium là một dự án nguồn mở, vì vậy bạn có thể sử dụng và tùy chỉnh nó miễn phí
Tốc độ thực thi của việc tự động hóa trình duyệt bằng Selenium thường chậm hơn so với kiểm thử thủ công hoặc tự động hóa API, do quá trình điều khiển trình duyệt phải thông qua giao diện đồ họa.
Cài đặt và cấu hình Selenium cho môi trường kiểm thử có thể rất phức tạp, đòi hỏi nhiều công việc kỹ thuật, đặc biệt khi làm việc với nhiều trình duyệt và hệ điều hành khác nhau.
Selenium có thể gặp khó khăn khi truy cập vào các trang web do chính sách bảo mật của trình duyệt, đặc biệt là các trang có nhiều biện pháp chống tự động hóa.
TRIỂN KHAI DỰ ÁN
Tổng quan về website Guru99
3.1.1 Giới thiệu về website Guru99:
Guru99 Bank là một nền tảng mô phỏng hữu ích cho việc học và thực hành kiểm thử phần mềm cũng như quản lý dự án Trang web này cung cấp đa dạng khóa học, hướng dẫn và tài liệu liên quan đến testing và quản lý dự án, tạo điều kiện cho người học có môi trường thực hành an toàn Qua đó, người dùng có thể nắm vững các khía cạnh cơ bản và phức tạp của kiểm thử phần mềm một cách hiệu quả.
Trang web Guru99 Bank cung cấp một ứng dụng web giúp minh họa các khái niệm kiểm thử và hỗ trợ người dùng làm quen với các tác vụ cụ thể Ứng dụng này có nhiều chức năng chính, phục vụ nhu cầu học tập và thực hành của người dùng trong lĩnh vực kiểm thử phần mềm.
+ Đăng nhập và Quản lý tài khoản: Ứng dụng cho phép người dùng đăng nhập vào tài khoản người dùng của họ và quản lý thông tin tài khoản
Chức năng Đổi Mật Khẩu cho phép người dùng dễ dàng thay đổi mật khẩu của mình Để thực hiện, người dùng cần cung cấp mật khẩu cũ, nhập mật khẩu mới và xác nhận lại mật khẩu mới.
Chức năng Tạo Tài Khoản Mới cho Khách Hàng cho phép người dùng dễ dàng đăng ký tài khoản bằng cách cung cấp các thông tin cần thiết như tên, ngày sinh, địa chỉ và số điện thoại.
+ Chức năng Edit Customer: Cho phép người dùng chỉnh sửa thông tin của một khách hàng đã có sẵn
+ Chức năng Delete Customer: Cho phép người dùng xóa một khách hàng khỏi hệ thống
Trang web Guru99 Bank là một nền tảng lý tưởng để thực hành và nâng cao kiến thức về kiểm thử phần mềm Tại đây, người dùng có thể tìm hiểu sâu về các chức năng cơ bản của ứng dụng web và cách sử dụng các công cụ kiểm thử như Selenium để tự động hóa quy trình kiểm tra.
3.1.2 Giao diện của website Guru99 Bank:
- Link website: https://www.demo.guru99.com/V4/
- Môi trường thực nghiệm: Chrome
Hình 10 Màn hình đăng nhập của Guru99 Bank
Hình 11 Màn hình trang chủ của Website Guru99 Bank
Đặc tả yêu cầu
Chức năng: Đăng nhập vào hệ thống trang web Guru99
Người dùng có thể đăng nhập vào hệ thống của trang web Guru99 bằng cách xác thực tài khoản và mật khẩu Chức năng này cho phép truy cập vào các tính năng và dịch vụ đa dạng của trang web, nâng cao trải nghiệm người dùng.
1 Người dùng truy cập trang chủ của trang web Guru99: https://www.demo.guru99.com/V4/
2 Trang web hiển thị giao diện đăng nhập với các trường sau:
+ Trường "User ID" (uid): Người dùng nhập tên tài khoản của mình vào trường này
+ Trường "Password": Người dùng nhập mật khẩu của mình vào trường này
+ Nút "Login": Người dùng nhấn nút này để thực hiện việc đăng nhập
3 Người dùng nhập thông tin tài khoản và mật khẩu vào các trường tương ứng
4 Người dùng nhấn nút "Login" để đăng nhập vào hệ thống
1 Nếu tên tài khoản và mật khẩu chính xác:
+ Trang web chuyển hướng người dùng đến trang chính của hệ thống với giao diện đã đăng nhập thành công
+ Hiển thị thông báo “Welcome To Manager ' s P a g e o f G u r u 9 9 B a n k ” để xác nhận đăng nhập thành công
2 Nếu tên tài khoản hoặc mật khẩu không chính xác:
+ Trang web hiển thị thông báo lỗi "User or Password is not valid" để thông báo về việc tên tài khoản hoặc mật khẩu không đúng
- Điều kiện đặc biệt: Nếu tên tài khoản và mật khẩu không hợp lệ, người dùng vẫn ở lại trang đăng nhập và có thể thử lại việc đăng nhập
Chức năng: Thay đổi mật khẩu ("Change Password")
Chức năng "Thay đổi Mật khẩu" cho phép người dùng cập nhật mật khẩu tài khoản trong hệ thống Để thực hiện việc này, người dùng cần cung cấp thông tin xác thực và nhập mật khẩu mới.
+ Người dùng truy cập vào trang web: https://www.demo.guru99.com/V4/index.php
+ Người dùng nhập tên đăng nhập và mật khẩu hiện tại vào các trường tương ứng + Người dùng nhấn nút "Login" để đăng nhập vào tài khoản
+ Trang web hiển thị trang "Manager Home Page"
+ Người dùng tìm và nhấn vào liên kết "Change Password" trong trang
+ Trang web chuyển sang trang "Change Password"
+ Trang web hiển thị giao diện với các trường sau:
+ Trường “Old Password”:Người dùng nhập mật khẩu hiện tại
+ Trường “New Password”:Người dùng nhập mật khẩu mới muốn đổi
+ Trường “Confirm Password”:Người dùng xác nhận lại mật khẩu mới
+ Nút “Submit”: Người dùng nhấn vào nút này để xác nhận thay đổi mật khẩu
+ Người dùng nhập mật khẩu hiện tại, mật khẩu mới và xác nhận mật khẩu mới vào các trường tương ứng
+ Người dùng nhấn nút "Submit" để thay đổi mật khẩu
1 Nếu mật khẩu cũ đúng và mật khẩu mới và xác nhận mật khẩu hợp lệ:
+ Trang web hiển thị thông báo "Password is Changed" để xác nhận thay đổi mật khẩu thành công
+ Người dùng nhấn nút "OK" trên cửa sổ cảnh báo
+ Trang web chuyển hướng người dùng đến trang đăng nhập vào hệ thống
2 Nếu người dùng nhập sai mật khẩu hiện tại:
+ Trang web hiển thị thông báo lỗi “Old Password is incorrect” mật khẩu cũ không đúng
3 Nếu người dùng nhập mật khẩu mới và xác nhận mật khẩu mới không khớp nhau:
+ Trang web sẽ hiển thị thông báo “Passwords do not Match”.
Test case
3.3.1 Test case manual cho chức năng Login:
Hình 12.Test case chức năng Login 3.3.2 Test case manual cho chức năng Change Password:
Hình 13 Test case chức năng Change Password
Link testcase: https://docs.google.com/spreadsheets/d/1STMWnqVCz-JITjUaV-
R3nH9kWL0DSntp7P7xhCE8h6U/edit?usp=sharing
Kết quả kiểm thử tự động
3.4.1.Kết quả kiểm thử chức năng Login:
• Kết quả Login Unsuccessful khi nhập sai Password:
Hình 14 Kết quả của test_Login01
• Kết quả Login Unsuccessful khi nhập sai UserID:
Hình 15 Kết quả của Test_Login02
• Kết quả Login Unsuccessful khi nhập sai UserID và Password:
Hình 16 Kết quả của Test_Login03
• Kết quả Login Unsuccessful bỏ trống trường UserID và Password:
Hình 17 Kết quả của Test_Login04
• Kết quả Login Successful khi nhập đúng UserID và Password:
Hình 18 Kết quả của Test_Login05 3.4.2 Kiểm thử chức năng Change Password:
• Kết quả Change Password khi nhập sai mật khẩu cũ:
Hình 19 Kết quả của test_CP_01
• Kết quả Change Password khi nhập sai xác nhận mật khẩu :
Hình 20 Kết quả của test_CP_01
Bảng tổng hợp kết quả kiểm thử theo từng chức năng
3.5.1.Tổng hợp kết quả kiểm thử chức năng Login:
3.5.2.Tổng hợp kết quả kiểm thử chức năng Change Password:
Hình 22 Test Report Change Password
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
- Sau hơn 2 tháng thực tập tại công ty TMA dưới sự hướng dẫn của giáo viên hướng dẫn và mentor em đã được những kết quả sau:
+ Học hỏi được nhiều kiến thức về kiểm thử phần mềm
+ Hiểu vòng đời kiểm tra phần mềm và chu trình phát triển phần mềm
+ Tìm hiểu về các loại và phương pháp kiểm thử
+ Hiểu về ngôn ngữ Python và thư viện Selenium
+ Áp dụng các kiến thức đã học để kiểm thử các chức năng tại website Guru99
- Do thời gian thực tập tương đối ngắn nên khi thực hiện không thể tránh được những thiếu sót nhất định.:
+ Em chưa thực hiện test hết các chức năng
+ Khả năng viết automation test còn hạn chế
Với mục tiêu trở thành một kiểm thử viên phần mềm trong tương lai, tôi sẽ nỗ lực tìm hiểu và nghiên cứu sâu hơn về các vấn đề liên quan đến kiểm thử phần mềm Đồng thời, tôi cũng sẽ học cách viết test case bằng Python để nâng cao kỹ năng và tiến bộ hơn trong lĩnh vực mà mình theo đuổi.
- Tiếp tục mở rộng phạm vi kiểm thử bằng cách tạo thêm các test case để đảm bảo kiểm tra tất cả các chức năng quan trọng của Guru99
- Hoàn thiện những điểm còn thiếu sót