Nghiên cứu kỹ thuật kiểm thử phần mềm và ứng dụng trên môi trường DOT NET - Pdf 43

Ket-noi.com kho tai lieu mien phKet-noi.com kho tai lieu mien phii

MỤC LỤC
LỜI CẢM ƠN ............................................................................................................. 1
LỜI CAM ĐOAN ........................................................................................................ 2
MỤC LỤC ................................................................................................................... 3
BẢNG CÁC TỪ VIẾT TẮT, KÝ HIỆU ...................................................................... 6
THÔNG TIN HÌNH VẼ............................................................................................... 8
THÔNG TIN BẢNG ................................................................................................... 9
MỞ ĐẦU ................................................................................................................... 10
Đặt vấn đề .............................................................................................................. 10
Nội dung của đề tài ................................................................................................ 12
Cấu trúc luận văn ................................................................................................... 12
CHƯƠNG 1: KHÁI QUÁT VỀ KIỂM THỬ PHẦN MỀM ....................................... 13
1.1 Tổng quan .......................................................................................................... 13
1.2 Vai trò của kiểm thử phần mềm .......................................................................... 13
1.3 Các công cụ kiểm thử phổ biến hiện nay ............................................................. 16
1.4 Những lợi ích của kiểm thử tự động .................................................................... 22
1.4.1 Áp dụng cho mô hình phát triển phần mềm XP ............................................... 24
1.4.2 Đối với các kiểm thử viên ............................................................................... 25
1.5 Phương pháp để kiểm thử tự động ...................................................................... 26
1.6 Kiểm thử phần mềm và các ngôn ngữ lập trình ................................................... 28
1.7 Kịch bản kiểm thử .............................................................................................. 31
1.8 Kết chương ......................................................................................................... 33
CHƯƠNG 2: PHƯƠNG PHÁP VÀ CÁC THỂ LOẠI KIỂM THỬ PHẦN MỀM...... 34
2.1 Tổng quan .......................................................................................................... 34
2.2 Các phương pháp kiểm thử ................................................................................. 35
2.2.1

Kiểm thử tĩnh – Static testing ................................................................... 35



Kiểm thử mức hệ thống - System testing ................................................. 42

2.4.4

Kiểm thử chấp nhận sản phẩm - Acceptance Test ................................... 44

2.4.5 Kiểm thử hồi quy - Regression Test ........................................................ 44
2.4.6 Kiểm thử tính đúng – Correctness testing:................................................ 45 2.5
Các phương pháp kiểm thử con người ................................................................ 45
2.5.1

Tổng duyệt – Walkthrough ...................................................................... 46

2.5.2

Thanh tra mã nguồn – Code Inspection .................................................... 46

2.6 Kết chương ......................................................................................................... 47
CHƯƠNG 3: NGHIÊN CỨU XÂY DỰNG CÔNG CỤ KIỂM THỬ PHẦN MỀM TỰ
ĐỘNG TRÊN MÔI TRƯỜNG .NET ......................................................................... 48
3.1 Đặt vấn đề .......................................................................................................... 48
3.2 Đặc điểm của môi trường DOT NET và kiểm thử tự động .................................. 49
3.2.1 Sử dụng C# trong kiểm thử tự động ................................................................ 53
3.2.2 .NET Reflection .............................................................................................. 58
3.2.3 Spreadsheets và XML ..................................................................................... 61
3.2.4 Không gian tên .NET CodeDom ..................................................................... 63
3.3 Phân tích và thiết kế hệ thống ............................................................................. 66
3.3.1 Mô hình nghiệp vụ và các yêu cầu của hệ thống .............................................. 66
3.3.2 Phân tích các trường hợp sử dụng ................................................................... 68


Sinh kịch bản kiểm thử .......................................................................................

75  Thực thi kịch bản kiểm thử ................................................................................. 76
3.5 Thử nghiệm và đánh giá ..................................................................................... 78
TÀI LIỆU THAM KHẢO.......................................................................................... 81


4

