báo cáo môn đảm bảo chất lượng phần mềm

41
LỜI NÓI ĐẦU Trong thời buổi công nghệ thông tin có mặt khắp các lĩnh vực, các tổ chức cá nhân, doanh nghiệp ngày càng phát triển mạnh mẽ. Nhu cầu sử dụng các phần mềm để thực hiện các công việc được nhanh chóng, chính xác và hiệu quả ngày càng tăng. Việc đảm bảo chất lượng phần mềm ngày càng trở lên quan trọng. Bên cạnh các phần mềm truyền thống, người ta còn sử dụng các phần mềm chạy trên nền web. Chính vì điều đó website ngày càng được sử dụng rộng rãi. Ngoài ra, để đáp ứng nhu cầu chia sẻ thông tin , cũng như truyền đạt thông tin một cách nhanh chóng và tiếp cận với nhiều người nhất thì website chính là phương tiện có khả năng làm tốt nhất công việc đó. Ngày nay, các website được phát triển một cách cực kỳ mạnh mẽ và nhanh chóng. Tuy nhiên, đi cùng với sự phát triển vượt bậc và tiện lợi như thế thì cũng có không ít các trở ngại dẫn đến việc website không được hoạt động một cách hiệu quả nhất. Do đó, cần thiết phải kiểm thử và đảm bảo chất lượng của website. Với sự hướng dẫn của thầy nhóm chúng em thực hiện đề tài “Kiểm thử phần mềm và thực hiện kiểm thử trên 1 bài toán cụ thể ” và thực hiện trên một sản phẩm website đã được xây dựng nhưng chưa hoàn thiện , cũng như gặp rất nhiều thiếu sót trong quá trình phát triển sản phẩm. Do hạn chế về mặt kiến thức cho nên không thể tránh khỏi sai sót trong quá trình làm báo cáo, rất mong được sự giúp đỡ và chỉ dạy của thầy và các bạn. 1

Upload: thuyet-nguyen

Post on 21-Mar-2017

84 views

Category:

Software


15 download

TRANSCRIPT

Page 1: Báo cáo môn đảm bảo chất lượng phần mềm

LỜI NÓI ĐẦU Trong thời buổi công nghệ thông tin có mặt khắp các lĩnh vực, các tổ chức cá nhân, doanh nghiệp ngày càng phát triển mạnh mẽ. Nhu cầu sử dụng các phần mềm để thực hiện các công việc được nhanh chóng, chính xác và hiệu quả ngày càng tăng. Việc đảm bảo chất lượng phần mềm ngày càng trở lên quan trọng. Bên cạnh các phần mềm truyền thống, người ta còn sử dụng các phần mềm chạy trên nền web. Chính vì điều đó website ngày càng được sử dụng rộng rãi.

Ngoài ra, để đáp ứng nhu cầu chia sẻ thông tin , cũng như truyền đạt thông tin một cách nhanh chóng và tiếp cận với nhiều người nhất thì website chính là phương tiện có khả năng làm tốt nhất công việc đó. Ngày nay, các website được phát triển một cách cực kỳ mạnh mẽ và nhanh chóng. Tuy nhiên, đi cùng với sự phát triển vượt bậc và tiện lợi như thế thì cũng có không ít các trở ngại dẫn đến việc website không được hoạt động một cách hiệu quả nhất. Do đó, cần thiết phải kiểm thử và đảm bảo chất lượng của website. Với sự hướng dẫn của thầy nhóm chúng em thực hiện đề tài “Kiểm thử phần mềm và thực hiện kiểm thử trên 1 bài toán cụ thể ” và thực hiện trên một sản phẩm website đã được xây dựng nhưng chưa hoàn thiện , cũng như gặp rất nhiều thiếu sót trong quá trình phát triển sản phẩm. Do hạn chế về mặt kiến thức cho nên không thể tránh khỏi sai sót trong quá trình làm báo cáo, rất mong được sự giúp đỡ và chỉ dạy của thầy và các bạn.

Chúng em xin chân thành cảm ơn!

1

Page 2: Báo cáo môn đảm bảo chất lượng phần mềm

MỤC LỤC

Phần I: PHẦN MỞ ĐẦU.....................................................................................................4

1. Lý do chọn đề tài................................................................................................4

2. Mục đích.............................................................................................................5

PHẦN II. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM..................................................11

1. Các khái niệm cơ bản........................................................................................12

2. Các mục tiêu chính của kiểm thử phần mềm....................................................12

3. Các mức độ của kiểm thử phần mềm................................................................13

4. Testcase.............................................................................................................16

5. Các nguyên tắc cơ bản về kiểm thử..................................................................17

6. Quy trình kiểm thử phần mềm..........................................................................17

6.1. Tester nằm ở quy trình nào trong phát triển phần mềm?..................................17

6.2. Quy trình kiểm thử phần mềm..........................................................................18

7. Phân biệt QA và QC.........................................................................................19

Phần III: KIỂM THỬ WEBSITE.....................................................................................20

1. Thế nào là kiểm thử Website?..........................................................................20

1.1. Khái quát...........................................................................................................20

1.2. Thành phần bên trong trang Web.....................................................................22

1.3. Tại sao cần kiểm thử Website?.........................................................................22

2. Những phương pháp kỹ thuật khi kiểm thử Website.......................................27

2.1. Kiểm thử giao diện trang Web (Testing Web page interface)..........................27

2.2. Kiểm thử chức năng ( functional testing).........................................................29

2.2.1.Kiểm thử liên kết (links).................................................................................29

2.2.2.Kiểm thử định dạng sử dụng trong trang Web................................................30

2.3. Kiểm thử hiệu suất (Performance testing)........................................................37

2.9. Kiểm thử hướng phát triển trang Web (Test development)..............................40

2

Page 3: Báo cáo môn đảm bảo chất lượng phần mềm

3. Ví dụ nhỏ viết testcase kiểm thử trang Web ATM..........................................41

PHẦN IV. MỘT SỐ CÔNG CỤ KIỂM THỬ WEBSITE................................................43

1. Khái quát về kiểm thử tự động.........................................................................43

1.1. Khái quát...........................................................................................................43

1.2. Kiểm thử tự động là gì?....................................................................................43

1.3. Tại sao cần kiểm thử tự động?..........................................................................43

1.4. Ưu và nhược điểm của kiểm thử tự động.........................................................44

2. Một số công cụ kiểm thử tự động Website.......................................................46

2.1. Công cụ kiểm thử chức năng............................................................................47

2.1.1.Công cụ SeleniumIDE......................................................................................47

2.1.2.Công cụ Quicktestprofessional.........................................................................50

2.2. Công cụ kiểm thử hiệu năng.............................................................................58

2.2.1.Công cụ Jmeter ApacheJmeter.........................................................................58

2.2.2.Công cụ Mercury LoadRunner.........................................................................60

PHẦN V. TỔNG KẾT.......................................................................................................63

PHẦN VI. TÀI LIỆU THAM KHẢO...............................................................................63

3

Page 4: Báo cáo môn đảm bảo chất lượng phần mềm

PHẦN I: PHẦN MỞ ĐẦU

1. Lý do chọn đề tài Website ra đời đã mở ra hướng mới cho việc phát triển các ứng dụng trên

Internet. Website kết hợp sử dụng nhiều công nghệ khác nhau, cho phép hai ứng dụng dùng chung một ngôn ngữ, độc lập hệ điều hành trao đổi được với nhau thông qua môi trường mạng. Điểm khác biệt lớn nhất và đặc trưng nhất của một trang Web là có thể liên kết được với các trang Web khác, và các trang Web khác ấy lại liên kết với rất nhiều các trang Web khác nữa tạo thành một mạng lưới liên kết khổng lồ trên toàn thế giới. Tuy nhiên, nó mang đến cho các nhà kiểm thử và phát triển phần mềm nhiều thách thức.

Sự phức tạp, tính linh hoạt và phụ thuộc các ứng dụng vào một dịch vụ, thiếu thử nghiệm là một trong những thách thức mà các nhà phát triển Website phải đối mặt. Vì vậy, nhu cầu kiểm thử Website ngày càng tăng lên và trở thành thiết yếu đối với dự án phần mềm.

Các lỗi là nguyên nhân chính của năng suất thấp và là kết quả của những sai xót trong suốt vòng đời phát triển của phần mềm. Những lỗi này bao gồm mội lỗi thực thi, các lỗi bảo mật, thực hiện sai chức năng, lỗi sụp đổ hệ thống… càng sớm phát hiện vấn đề thì càng dễ sửa lỗi và giảm thời gian, chi phí cho phần mềm.

Nói chung, các nhà phát triển, nhà nghiên cứu, những chuyên gia dựa vào thực nghiệm kiểm tra tính đảm bảo các chức năng dịch vụ, độ tin cậy của Website, cung cấp giải pháp kiểm thử tự động. Ngoài ra, khả năng tương tác, an ninh và các vấn đề liên quan đều có ảnh hưởng đến cả nhà sản xuất và người sử dụng.

2. Mục đích

Mục đích lựa chọn đề tài của chúng em là tìm hiểu những kiến thức tổng quan về phần mềm, có thể viết testcase và kiểm thử Website và tìm hiểu về các công cụ kiểm thử tự động để giúp cho việc kiểm thử nhanh chóng và hiệu quả hơn.

Hơn thế nữa, thực hiện đề tài này sẽ giúp cho chúng em có những kiến thực bổ ích để phục vụ cho công việc trong tương lai.

4

Page 5: Báo cáo môn đảm bảo chất lượng phần mềm

PHẦN II. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM

1. Các khái niệm cơ bản

Kiểm thử phần mềm là quá trình khảo sát một hệ thống hay thành phần dưới những điều kiện xác định, quan sát và ghi lại các kết quả và đánh giá một khía cạnh nào đó của hệ thống hay thành phần đó. (Theo Thuật ngữ kỹ nghệ phần mềm-IEEE Standard Glossary of Software Engineering Terminology).

Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi.(Theo Art of Software Testing” – Nghệ thuật kiểm thử phần mềm).

Có thể định nghĩa một cách tổng quát là: Kiểm thử phần mềm là quá trình thực hiện hay đánh giá một sản phẩm phần mềm hay một dịch vụ phần mềm bằng phương pháp thủ công hoặc các công cụ hỗ trợ tự động để kiểm tra và xác mình rằng nó đáp ứng yêu cầu quy định.

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ó. - Xác thực chất lượng kiểm thử phần mềm đã dùng chi phí và nỗ lực

tối thiể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ác báo cáo vấn đề đúng và hữu dụng. 3. Các mức độ của kiểm thử phần mềm.

Test Unit (Test mức đơn vị): Là kiểu test kiểm tra code xem liệu chức năng nó đang thực hiện có đúng cách hay không theo như yêu cầu.

Test Shakeout(Test cấu hình) : Kiểu test này cơ bản là kiểu test về khả năng của hệ thống mạng, kết nối dữ liệu và sự tương tác của các module. Thông thường thì kiểu test này là do nhóm quản lý cấu hình chuẩn bị thiết lập các môi trường test thực sự. Họ cũng test xem liệu các thành phần chính của phần mềm có hoạt động bất thường không. Kiểu test này thực hiện trước khi tiến hành thực hiện trong môi trường test. Sau khi test shakeout, bước kế tiếp là test smoke (kiểu test được thực hiện bởi tester sau khi biên dịch, được tiến hành trong môi trường test).

5

Page 6: Báo cáo môn đảm bảo chất lượng phần mềm

Test smoke (Test sơ lượt): Là kiểu test được thực hiện khi phần code được biên dịch mới chỉ được chuẩn bị tiến hành trong môi trường test. Kiểu này cơ bản giống như để kiểm tra đại khái để chắc rằng các chức năng chính có bị bất thường không? Nó mở đầu cho quá trình test bởi Tester QA. Sau khi test smoke, các tester sẽ thực hiện test khả năng thực hiện của các chức năng.

Functional testting (Kiểm thử chức năng): Qui trình cố gắng tìm ra các khác biệt giữa đặc tả bên ngoài của phần mềm và thực tế mà phần mềm cung cấp.