MỞ ĐẦU
Đặt vấn đề
Công nghệ thông tin là một trong những thuật ngữ được nhắc đến nhiều nhất hiện
nay, nó xuất hiện trên các mặt báo, các phương tiện truyền thông, trên mạng Internet
cho tới những tài liệu cũng như báo cáo chuyên ngành. Điều này cũng dễ hiểu vì công
nghệ thông tin được coi là một cuộc cách mạng cho sự phát triển của xã hội loài người.
Kể từ năm 1981 khi chiếc máy vi tính đầu tiên của IBM được giới thiệu trên thị trường
đánh dấu một mốc quan trọng cho sự tiến bộ của khoa học kỹ thuật. Cho tới thời điểm
hiện tại, trải qua một khoảng thời gian rất ngắn so với chiều dài lịch sử của xã hội loài
người, tuy nhiên công nghệ thông tin đã phát triển rất nhanh (còn được diễn tả bằng
cụm từ: “bùng nổ”). Công nghệ thông tin đã được ứng dụng trong hầu hết các lĩnh vực
của xã hội, và thực tế đã chứng minh được tầm quan trọng của nó.
Trong hai thập kỷ qua phần mềm đã trở thành một thành phần của hầu hết các
doanh nghiệp. Hầu như tất cả các doanh nghiệp hoạt động trong mọi lĩnh vực tại Việt
Nam cũng như trên toàn Thế Giới đều sử dụng phần mềm. Phần mềm được áp dụng
trong việc hỗ trợ phát triển, sản xuất, tiếp thị, và hỗ trợ cho các sản phẩm - dịch vụ của
doanh nghiệp.
Thúc đẩy sự phát triển của công nghệ thông tin luôn là chính sách được ưu tiên
hàng đầu của các quốc gia nhằm làm tiền đề cho sự phát triển của khoa học kỹ thuật và
kinh tế - xã hội.