Đặc tả bên ngoài của phần mềm là đặc tả chính xác về hành vi của phần mềm theo góc nhìn của người dùng thấy. Sử dụng kiểm thử hộp đen để kiểm thử chức năng.

Kiểm thử chức năng là một nhóm kiểm thử rất rộng bao gồm FAST, TOFT, kiểm thử biên, kiểm thử dạng khám phá và các dạng khác.

FAST: Mỗi đầu vào và điều khiển,duyệt các hoạt động đúng như mong đợi?

TOFT: Ứng dụng có thể thực hiện các chức năng hữu ích như mong đợi?

Kiểm thử biên: Điều gì xảy ra khi sử dụng các giá trị biên? Kiểm thử dạng khám phá: Kinh nghiệm nói lên điều gì về các

vùng tiềm ẩn vấn đề trong ứng dụng? Kiểm thử dạng khám phá bao gồm việc nghiên cứu, lập kế hoạch, và thực thi kiểm thử một cách đồng thời. Tấn công phần mềm: Tại sao phần mềm bị lỗi? làm thế nào bạn có thể biến những bài học kinh nghiệm thành các hoạt động tương tác nhằm công kích và phát hiện các lỗi phần mềm?

Test Tích hợp (Integration testing) : là kiểu test kiểm tra liệu tất cả các module là được kết hợp hoặc chưa kết hợp lại cùng với nhau thực hiện công việc có đạt được kết quả như tài liệu yêu cầu đã được xác định (do mỗi lập trình viên thực hiện trên các module khác nhau. Khi họ hoàn thành đoạn code của họ, nhóm quản lý cấu hình ráp chúng lại với nhau và chuẩn bị biên dịch. Các tester cần chắc rằng các module này bây giờ đã được kết hợp và làm việc theo như yêu cầu – tức là phải test theo như yêu cầu).

Test hồi quy (Regression testing) : Khi một chức năng mới được thêm vào phần mềm, chúng ta cần chắc chắn rằng phần chức năng mới được thêm vào không phá hỏng các phần khác

6

Page 7: Báo cáo môn đảm bảo chất lượng phần mềm

của ứng dụng. Hoặc khi lỗi đã được chỉnh sửa, chúng ta cần chắc chắn rằng lỗi chỉnh sửa không phá hỏng các phần khác trong ứng dụng. Để test điều này chúng ta thực hiện kiểu test lặp đi lặp lại gọi là test hồi quy.

Test hệ thống (System testing): Khi tester hoàn thành công việc test (các tester test ứng dụng trong các môi trường test, nghĩa là họ test với dữ liệu test, không test trên dữ liệu thật), ứng dụng (phần mềm) phải được test trên môi trường thật. Nó nghĩa là gì, tức là kể từ khi các tester test nó trong môi trường test với dữ liệu test, chúng ta phải chắc chắn rằng ứng dụng làm việc tốt trong môi trường thật với dữ liệu thật. Trong môi trường test, một vài điều không thể test hoặc thao tác giả. Tất cả sẽ khác nhau và cơ sở dữ liệu khác nhau, một số thao tác có thể không làm việc như mong đợi khi ứng dụng được chuyển từ môi trường test sang môi trường sản phẩm (test enviroment to production environment).

Test tải dữ liệu(Load testing): Là kiểu test kiểm tra thời gian đáp lại người dùng với ứng số lượng người dùng bất kỳ trong một ngữ cảnh nào đó của cùng một ứng dụng tại cùng một thời điểm.

Test tải trọng (Stress testing) : Là kiểu test kiểm tra thời gian đáp lại người dùng với ứng số lượng người dùng bất kỳ trong nhiều ngữ cảnh khác nhau của cùng một ứng dụng tại cùng một thời điểm.

Test hiệu suất (Performance testing) : Trong loại test này, ứng dụng được test dựa vào sức nặng như sự phức tạp của giá trị, độ dài của đầu vào, độ dài của các câu truy vấn…Loại test này kiểm tra bớt phần tải (stress/load) của ứng dụng có thể được chắc chắn hơn.

Test chấp nhận từ người sử dụng (User acceptance testing): Trong kiểu test này, phần mềm sẽ được thực hiện kiểm tra từ người dùng để tìm ra nếu phần mềm phù hợp với sự mong đợi của người dùng và thực hiện đúng như mong đợi. Trong giai đoạn test này, tester có thể cũng thực hiện hoặc khách hàng có các tester của riêng họ để thực hiện.

Test hộp đen (Black box testing) : Là kiểu test mà Tester thực hiện test không chú ý gì đến code (hoặc là một hình thức test mà ứng dụng đang test được xem như một hộp đen và hành vi

7

Page 8: Báo cáo môn đảm bảo chất lượng phần mềm

bên trong của chương trình hoàn toàn được bỏ qua. Việc test xảy ra dựa trên các đặc tả bên ngoài. Cũng hiểu như test hành vi, chỉ hành vi bên ngoài của ứng dụng là được đánh giá và phân tích).

Test hộp trắng (White box testing) : Là test mà các tester tìm kiếm lỗi bên trong code.

Test Alpha (Alpha testing) :Trong loại test này, các người dùng được mời đến điểm tập trung đề xuất ý kiến, nơi mà họ sẽ sử dụng chương trình và người phát triển chú ý mỗi thông tin liên quan hoặc hành động được đặt ra bởi người dùng. Bất kỳ hành vi bất thường nào của hệ thống cũng phải được ghi nhận và chỉnh sửa bởi người phát triển.

Test Beta (Beta testing) : Trong loại test này, phần mềm được phân bổ như một phiên bản thử nghiệm (sử dụng thử) để người dùng kiểm tra ứng dụng tại nơi làm việc của họ. Người sử dụng sẽ quan sát phần mềm, trong trường hợp nếu có bất kỳ lỗi xảy ra thì nó được báo cáo đến người phát triển.

4. Testcase Mỗi testcase chứa các thông tin cần thiết để kiểm thử thành phần phần