Kiểm thử chiếm khoảng 25% tới 50% tổng chi phí phát triển một phần mềm. Bộ
phận kiểm thử thường gồm các kỹ sư với vai trò là kiểm thử viên, người sử dụng công
cụ, và những người phát triển công cụ kiểm thử. Ngân sách và con người đều đóng vai
trò quan trọng vì một sản phẩm trong quá trình xây dựng phải được kiểm thử một cách
tốt nhất và hiệu quả nhất.
Vào năm 2008, tổng doanh thu của phần mềm Việt Nam đạt trên 500 triệu USD
(tổng doanh thu trên toàn thế giới vào khoảng 519 tỷ USD - theo:
http://softwaremag.com). Số lượng các kỹ sư và lập trình viên tại Việt Nam năm 2008
vào khoảng 13.500 người. Những con số trên dựa trên tổng kết của Hiệp hội Doanh
nghiệp phần mềm Việt Nam (vinasa: http://www.vinasa.org.vn). Giảm chi phí phát
triển phần mềm và nâng cao chất lượng phần mềm là mục tiêu quan trọng của các
ngành công nghiệp phần mềm Việt Nam. Một nghiên cứu tương tự cũng cho biết rằng
các ngành công nghiệp phần mềm bị thiệt hại về kinh tế, vì không có đủ cơ sở hạ tầng
cho việc kiểm thử phần mềm.


6
Hiện nay có khá nhiều công cụ kiểm thử được giới thiệu trên thị trường. Tuy
nhiên, vẫn còn phải xem xét về khả năng đáp ứng được nhu cầu về đảm bảo chất lượng
phần mềm xét trên nhiều khía cạnh khác nhau. Các công cụ kiểm thử có thể kiểm thử
phần mềm với một số cấp độ tự động, qua đó những kiểm thử viên có thể giành thời
gian để xem xét và giải quyết những vấn đề thuộc phạm vi có nhiều rủi ro hơn, tuy
nhiên, tính tự động của các công cụ mới chỉ dừng ở các kỹ thuật đơn giản và những
kịch bản kiểm thử bao gồm chuỗi sự kiện nhấn chuột hoặc bàn phím. Kiểm thử viên
mong đợi các công cụ kiểm thử hiệu quả và linh hoạt hơn với các tính năng tự động
cao để có thể theo kịp sự phát triển rất nhanh trong công nghệ phần mềm hiện nay.
Mục tiêu của Luận văn là nghiên cứu kỹ thuật phát triển một công cụ kiểm thử tự
động, có thể kiểm thử một sản phẩm phần mềm phức tạp một cách hiệu quả với yêu
cầu tác động của con người là ít nhất.




7

CHƯƠNG 1: KHÁI QUÁT VỀ KIỂM THỬ PHẦN MỀM
1.1 Tổng quan
Kiểm thử phần mềm là một trong những khâu quan trọng của quy trình phát triển
phần mềm nhằm kiểm tra xem phần mềm làm ra có những lỗi gì cần khắc phục. Kiểm
thử không thể chứng minh được phần mềm là hết lỗi mà nó chỉ giúp cho người viết mã
nguồn tìm ra và có biện pháp khắc phục càng nhiều lỗi càng tốt.
Bản chất của kiểm thử phần mềm là các cách thức làm việc với máy tính và
chương trình, tuy nhiên với những phần mềm lớn, việc kiểm thử cũng yêu cầu có sự
phối hợp của nhiều nhóm chuyên môn phụ trách các thành phần riêng biệt, cho nên
kiểm thử cũng cần các kĩ năng của con người.
Để thực hiện tốt công việc kiểm thử, ngoài nắm vững các kĩ thuật kiểm thử điển
hình, kiểm thử viên cũng cần xây dựng kế hoạch kiểm thử, chuẩn bị dữ liệu kiểm thử,
tiến hành kiểm thử, viết báo cáo về kết quả kiểm thử, và cần biết quản lí toàn bộ công
việc kiểm thử.
Kiểm thử cần được nhìn theo nhiều góc độ khác nhau liên quan tới phần mềm:
kiểm thử chức năng, kiểm thử hiệu năng, cấu hình, an ninh... và liên quan tới qui trình
kiểm thử: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống, kiểm thử chấp nhận;
đồng thời phải thực hiện quản lí toàn bộ quá trình kiểm thử: ghi lại hoàn cảnh lỗi, việc
sửa chữa, kiểm thử rà lại...

1.2 Vai trò của kiểm thử phần mềm
Các lỗi trong phần mềm không chỉ làm phiền phức và bực mình cho người dùng
mà chúng còn gây tổn thất rất lớn cho nền kinh tế. Đơn cử hàng năm nền kinh tế Mỹ
thiệt hại khoảng 59,5 tỷ USD do lỗi phần mềm gây ra (thông số được công bố bởi Viện
Công nghệ và Tiêu chuẩn quốc gia (NIST) thuộc Bộ Thương mại Mỹ).
Theo Giám đốc Arden Bement của NIST, hiện nay mọi ngành ở Mỹ gần như đều

các phép đo. Nếu Vệ tinh thăm dò thời tiết của Sao Hỏa được trang bị module này thì
đã không xảy ra tai nạn đáng tiếc trên đây.
Đảm bảo chất lượng phần mềm cần được quan tâm một cách đúng mức, và đòi
hỏi những người liên quan có kiến thức và đánh giá đúng về vai trò của kiểm thử phần
mềm, gồm: các quản trị viên cao cấp, quản lý dự án, nhân viên phát triển phần mềm,
nhân viên kiểm thử phần mềm và người dùng cuối. Khi bắt đầu một dự án dựa theo các
mô hình phát triển phần mềm, những người dùng cuối, lập trình viên, kiểm thử viên,


9
và quản trị viên cao cấp đều phải nắm được yêu cầu phần mềm, các đặc tả phần mềm
và các chiến lược kiểm thử.
Trong hầu hết các mô hình phát triển phần mềm thì kiểm thử được lên kế hoạch
ngay từ thời điểm bắt đầu dự án và được thực thi song song với vòng đời phát triển của
phần mềm. Chúng ta sẽ không thể kiểm thử một sản phẩm nếu không có hiểu biết chi
tiết về nó. Kiểm thử một sản phẩm đang trong giai đoạn được xây dựng sẽ luôn là một
trải nghiệm bổ ích cho các kiểm thử viên. Thời gian và nỗ lực của kiểm thử viên phụ
thuộc vào độ phức tạp của một sản phẩm cũng như kinh nghiệm của anh ta trong lĩnh
vực kiểm thử phần mềm.
Sẽ rất hữu ích nếu ta sử dụng các công cụ kiểm thử tự động, điều này sẽ hạn chế
bớt việc các kiểm thử viên phải giành quá nhiêu thời gian cho công việc nghiên cứu
một sản phẩm mới. Qua đó họ có thể giành thời gian nhiều hơn tập trung cho những
vấn đề, những yếu tố phức tạp và rủi ro cao trong khi vận hành phần mềm.
Kiểm thử phần mềm là một tiến trình thử thách, trải nghiệm một ứng dụng để tìm
ra lỗi và để xác định rằng chúng đáp ứng được những yêu cầu nhất định. Trong vòng
đời phát triển phần mềm, các lập trình viên và kiểm thử viên cùng làm việc để tìm ra
lỗi và đảm bảo cho chất lượng của sản phẩm. Các sản phẩm phần mềm đã được chuyển
giao sẽ phải bao hàm tất cả các chức năng được yêu cầu và phải tương thích với hạ
tầng phần cứng của khách hàng.
Trong một thời gian dài, kiểm thử phần mềm đã được thực hiện một cách thủ

thực hiện. Tạo và lập tài liệu cho dữ liệu kiểm thử với các công cụ hiện tại đều hoàn
toàn sử dụng sức người. Do vậy, khả năng tự động của những công cụ kiểm thử sẽ bị
hạn chế.
Nội dung của luận văn là nghiên cứu để phát triển một công cụ kiểm thử phần
mềm sao cho kiểm thử viên không cần viết các kịch bản kiểm thử bằng tay hoặc phải
ghi lại các kịch bản kiểm thử một cách thủ công. Tiến trình kiểm thử phần mềm sẽ
được thực thi với yêu cầu tương tác trực tiếp từ con người là ít nhất. Công cụ được
thiết kế để giảm bớt và sát với yêu cầu của hầu hết các sản phẩm phần mềm. Đồng thời
đây cũng là cách thức để tạo ra các module có thể sử dụng lại để kiểm thử nhiều mã
nguồn khác nhau.

1.3 Các công cụ kiểm thử phổ biến hiện nay
Trên thị trường hiện nay có nhiều công cụ kiểm thử phần mềm. Với các nhà cung
cấp như: Rational Software của IBM, Mercury Interactives, Segue Software. Hiện có
nhiều nhà cung cấp khác và cũng có một số công cụ kiểm thử nguồn mở như Ant,
JUnit, và JProbe… Sau đây là một số công cụ kiểm thử phần mềm được sử dụng phổ
biến hiện nay:
 Visual Studio Team System Test Edition


11

Hình 1.1: Mô hình tổ chức Visual Studio Team System 2008 Team Foundation Server
Visual Studio Team System Test Edition bao gồm một bộ công cụ thử nghiệm đã
được tích hợp chặt chẽ với Visual Studio. Nó không chỉ làm việc trong khuôn khổ của
nền tảng kiểm thử, mà còn tham gia vào một nền tảng lớn hơn tham gia vào các khâu
khác trong toàn bộ vòng đời của phần mềm.
Test Edition cho phép ta tạo, quản lý, chỉnh sửa và chạy công việc kiểm thử, đồng
thời cũng nhận được và lưu trữ kết quả kiểm thử. Visual Studio tích hợp một vài loại
thử nghiệm bao gồm: kiểm thử đơn vị (Unit Test), kiểm thử web (Web Test), kiểm thử

cũng phù hợp trong tình huống chuyển giao công việc mà người mới tiếp nhận chưa có
thời gian hoặc không hiểu kịch bản vẫn có thể thực hiện được.
QTP giúp chúng ta kiểm thử phần mềm theo hướng chức năng trên rất nhiều loại
chương trình phần mềm khác nhau. Tuy nhiên Mercury chỉ hỗ trợ sẵn một số loại
chương trình thông dụng như: Ứng dụng Windows; Ứng dụng web theo chuẩn HTML,
XML; Ngôn ngữ lập trình C#, VB NET.
Một số loại chương trình khác yêu cầu cài đặt thêm thành phần bổ sung của QTP
thì mới thực hiện kiểm tra được, như: .NET Framework 1.1, 2.0, 3.5; Các đối tượng


13
chuẩn của .NET và các đối tượng khác thừa kế từ các đối tượng chuẩn; Java; Sun JDK;
và IBM JDK.
QTP sử dụng ngôn ngữ VBScript để viết kịch bản kiểm thử.
Ưu điểm:
-

Dễ sử dụng, bảo trì, tạo kịch bản kiểm thử nhanh. Cung cấp dữ liệu kiểm
thử rõ ràng và dễ hiểu.

-

Kiểm thử phiên bản mới của ứng dụng với rất ít sự thay đổi. Ví dụ khi ứng
dụng thay đổi nút tên “Login” thành “Đăng nhập”, thì chỉ cần cập nhật lại
Object Repository (OR – được giải thích ở phần sau) để QTP nhận ra sự
thay đổi đó mà không cần thay đổi bất cứ kịch bản kiểm thử nào.

-

Hỗ trợ làm việc theo nhóm thông qua việc chia sẻ thư viện, thống nhất


14
Hình 1.3: Logo JMeter
JMeter của Apache Jakarta là công cụ được phát triển bởi ngôn ngữ Java cho
phép kiểm tra máy chủ Web và thêm vào đó là khả năng kiểm tra các ứng dụng với các
giao thức khách như JDBC, FTP, và LDAP. Thực tế, với công cụ mở rộng và cho phép
người dùng tạo ra các tình huống giả định thì người dùng có khả năng kiểm tra bất kỳ
giao thức nào thông qua Java. Với chế độ mặc định nó có thể đưa ra những file CSV để
dễ dàng truyền các tham số vào cơ sở dữ liệu và đưa ra được rất nhiều thông tin hơn
CSV. Đây là công cụ được rất nhiều người mới vào nghề sử dụng trong vô số các công
cụ khác đang có trên mạng Internet.


JUnit, NUnit
JUnit là một framework đơn giản dùng cho việc tạo các Unit Testing tự động, và

chạy các tác vụ kiểm thử có thể lặp đi lặp lại. Nó là một phần của họ kiến trúc xUnit
cho việc tạo các unit testing. JUnit là một chuẩn trên thực tế cho unit testing trong
Java. JUnit về nguồn gốc được viết bởi 2 tác giả Erich Gamma và Kent Beck. Tương
tự, NUnit là phiên bản dùng cho các sản phẩm phát triển trên nền tảng .NET, nó có thể
tích hợp với Microsoft Visual Studio.
Đây là một bộ công cụ giành cho Unit Test rất hiệu quả và hoàn toàn miễn phí.
Tuy nhiên công cụ mới dừng ở việc kiểm thử thành phần, chưa mở rộng thêm các hình
thức kiểm thử khác.


Một số công cụ kiểm thử phổ biến khác
Công cụ kiểm thử thành phần (component hoặc unit test):
-




15
-

SilkTest - Segue Software

-

Rational Suite TestStudio - IBM Rational

-

TauTester - Telelogic

-

e-Test suite - Empirix

-

Webking - Parasoft

-

WetFT - RadView Software

Công cụ kiểm thử chịu tải (performance/load-test):
-


-

Test Perspective - Keynote Systems

-

LoadPro - Keynote Systems

Công cụ theo dõi thực thi (performance-monitoring):
-

Vantage - Compuware

-

Topaz - Mercury Interactive

-

OneSight - Empirix

-

FarSight - Empirix

-

Rational Suite TestStudio - IBM Rational

Công cụ quản lý kiểm thử (test-management):

Kiểm thử phần mềm vẫn luôn giữ một vai trò quan trọng trong ngành công
nghiệp phần mềm. Thường bao hàm việc đào tạo các kiểm thử viên và yêu cầu họ học
những kỹ thuật kiểm thử trước khi một dự án được bắt đầu. Cùng với khả năng cũng
như kinh nghiệm của đội ngũ kiểm thử tăng nên thì tính tự động trong công việc cũng
được nâng cao. Khi kiểm thử một sản phẩm hoàn toàn mới cũng chính là một quá trình
trau dồi kinh nghiệm cho mỗi kiểm thử viên. Những hiểu biết sâu sắc về dự án sẽ giúp
cho tính tự động trong công việc của họ tăng lên.
Về mặt kỹ thuật, rất nhiều tác vụ kiểm thử có thể được thực hiện một cách tự
động. Tuy nhiên, quản lý khả năng tự động hóa của các tác vụ kiểm thử cũng được coi
như các vấn đề về mặt kỹ thuật và cần được nghiên cứu kỹ càng. Quá trình phân tích
cần xác định rõ các thông tin sau:


Ngày nay các dự án phần mềm thường rất phức tạp và được giành để giải
quyết các vấn đề phức tạp. Các công cụ kiểm thử phần mềm thương mại
thường cần nhiều thời gian để tìm hiểu về một vấn đề riêng biệt và để theo
kịp công nghệ. Để đáp ứng được khung thời gian hạn chế của một dự án,
các kiểm thử viên cũng cần tự phát triển một công cụ kiểm thử cho riêng
mình để có thể bổ sung khiếm khuyết cho các công cụ kiểm thử thương
mại trên thị trường.



Đôi khi các kiểm thử viên cần xác định hoặc là kết hợp kiểm thử tự động
vào những dự án đang thực hiện hoặc sẽ kết hợp vào dự án hoàn toàn mới.


17
Bước đầu tiên của các tiến trình kiểm thử sẽ luôn liên quan tới kiểm thử
bằng tay. Các kiểm thử viên sử dụng chúng như là một cách để nghiên cứu

thay đổi.



Những công cụ kiểm thử thương mại có khả năng kiểm thử các thành phần
giao diện người dùng (GUI). Trong hầu hết thời gian, những người dùng
cần ghi lại một dãy các thao tác click chuột và nhấn bàn phím. Dữ liệu của
các kịch bản kiểm thử thường bị cứng hóa. Đôi khi các kịch bản kiểm thử
cũng cần xem xét lại và gỡ lỗi (debug) trước khi được đưa vào thi hành.
Trên thực tế việc sử dụng và dùng lại những công cụ này trong những sản


18
phẩm không ổn định sẽ là một thảm họa. Một công cụ kiểm thử tự động
cần có khả năng tự nhận biết và xác minh các thành phần giao diện người
dùng và tự sinh ra các dữ liệu dẫn hướng kịch bản kiểm thử.


Cùng với tiến bộ của công nghệ, việc lập trình cũng trở lên dễ dàng hơn.
Vòng đời phát triển phần mềm cũng ngắn hơn, đồng nghĩa với việc cho
phép ít thời gian hơn để kiểm thử. Một công cụ kiểm thử tự động sẽ làm
nhẹ bớt áp lực cho các kiểm thử viên để họ có nhiều thời gian hơn cho
việc nhận diện những vùng rủi ro cao của dự án.

1.4.1 Áp dụng cho mô hình phát triển phần mềm XP
Kent Beck tạo ra mô hình XP trong cuốn sách của ông mang tên Extreme
Programming Explained: Embrace Change (Addison-Wesley, 1999). Theo định nghĩa
XP là một kỹ thuật nhẹ nhàng tập trung cho việc lập trình những dự án phần mềm có
tính rủi ro cao. Nó tránh việc định rõ chi tiết các đặc tả và nhìn nhận các tác vụ một
cách đơn giản. Để thực hiện các vấn đề phức tạp, nó dựa vào dãy các tương tác và giao


1.4.2 Đối với các kiểm thử viên
Luận văn tập trung vào việc nghiên cứu để phát triển một công cụ để tự động
kiểm thử phần mềm. Sự thi hành kết hợp với quan điểm của kiểm thử viên với mục
tiêu “kiểm thử để tìm ra lỗi”. Với một công cụ kiểm thử tự động có thể sử dụng một
sản phẩm từ phối cảnh của người dùng cuối, có yêu cầu về chất lượng, và tỉ mỉ tới mức
chi tiết. Nó là một công cụ hữu ích cho cả người dùng có hiểu biết về kỹ thuật cũng
như chưa có hiểu biết về kỹ thuật. Nhiều khi một kiểm thử viên cũng được coi như một
lập trình viên giỏi. Công cụ này có thể viết kịch bản kiểm thử tốt như một kiểm thử
viên có kinh nghiệm và hiểu biết sâu sắc về quy trình phát triển phần mềm. Sau cùng
nó sẽ giảm bớt công việc nghiên cứu đề kiểm thử viên có thể tập trung vào những phần
dủi do cao hơn. Nếu sử dụng mô hình XP, ta sẽ nhận thấy công cụ kiểm thử tự động
cực kỳ hữu ích.
Ngày nay, thường thì những kiểm thử viên và lập trình viên làm việc chặt chẽ với
nhau trong một dự án. Một công cụ kiểm thử phần mềm không có đủ khả năng để giải
quyết tất cả các vấn đề có thể xảy ra. Đối với quản trị viên của dự án sẽ thực sự hữu
ích nếu đưa vào sử dụng cả kiểm thử thủ công và kiểm thử tự động trong cùng một dự
án phần mềm.
Với việc giao tiếp hiệu quả công việc kiểm thử tự động và thủ công sẽ bổ sung
cho nhau và tăng năng lực của nhau. Thực tế một quản trị viên có thể muốn có các
thành viên trong đội gồm những người đã có nhiều kinh nghiệm trong cả kỹ thuật kiểm


20
thử thủ công và kỹ thuật tự động. Một sản phẩm chất lượng được lợi từ đội kiểm thử
với những thành viên có những kinh nghiệm kiểm thử khác nhau. Vd, một số có thể có
kinh nghiệm với những công cụ trên thị trường, một số có thể kiểm thử thủ công
những vùng dủi do cao của một sản phẩm, trong khi số khác có thể có kinh nghiệm
trong việc sử dụng C#, VFB, C/C++, Java, hoặc những ngôn ngữ lập trình khác.



Tạo lập những kịch bản kiểm thử và thực thi các kịch bản kiểm thử này
bằng từng gói theo lịch trình (schedule manner.)


21


Kiểm thử Interface của các đối tượng và những thành phần phần mềm
khác (software component) với một tập dữ liệu định sẵn.



Truy cập một CSDL để xác thực kết quả kiểm thử.



Truy cập Window Registry để xác thực kết quả kiểm thử.

Dữ liệu kiểm thử và kết quả kiểm thử sẽ được thể hiện dưới dạng XML và MS
Excel worksheet. Tiến trình kiểm thử tự động có thể được trình bày với 6 bước như
Hình 1.4.
Chọn assembly

Sửa lỗi

Thu thập thông tin

Thực thi kịch bản kiểm thử


vào quy trình phát triển phần mềm của mình. Một vài công cụ kiểm thử phần mềm viết
kịch bản kiểm thử bằng ngôn ngữ Visual Basic 6.0 và thực thi kịch bản trong Visual
Studio IDE. Đồng thời cũng có nhiều tài liệu hướng dẫn cách viết kịch bản kiểm thử sử
dụng ngôn ngữ Visual Basic 6.0 một cách thủ công. Một vài công cụ khác được viết
bằng Java, như Junit, và Jprobe. Và các công cụ này để viết kịch bản kiểm thử cho
những phần mềm chạy trên Unix, Linux, và các nền tảng (platform) khác. Trong phạm
vi Luận văn này, tôi sẽ sử dụng C# của môi trường Microsoft Visual Studio .NET làm
ngôn ngữ lập trình cho cả công cụ và kịch bản kiểm thử.
Việc tự động hóa các mục tiêu tập trung chủ yếu vào các vấn đề từ một số khu
vực được xác định rõ ràng. Những vấn đề và các khu vực đó đã từng xảy ra các lỗi
phần mềm trong quá khứ. Các công cụ kiểm thử thường viết những kịch bản kiểm thử
với một số lặp đi lặp lại các mẫu (parttern) để kiểm thử các phương thức khác nhau
trong một lớp (class).
Nhìn chung chúng mô hình kiểm thử gồm các bước sau:
1. Thiết lập các thông số cần thiết.
2. Thực thi phương thức cần kiểm thử và bắt lỗi.
3. Trình bày các kết quả nhận được
Các phưng thức dưới quá trình kiểm thử hành xử theo các cách khác nhau. Mỗi
tiến trình kiểm thử sẽ về một giá trị. Các kiểm thử viên sẽ xem xét liệu kết quả trả về
có giống với kết quả mong đợi. Do đó, giá trị của kết quả trả về sẽ được trình bày sau
khi thực thi kiểm thử.


23
Một công cụ tự động kiểm thử sẽ được thực hiện để kiểm thử tất cả các khía cạnh
của một sản phẩm phần mềm.
Có thể dễ dàng viết các đoạn mã nguồn một cách thủ công khi không có nhiều đối
tượng để kiểm thử. Nhưng mất nhiều thời gian để viết mã cho một tập hợp số lượng
lớn lớp (class) và thành phần. Ngoài ra các kiểm thử viên sẽ mất nhiều thời gian để
hiểu được từng phương thức để có thể viết mã một cách chính xác. Mặt khác rất khó

một khái niệm mới. Luận văn sẽ không chỉ nghiên cứu cách làm thế nào để viết một
kịch bản kiểm thử cho một assembly, mà còn chỉ ra cách làm thế nào để phát triển một
công cụ để viết kịch bản kiểm thử một cách tự động. Về sau, các tổ chức khác nhau và
các dự án phần mềm với chức năng khác nhau có thể sử dụng phương pháp này cho
việc phát triển phần mềm. Để thực hiện giải pháp sẽ tập trung vào giải quyết các vấn
đề sau đây:


Làm thế nào để sử dụng những chức năng định trước của một ngôn ngữ
(trong trường hợp này là C #) mà lại trả về các thông tin liên quan tới
assembly trong quá trình kiểm thử.



Làm thế nào để tạo ra giao diện với những thành phần điều khiển đơn giản
mà có thể thể hiện được thông tin cũng như kết quả kiểm thử.



Làm thế nào để tạo và lưu giữ test case trong cơ sở dữ liệu (trong trường
hợp này là MS Excel và XML) để tự động tạo các kịch bản kiểm thử.



Làm thế nào để tạo một bản trình bày các thông tin của một thành phần
trong quá trình kiểm thử (trong trường hợp này là sử dụng một bảng tính
Excel.)




triển phần mềm các thông số này cũng thay đổi và kiểm thử viên sẽ phải chỉnh sửa
hoặc viết kịch bản kiểm thử. Quá trình này sẽ được lặp đi lặp lại cho đến khi sản phẩm
ổn định. Sau đó, các kịch bản kiểm thử có thể được chạy để thực hiện các dạng kiểm
thử: unit test, intergration test (kiểm thử tích hợp), hoặc regression test (kiểm thử hồi
quy). Trong toàn bộ quá trình, công việc của đội kiểm thử là cải thiện và gỡ lỗi các
kịch bản kiểm thử để đáp ứng và luôn đáp ứng theo những thay đổi của yêu cầu kiểm
thử.
Để giảm bớt sự nhàm chán và tốn thời gian khi tự viết kịch bản kiểm thử, các
công cụ kiểm thử tự động có khả năng phát hiện các thay đổi của phần mềm một cách
tự động. Nếu phần mềm có thay đổi thì công cụ sẽ viết một kịch bản kiểm thử mới cho
phù hợp. Nếu cấu trúc của phần mềm ổn định trong suốt quá trình phát triển, kịch bản
kiểm thử có thể chạy unit test, integration test, và regression test trong suốt quá trình
phát triển phần mềm.
Nguyên tắc để phát triển một sản phẩm phần mềm tốt là phải phát triển một kịch
bản kiểm thử tốt. Để tạo ra một kịch bản kiểm thử hiệu quả, các công cụ cần có cơ chế
để phản ánh (reflect) các thông tin chi tiết của dự án cần kiểm thử. Một kịch bản kiểm
thử được tạo ra bởi công cụ kiểm thử cần có các tính năng sau đây:


Reusability – Tính sử dụng lại: cần những nỗ lực rất lớn để phát triển
một công cụ kiểm thử, việc tái sử dụng các công cụ cho các dự án trong
tương lai là rất cần thiết. Tác giả đinh hướng phát triển công cụ để tự động
tạo ra những kịch bản có thể sử dụng lại dựa trên ngôn ngữ C#. Sửa dụng
lại các công cụ kiểm thử và khám phá một tập lệnh đã được biên dịch
thông qua các bước thử nghiệm theo tên, lớp, phương thức, và thuộc tính.
Một thử nghiệm cho các tập lệnh kiểm thử trong một trường hợp có thể



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status