mềm theo 1 mục tiêu xác định. Thường testcase gồm bộ 3 thông tin {tập dữ liệu đầu vào, trạng thái của thành phần phần 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ần phầm mềm dùng và xử lý. Tập kết quả kỳ vọng là kết quả mong muốn sau khi thành phần phần mềm xử lý dữ liệu nhập.

Tập các testcase : tập hợp các testcase mà ta có ý định dùng để kiểm thử thành phần phần mềm để minh chứng rằng các ca kiểm thử có đúng các hành vi mong muốn.

Các phương pháp thiết kế testcase Bất kỳ sản phẩm kỹ thuật nào (phần mềm không phải là ngoại lệ) đều có thể được kiểm thử bởi 1 trong 2 cách :

Test hộp đen :Là kiểu test mà Tester thực hiện test không chú ý gì đến code (hoặc là một hình thức test mà ứng dụng đang test được xem như một hộp đen và hành vi bên trong của chương trình hoàn toàn được bỏ qua. Việc test xảy ra dựa trên các đặc tả bên ngoài. Cũng hiểu như test hành vi, chỉ hành vi bên ngoài của ứng dụng là được đánh giá và phân tích).

Test hộp trắng : Là test mà các tester tìm kiếm lỗi bên trong code5. Các nguyên tắc cơ bản về kiểm thử

8

Page 9: Báo cáo môn đảm bảo chất lượng phần mềm

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 eye seeing 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. Chương trình có thể chứa các lỗi do lập trình viên hiểu sai về đặc tả/phát biểu vấn đề. Tổ chức lập trình không nên kiểm thử các chương trình của tổ chức mình viết. � Thanh tra 1 cách xuyên suốt các kết quả kiểm thử. Phải thiết kế đủ các test case cho cả 2 trường hợp : dữ liệu đầu vào hợp lệ và dữ liệu đầu vào không hợp lệ và chờ đợi. Xem xét chương trình xem nó không thực hiện những điều mong muốn, xem nó có làm những điều không mong muốn ? Không nên lập kế hoạch nỗ lực kiểm thử dựa trên giả định ngầm rằng phần mềm không có lỗi. 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ệ.

6. Quy trình kiểm thử phần mềm

9

Page 10: Báo cáo môn đảm bảo chất lượng phần mềm

6.1. Tester nằm ở quy trình nào trong phát triển phần mềm?

Người thực hiện Trình tự công việc

Ban giám đốc

Trưởng dự án

Trưởng dự án

Trưởng dự án

Trưởng dự án

Đội dự án

Đội dự án

Trương dự án

QLDA

10

Quyết định khởi động dự

Thu thập thông tin dự án

Phân công thực hiện

Test

Lập kế hoạch

dự án

Phân tích

thiết kế

Lập trình

Chuyển giao

Page 11: Báo cáo môn đảm bảo chất lượng phần mềm

QA

6.2. Quy trình kiểm thử phần mềm

STT Người thực hiện Trình tự công việc

1 Trưởng dự án Lập kế hoạch test

2 Đội dự án Cài đặt, chuẩn bị test

3 Đội dự án Unit Test (test đơn vị)

4 Đội dự án, Tester Module Test (test module)

5 Đội Test IntergrationTest (test tích hợp)

6 Đội Test System Test (test hệ thống)

7 Trưởng dự án Xem xét, đánh giá kết quả Test

8Trưởng dự ánBan giám đốc

Tổng hợp, báo cáo.

11

Báo cáo

Page 12: Báo cáo môn đảm bảo chất lượng phần mềm

7. Phân biệt QA và QC Nói về QLDA, Hệ thống QLCL bao gồm 2 phần chính là QC & QA.

QA (Quality Assurance) QC (Quality Control)

Những kế hoạch, hoạt động mang tính hệ thống nhằm bảo đảm rằng quá trình sản xuất sẽ tạo ra những sản phẩm có chất lượng.

Những hoạt động, những kỹ thuật nhằm bảo đảm chất lượng sản phẩm.

Các hoạt động quản lý quy trình QC thực hiện, đảm bảo QC thực hiện đúng

Các hoạt động kiểm thử nhằm phát hiện lỗi và sửa lỗi.

Ví dụ:- Đảm bảo chất lượng- Định nghĩa tiến trình- Chọn lựa công cụ- Huấn luyện

Ví dụ:- Kiểm duyệt- Kiểm thử- Thanh tra- Kiểm tra lại

12

Page 13: Báo cáo môn đảm bảo chất lượng phần mềm

PHẦN III. KIỂM THỬ WEBSITE

1. Thế nào là kiểm thử Website ? 1.1. Khái quát

Kiểm thử Website là một phần cả kiểm thử phần mềm. Vì vậy, các công cụ kiểm thử cho phần mềm cũng sẽ được ứng dụng để kiểm thử Website. Tuy nhiên, người kiểm thử không được áp dụng cứng nhắc những phương pháp đó mà cần linh hoạt, biến nó thành kiểm thử Website một cách thông minh hơn..

Kiểm thử là công việc quan trọng đánh giá chất lượng của một sản phẩm và Web cũng không ngoại lệ. Các phương pháp kiểm thử tập trung vào đánh giá các chức năng yêu cầu. Tuy nhiên, không thể nào tập trung vào được hết các chức năng yêu cầu. Bởi có rất nhiều chức năng quan trọng cho người sử dụng như là: tính hiệu quả, tính dễ sử dụng, độ tin cậy, tính bảo mật… Những yêu cầu và mong đợi của người sử dụng là những vấn đề hay gặp phải và đòi hỏi cần phải thay đổi trong suốt quá trình ta xây dựng một trang Web. Vì thế , cần thiết phải phát triển một chiến lược hiệu quả cho việc kiểm thử mà có thể bao quát được giới hạn tổng thể rộng lớn

13

Page 14: Báo cáo môn đảm bảo chất lượng phần mềm

của những yêu cầu, chức năng cho một trang Web, qua đó có thể cài đặt ứng dụng và tránh các rủi ro.

1.2. Thành phần bên trong trang WebGồm 3 thành phần chính:

Thành phần phía trình chủ: Ví dụ như các trình chủ Web, trình chủ cơ sở dữ liệu, trình chủ ứng dụng, ngôn ngữ đánh dấu, kết nối Web đến cơ sở dữ liệu và các chương trình mở rộng của trình chủ Web.Thành phần trình khách: Trình duyệt Web và các thành phần Add-on/Plug-in.Kiến trúc hệ thống: Trong hệ thống trang Web, các thành phần được nhóm lại thành các cụm dịch vụ liên quan, dưới đây ta tiến hành xem xét hệ thống Web dưới hai dạng:

Hệ thống khách chủ truyền thống: Một ứng dụng điển hình gồm có 4 phần: Mã nguồn giao diện người dùng, mã nguồn xử lý logic, mã nguồn dịch vụ truy cập dữ liệu, lưu dữ liệu.

Hệ thống khách chủ trên Web: Gồm: Máy khách (dịch vụ người dùng), máy chủ (dịch vụ xử lý) và các thành phần dịch vụ dữ liệu (máy chủ).

1.3. Tại sao cần kiểm thử Website?Các trang Web cùng những ứng dụng của nó đưa ra nhiều thử thách đối với các nhà phát triển khác nhau.Chất lượng của trang Web về cơ bản phụ thuộc vào các thành phần kể trên và khả năng tương tác giữa chúng. Kiểm thử là một trong những công vệc quan trọng của quá trình phát triển Web tạo ra các sản phẩm Web tốt nhất. Vì vậy mà việc kiểm thử cũng cần phải có phương pháp, hệ thống riêng. Kiểm thử nhằm vào việc tìm ra các lỗi, thiếu xót trong ứng dụng. Vậy vấn đề ở đây là chúng ta cần phải linh hoạt khi áp dụng làm cho những phương pháp này phù hợp, thích ứng với việc kiểm thử các trang Web.

Và ở đây chúng ta sẽ đề cập tới những giải pháp, phương thức và công cụ cho kiểm thử Web.

14

Page 15: Báo cáo môn đảm bảo chất lượng phần mềm

2. Những phương pháp kỹ thuật khi kiểm thử Website 2.1. Kiểm thử giao diện trang Web (Testing Web page interface)

Mục đích: Kiểm chi chỉ ra các lỗi, chứng minh giao diện của trang Web không đúng với đặc tả yêu cầu.Các giao diện chính bao gồm: Giao diện web server và server ứng dụng:

Lỗi chính tả, font chữ, font size… Giá trị thể hiện. Cách sắp xếp thông tin, hình ảnh… Các thanh, các tabs, các mục chi tiết như thế nào?

Giao diện server ứng dụng và giao diện server dữ liệu Kiểm tra tất cả các tương tác giữa các server. Nếu server dữ

liệu hoặc web server trả lại bất kỳ báo lỗi nào cho bất kỳ truy vấn nào từ server ứng dụng thì ngay lập tức server ứng dụng phải nhận được và cho hiển thị cảnh báo tới người dùng. Kiểm tra các trường hợp giao dịch bị ngắt đột ngột do người dùng, hoặc kết nối tới server bị gián đoạn, bị khởi động lại…

VD:

15

Page 16: Báo cáo môn đảm bảo chất lượng phần mềm

2.2. Kiểm thử chức năng ( functional testing)

Kiểm thử chức năng thường sử dụng kỹ thuật kiểm thử hộp đen nào đó, đặc tả dựa theo trang Web.

Mục đích kiểm thử là tìm ra các lỗi về mặt chức năng, bao gồm cả nhiều lỗi về chức năng rất quan trọng, chứng minh chức năng của trang Web không đúng với đặc tả ban đầu.

Việc kiểm thử chức năng yêu cầu tester thực hiện test tất cả các link trong trang web, định dạng được sử dụng trong các trang web để gửi và nhận các thông tin cần thiết từ người dùng. Ngoài ra còn có kết nối cơ sở dữ liệu, kiểm tra cookies và xác minh HTML/CSS.

2.2.1. Kiểm thử liên kết (links)

Kiểm tra các liên kết (links) bao gồm kiểm tra liên kết ngoài trang web, liên kết nội bộ, liên kết tới các vị trí trong cùng trang, liên kết sử dụng

Liên kết bên trong một cấu trúc siêu văn mà điểm đến không tồn tại một nút (các trang web, hình ảnh,vv) hoặc được gọi là liên kết hỏng và đại diện nổi tiếng và thường xuyên xảy ra sai sót trong các ứng dụng Web.

Để kiểm tra cho chính xác của các trang liên kết (link kiểm tra), tất cả các liên kết được hệ thống theo sau bắt đầu trên một trang bắt đầu, và sau đó được nhóm trong một đồ thị liên kết ( bản đồ trang web).

Khi chạy một thói quen kiêm tra liên kết, người ta thường thấy các liên kết không chỉ là điểm đến không tồn tại trang, nhưng cũng có các trang không được interlinked với những người khác hoặc cái gọi là các trang mồ côi. Những trang mồ côi có thể được đạt đến thông qua một liên kết, nhưng không có một liên kết đến cấu trúc siêu văn bản.

Để đơn giản cho người sử dụng nó không rõ ràng nơi để đi tới, để họ rời bỏ trang web. Các trang là thiết kế lý tưởng để họ kết thúc bằng một đề nghị của nơi người đọc có thể đi tiếp theo.

Ngoài ra, khi vượt qua các liên kết, người ta thường có thế tìm thấy dữ liệu bô sung để cung cấp chi dẫn tiềm năng lồi, ví dụ, độ sâu và bề rộng của các cơ cấu chuyển hướng, khoảng cách giữa hai tramg liên quan đến các trang, được đo bằng số lượng các liên kết, hoặc lần tải của các trang.

2.2.2. Kiểm thử định dạng sử dụng trong trang Web

16

Page 17: Báo cáo môn đảm bảo chất lượng phần mềm

Kiểm tra form của các trang: form là phần cơ bản của các trang web, nên cần được kiểm tra một cách kỹ càng, bao gồm các yêu cầu sau:

Không nhập gì vào các trường bắt buộc thì sao? Giá trị mặc định của các trường là gì? Nhập đầu vào không đúng validate của các trường thì sao? Thao tác trên các trường: xem, nhập, lưu, sửa, xóa… Kết nối cơ sở dữ liệu: yêu cầu kiểm tra tính toàn vẹn của dữ

liệu khi tạo, sửa, xóa form…hoặc bất cứ chức năng nào có liên quan tới cơ sở dữ liệu. Khi truy vấn cơ sở dữ liệu thì kết quả trả về có tương ứng với kết quả nhìn thấy được trên giao diện không, dữ liệu có được lấy và cập nhật chính xác không?...

Kiểm thử cookies: cookies là các tệp được tạo bởi trang web đã truy cập để lưu trữ thông tin duyệt web, như các tùy chọn trang web hoặc thông tin đăng nhập của người dùng. Người dùng có thể tùy chỉnh trên trình duyệt nhằm quản lý cookies, thực hiện các thao tác cho phép lưu, hoặc xóa, hoặc chặn…để kiểm tra các tính năng lưu hoặc không lưu trạng thái đăng nhập, tính năng bảo mật của ứng dụng web.

Xác minh HTML/CSS: việc xác minh này đặc biệt quan trọng khi developer thực hiện tối ưu hóa trang web cho các công cụ tìm kiếm, chủ yếu liên quan tới lỗi cú pháp HTML. Tester sẽ kiểm tra xem trang web có được nhận diện bởi các công cụ tìm kiếm khác nhau hay không (ví dụ: Google, Yahoo, Bing…).

17

Page 18: Báo cáo môn đảm bảo chất lượng phần mềm

2.3. Kiểm thử hiệu suất (Performance testing)

Kiểm thử hiệu suất là tiến trình thu thập và phân tích thông tin mà trong đó dữ liệu đo lường được tập hợp để dự đoán khi nào các mức tải sẽ vượt quá khả năng chịu đựng của nguồn tài nguyên của hệ thống. Trong tiến trình này bạn sẽ tập hợp các giá trị chuẩn. Các giá trị này được sử dụng để xây dựng các kịch bản kiểm thử tải và kiểm thử quá tải khác nhau. Các số liệu chuẩn đó cũng được sử dụng như ranh giới giúp cho bạn phát hiện khi nào hiệu suất hệ thống được cải thiện hoặc bắt đầu giảm đi.

Mục đich của kiểm thử hiệu suất làm việc là chỉ ra rằng trang Web này không đạt được hiệu xuất được đặc tả trong mục tiêu đặt ra cho trang Web đó.

Kiểm thử hiệu suất dựa vào sức nặng như độ phức tạp của giá trị , độ dài của đầu vào, độ dài của các câu truy vấn…

Kiểm thử xác định hệ thống hoạt động như thế nào theo từng khối lượng công việc cụ thể. Ngoài ra, nó dùng để xác minh, xác nhận các thuộc tính như độ tin cậy và sử dụng tài nguyên.

Một số các hoạt động liên quan tới hiệu suất như là thời gian đáp ứng đạt được, khả năng thông qua và mức độ sử dụng tài nguyên. Kiểm thử hiệu năng gắn với việc kiểm thử với các tốc độ kết nối mạng khác nhau.Thí dụ một số lỗi về hiệu suất:

Khả năng hiển thị các hình ảnh, đề mục trong trang Web không đáp ứng được với tốc độ yêu cầu của khách hàng. �

Trang Web không đáp ứng được số lần kích chọn, không hiển thị, hoặc hiển thị chậm các mục, các hình ảnh mà người dùng kích chọn.

Trình soạn thảo văn bản của trang Web không nhận và xử lý kịp các ký tự được nhập bởi người dùng.

Note: Kiểm thử hiệu suất và kiểm thử tải, quá tải thường được dùng thay thế lẫn nhau nhưng thực ra là chúng không giống nhau.

3. Ví dụ nhỏ viết testcase kiểm thử trang Web ATM

18

Page 19: Báo cáo môn đảm bảo chất lượng phần mềm

Hình 1

Hình 2

PHẦN IV. MỘT SỐ CÔNG CỤ KIỂM THỬ WEBSITE

1. Khái quát về kiểm thử tự động 1.1. Khái quát

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 50% tổng giá trị của dự án.

19

Page 20: Báo cáo môn đảm bảo chất lượng phần mềm

Nếu cần ứng dụ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êu củ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ệt giú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ểm thử 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ó đượ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ểm thử và các chức năng báo cáo kết quả...1.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 trong mộ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ời gian kiểm thử.

1.3. Tại sao cần 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 TestCase quá nhiều mà kiểm thử 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 đã sửa. Tuy nhiên, việc này 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 được xử lý bởi Web Server Xác định cấu hình máy thấp nhất mà PM vẫn có thể hoạt động tốt.

1.4. Ưu và nhược điểm của kiểm thử tự độngƯu điểm:

Độ tin cậy cao(Reliability): Nhờ sự ổn định vượt trội của công cụ kiểm thử tự động so với con người, đặc biệt trong trường hợp có quá nhiều test cases cần được thực thi, nên độ tin cậy của kiểm thử tự động thường cao hơn so với kiểm thử thủ công.

Khả năng lặp (Repeatability): Hãy cùng xem xet một ví dụ: Trong một ngày thời tiết xấu chúng ta phải thực thi một test case với 50 bộ dữ liệu đầu vào khác nhau. Nếu thực thi cách thủ công, ngồi

20

Page 21: Báo cáo môn đảm bảo chất lượng phần mềm

trước màn hình, nhập dữ liệu, click click .., check check … trong 50 lần có lẽ bạn sẽ gục ngã sớm trên bàn làm việc của mình. NHƯNG, nếu bạn thực thi bằng kiểm thử tự động, chỉ cần nhập dữ liệu vào file excel ( or csv, …) cho script chạy và ngồi rung đùi cho tới khi nhận được báo cáo. Với độ ổn định cao, bạn hoàn toàn có thể tin tưởng vào kết quả thực thi của công cụ kiểm thử tự động. Quả là một viễn cảnh lý tưởng hơn nhiều.

Khả năng tái sử dụng (Reusability): Với một bộ kiểm thử tự động, chúng ta có thể sử dụng cho nhiều phiển bản ứng dụng khác nhau, đây được gọi là tính tái sử dụng.

Nhanh (Fast): Đây là điều không cần phải bàn cãi, nếu cần 5 phút để thực thi một test case cách thủ công, có thể bạn cần chưa đầy 30s để thực thi cách tự động.

Chi phí thấp (Cost Reduction): Nếu áp dụng kiểm thử tự động đúng cách, chúng ta có thể tiết kiệm được rất nhiều chi phí, thời gian và nhân lực. (Khi nào nên áp dụng kiểm thử tự động sẽ được nói ở cuối bài.

Nhược điểm: Khó mở rộng, khó bảo trì (Poor scalability and maintainability):

Trong cùng một dự án, để mở rộng phạm vi cho kiểm thử tự động là khó hơn nhiều so với kiểm thử cách thủ công. Số lượng công việc phải làm để mở rộng phạm vi cho kiểm thử tự động là nhiều hơn và khó hơn kiểm thử thủ công. Cũng vậy, để cập nhật một test case thủ công, chúng ta chỉ cần mở ra và gõ, rất đơn giản. Nhưng kiểm thử tự động lại không đơn giản như vậy, cập nhật hay chỉnh sửa yêu cầu rất nhiều công việc như debug, thay đổi dữ liệu đầu vào, và cập nhật code mới.

Khả năng bao phủ thấp(Low coverage): Chính vì việc khó ứng dụng, khó mở rộng, cũng như đòi hỏi quá nhiều kỷ năng lập trình nên độ bao phủ của kiểm thử tự động khá thấp (xét trên góc nhìn toàn dự án).

Vấn đề công cụ và nhân lực (Technology vs. people issues): Cho đến nay công cụ hỗ trợ kiểm thử tự động đã có những bước phát triển mạnh mẽ, chúng ta có các công cụ rất tốt như QTP, Selenium, Test Complete, LoadTest, Jmeter, Visual Studio, … Nhưng nhìn chung vẫn còn rất nhiều mặt hạn chế. Ngoài ra nguồn nhân lực đạt yêu cầu cũng không nhiều.

21

Page 22: Báo cáo môn đảm bảo chất lượng phần mềm

1.5. Quy trình kiểm thử tự động

Bảng sau mô tả rõ hơn các bước thực hiện kiểm thử tự động :

STT Các bước thực hiện Mô tả

1 Tạo kịch bản kiểm thử

Giai đoạn này dùng các công cụ kiểm thử để ghi lại các thao tác lên phần mềm cần kiểm tra và tự động sinh ra kịch bản kiểm thử.

2Chỉnh sửa kịch bản kiểm thử

Chỉnh sửa để kịch bản thực hiện kiểm tra theo đúng yêu cầu đặt ra. Cụ thể, làm theo trường hợp kiểm thử cần thực hiện.

3 Chạy kịch bản kiểm thưKiểm tra phần mềm có đưa ra đúng kết quả mong muốn không.

4 Đánh giá kết quảĐánh gia sau khi chạy kịch bản kiểm thử.

22

Page 23: Báo cáo môn đảm bảo chất lượng phần mềm

2. Một số công cụ kiểm thử tự động Website

Có rất nhiều các công cụ được dùng để kiểm thử Website: Auto Testing Web Application, Selenium IDE, Qicktest professional(QTP), Functionaly testing, Weblink Validator, Load runner, Jmeter…

Sau đâu chúng em xin giới thiệu một số công cụ tiêu biểu được dùng để kiểm thử Website:2.1. Công cụ kiểm thử chức năng

2.1.1. Công cụ Selenium IDE2.1.1.1. Khái niệm

- Selenium IDE (Integrated development enviroment): là một công cụ cho phép ghi (record) và phát lại một test script, đây là một add-on hỗ trợ FireFox. Chúng ta chỉ có thể record trên trình duyệt FireFox nhưng bù lại nó có thể playback trên các trình duyệt khác như IE, Chrome…

2.1.1.2. Ưu và nhược điểm của Selenium Ưu điểm

Là công cụ mã nguồn mở. Đơn giản, dễ cài đặt, dễ làm việc. Sử dụng miễn phí. Dễ dàng ghi và phát lại các thao tác của người dùng với

trình duyệt. Các lựa chọn trường thông minh sẽ sử dụng ID, name

hoặc Xpath khi cần thiết. Tự động hoàn chỉnh cho tất cả các lệnh Selenium

thường gặp.Gỡ lỗi và thiết lập các điểm dừng. Lưu các kiểm thử như là với các định dạng khác nhau

(Ví dụ: HTML, PHP…).Hỗ trợ các tệp tin selenium user-extensions.jsDễ dàng điểu chỉnh thông qua các plugin.

Nhược điểm Không thể đảm bảo bất kỳ add-in nào được yêu cầu nếu

selenium không thể nhận ra các đối tượng. Hỗ trợ được cung cấp cho Selenium là rất ít.

23

Page 24: Báo cáo môn đảm bảo chất lượng phần mềm

2.1.1.3. Cài đặt Selenium IDE Bước1: Mở trang chủ của

selenium http://seleniumhq.org/download/

Bước 2: Cài đặt selenium IDE giống như cài đặt một plugin trên trình duyệt Firefox

Click vào link 2.5.0 (chỉ số phiên bản này có thể thay đổi theo thời gian) nó sẽ bật ra cửa sổ. Software Installation như hình dưới và chờ đợi trong vài giây sau đó click vào nút Install Now cạnh nút Cancel.

Bước 3: Khởi động lại trình duyệt Firefox Bước 4: Lần đầu khởi động Selenium IDE. Click vào icon

Selenium trên menu Bar của firefox giao diện selenium IDE sẽ hiển thị như hình bên dưới:

2.1.1.4. Tính năng của Selenium IDE

24

Page 25: Báo cáo môn đảm bảo chất lượng phần mềm

- Base URL là nơi lưu trữ homepage của ứng dụng web- Test Case list liệt kê tất cả test case có trong test suite- Fast…Slow xác định tốc độ execute một test case- Play entity test suite thực thi tất cả test case chúng ta đang mở- Play current test case thực thi test case đang được mở- Pause/Resume: Tạm ngưng/Tiếp tục thực thi test case đang

chạy- Step: thực thi từng bước một trong test case. Chỉ có tác dụng

khi test case đang tạm ngưng - Apply Rollup Rules: Chức năng đặc biệt cho phép chúng ta

nhóm nhiều action nhỏ thành một action lớn - Record Sao chép lại hành động của chúng ta và ghi ra danh

sách action.- Table/Source danh sách các action trong test case- Command danh sách các action mà Selenium IDE đang hỗ trợ- Target định nghĩa control mà chúng ta đang tương tác.  - Value dữ liệu test- Log thông tin về action đang được thực thi- Reference hướng dẫn sử dụng action đang được chọn- UI-Element and Rollup được sử dụng ở mức advance, khi mà

chúng ta tự thiết kế các nhận diện control hay gom nhóm actionỨng dụng test trang web http://bankatmhaui.somee.com/như sau:

- Mở trang ATM chạy lên- Nhập mã tài khoản- Xem thông báo lỗi.

Công cụ kiểm thử hiệu năng

2.1.2. Công cụ Jmeter Apache Jmeter2.1.2.1. Khái niệmJmeter Apache Jmeter là một ứng dụng mã nguồn mở, phát triển hoàn

toàn trên Java, được thiết kế để kiểm thử ứng dụng web. Ứng dụng được sử dụng để kiểm tra hiệu năng cả tĩnh và động (files, Servlets, Perl, scripts, Java Objects, Data Bases and Queries, FTP Servers …)

2.1.2.2. Ưu điểm và một số đặc điểmDưới đây là hình biểu diện giao diện chính của công cụ:

25

Page 26: Báo cáo môn đảm bảo chất lượng phần mềm

Kiểm tra tải và kiểm tra hiệu năng theo nhiều kiểu khác nhau: Web – HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, Mail – POP3(S) and IMAP(S).

Rất nhẹ, Không cần cài đặt, miễn phí.

Nền tảng xử lý đa luồng cho phép mô phỏng nhiều mẫu bởi nhiều thread của các chức năng khác nhau trên các thread group khác nhau

Dễ dàng thêm các plugin và tạo các báo cáo phù hợp yêu cầu.

Nhược điểmĐược hỗ trợ mạnh bởi cộng đồng open source.

Sun’s JRE phải được cài đặt.

Chỉ sử dụng được với ứng dụng web.

Kết quả Stress testing có thể khó xác định chính xác.

Khó khăn khi thực hiện các kịch bản kiểm thử phức tạp.

Khó thực hiện Recording b.Load runner Load Runner là sản phẩm của Hewlett-Packard. Load Runner chia làm 3 thành phần:

Virtual User Generator: cho phép xác định hành động của người dùng thực hiện trong ứng dụng.

Controller: cho phép tạo các script và chạy thông qua một lịch đặt sẵn.

Results and Analysis: cho phép tổng hợp kết quả và phân tích chi tiết kết quả kiểm thử.

Ưu điểm:- Không cần cài đặt ở trên máy chủ của ứng dụng cần kiểm tra.- Sử dụng ngôn ngữ Ansi C là ngôn ngữ lập trình mặc định.- Khả năng giám sát và phân tích tốt, với các biểu đồ dễ hiểu.

26

Page 27: Báo cáo môn đảm bảo chất lượng phần mềm

- Hỗ trợ tất cả các giao thức.- Dễ dàng Recording và tạo các script

Nhược điểm:- Tài liệu hướng dẫn kĩ càng và chi tiết. - Tốn chi phí để mua bản quyền.- Kích cỡ file cài đặt rất lớn, chiếm nhiều phần cứng, thích hợp trên

Windows.- Giới hạn số user có thể chạy.

PHẦN V. TỔNG KẾTTrong bài tập này, chúng em xin giới thiệu về kiểm thử Website. Qua đấy,

chúng em cũng đã làm rõ được một rất vấn đề rất quý báu và bổ ích cho thực tế cũng như môn đảm bảo chất lượng phần mềm. Chúng em hiểu được như thế nào là đảm bảo chất lượng phần mềm,kiểm thử phần mềm và kiểm thử Website và một số phương pháp hữu ích để kiểm thử Website. Ngoài ra thì chúng em cũng đã giới thiệu được một số các công cụ kiểm thử ứng dụng Web với nhứng tính năng, ưu điểm nổi bật và các mặt hạn chế chảu từng công cụ. Qua đây , chúng em cũng giúp cho mọi người lựa chọn được công cụ kiểm thử, đặc biệt là kiểm thử Website cho phù hợp với từng project của mình. Một lần nữa, chúng mình xin cảm ơn thầy giáo và các bạn đã tạo điều kiện để mình làm được nhưng điều trên.

Xin chân thành cảm ơn!

27

Page 28: Báo cáo môn đảm bảo chất lượng phần mềm

PHẦN IV. TÀI LIỆU THAM KHẢO Để có được những kiến thức bổ ích này, nhóm chúng em đã không ngừng

tìm kiếm các tài liệu trân mạng như:http://www.testingvn.com/viewtopic.php?f=11&t=17767

https://viblo.asia/NguyenThiHuyenCham/posts/d6BAMYV9Gnjzhttps://viblo.asia/ThuMaiNguyen/posts/KAyQMpapG0Ek

http://www.cse.hcmut.edu.vn/~hiep/KiemthuPhanmem/LyThuyetViet/Chuong01.pdf

http://dlib.ptit.edu.vn/bitstream/123456789/1246/1/BG_DambaoCLPM.pdf

http://forums.testervn.com/archive/index.php/t-1446.htm

http://www.testingvn.com/viewtopic.php?f=14&t=438&start

http://luanvan.co/luan-van/nghien-cuu-kiem-thu-hieu-nang-cua-ung-dung-web-49498/

28