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 25



ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ VŨ MINH HIẾU

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
Ngành: Công nghệ Thông tin
Chuyên ngành: Công nghệ Phần mềm
Mã số: 60.48.10

LUẬN VĂN THẠC SĨ



2

LỜI CAM ĐOAN
Tôi xin cam đoan kết quả đạt đƣợc trong luận văn là sản phẩm của riêng
cá nhân, không sao chép lại của ngƣời khác. Trong toàn bộ nội dung của luận văn,
những điều đƣợc trình bày hoặc là của cá nhân hoặc đƣợc tổng hợp từ nhiều nguồn tài
liệu. Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và đƣợc trích dẫn hợp pháp.
Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định
cho lời cam đoan của mình.

Hà Nội, ngày 18 tháng 11 năm 2008

Vũ Minh Hiếu
3

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

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
5

3.3.3 Biểu đồ trình tự 69
3.3.4 Biểu đồ trạng thái 70
3.3.5 Biểu đồ hợp tác 71
3.3.6 Biểu đồ lớp 71
3.3.7 Mô hình dữ liệu 72
3.4 Chạy thử chƣơng trình 73
 Màn hình chính 73
 Lựa chọn hình thức kiểm thử đơn vị (Unit Test) 73
 Lựa chọn các đơn vị trong danh sách để kiểm thử 74
 File chứa dữ liệu kiểm thử 75
 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

XML

PM
PTPM

Common Language Runtime
Dynamic Link Library
EXE Intergrated Development
Graphical user interface
Environment

Microsoft Intermediate
Language
eXtensible Markup
Language

7

XP
QTP

JVM
Extreme Programming
QuickTest Professional

Java Virtual Machine
Lập trình cực đoan
Công cụ kiểm thử phần mềm do hãng
Mecury cung cấp
Máy ảo Java

8

THÔNG TIN HÌNH VẼ
Hình vẽ
Trang
Hình 1.1: Mô hình tổ chức Visual Studio Team System 2008 Team
Foundation Server
Hình 1.2: Giao diện QuickTest Professional
Hình 1.3: Logo JMeter
Hình 1.4: 6 bƣớc của kiểm thử phần mềm tự động
Hình 2.1: Mối tƣơng quan giữa phát triển và kiểm thử phần mềm
Hình 3.1: Mô hình quá trình xử lý tách thông tin
Hình 3.2: Mô hình xử lý sinh kịch bản kiểm thử
Hình 3.3: Mô hình nghiệp vụ
Hình 3.4: Ca sử dụng mức gộp

75
76
77
77

9

THÔNG TIN BẢNG
Bảng
Trang
Bảng 3.1: Không gian tên .NET System
Bảng 3.2: Mã nguồn để kiểm thử phƣơng thức objAdvancedCalc.Square()
Bảng 3.3: Mã nguồn kiểm thử phƣơng thức objAdvancedCalc.SimpleCalc()
Bảng 3.4: Mã nguồn kiểm thử phƣơng thức objAdvancedCalc.Sum()
Bảng 3.5: Mã nguồn kiểm thử phƣơng thức objAdvancedCalc.GetType()
Bảng 3.6: Một số lớp (class) quan trọng trong không gian tên
System.Reflection
Bảng 3.7: Truy vấn thể loại System.Reflection.Assembly theo tên
Bảng 3.8: Truy vấn thông tin thể loại theo thể hiện của đối tƣợng
Bảng 3.9: Xác định thông tin thể loại của một tiến trình đang chạy
Bảng 3.10: Làm việc với Excel
Bảng 3.11: Các kiểu cung cấp bởi CodeDom để xây dựng không gian tên
Bảng 3.12: Cấu trúc của Test Script đƣợc sinh bởi không gian tên CodeDom
51
55
55
56
57
58


thông tin đƣợc hiểu theo nghĩa sau: “Công nghệ thông tin là tập hợp các phƣơng pháp
khoa học, các phƣơng tiện và công cụ kỹ thuật hiện đại - chủ yếu là kỹ thuật máy tính
và viễn thông - nhằm tổ chức khai thác và sử dụng có hiệu quả các nguồn tài nguyên
thông tin rất phong phú và tiềm năng trong mọi lĩnh vực hoạt động của con ngƣời và
xã hội”.
Công nghệ thông tin là sự kết hợp của hạ tầng phần cứng và nền tảng phần mềm.
Hạ tầng phần cứng sẽ ngày càng mạnh mẽ là tiền đề cho phép phần mềm cũng ngày
11

càng lớn và phức tạp hơn. Chính vì lý do này mà Công nghệ phần mềm (quy trình phát
triển phần mềm) đã đƣợc chú tâm bàn thảo từ rất sớm nhằm tìm ra những phƣơng pháp
để phát triển phần mềm thuận tiện có chất lƣợng cao đáp ứng tốt nhu cầu ngày càng đa
dạng và phức tạp.
Hầu hết các quy trình phát triển phần mềm đều trải qua các bƣớc từ xác định yêu
cầu, phân tích, xây dựng, kiểm thử, cho tới triển khai và bảo trì. Trong đó kiểm thử
phần mềm là một công việc khá phức tạp, tốn nhiều công sức và cũng là điều kiện tiên
quyết cho một sản phẩm phần mềm có chất lƣợng tốt.
Bất kỳ sản phẩm phần mềm nào cho dù đã áp dụng kỹ thuật kiểm thử tiên tiến
nhất hiện nay đều có phát sinh lỗi. Một số lỗi đã đƣợc phát hiện và chỉnh sửa trong
thời gian lập trình. Một số khác đƣợc tìm ra và chỉnh sửa trong các hình thức kiểm thử
(vd: kiểm thử module). Các doanh nghiệp phần mềm đều nhận ra một thực tế là có
nhiều lỗi phần mềm vẫn chƣa đƣợc phát hiện và một số sẽ đƣợc sửa sau đó thông qua
những bản vá lỗi hoặc nâng cấp. Kiểm thử là điều kiện tiên quyết cho một phần mềm
hoàn thiện, tuy nhiên với kỹ thuật kiểm thử hiện nay việc đảm bảo cho một phần mềm
hoàn hảo (không có lỗi) là một việc rất khó khăn, tốn thời gian, và tƣởng chừng nhƣ
không thể. Theo thống kê của Tassey năm 2002, thì lỗi trong những phần mềm đóng
gói gây thiệt hại cho nền kinh tế Mỹ khoảng 59,5 tỷ USD [9].
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

- 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 Dot
Net và thử nghiệm.
Cấu trúc luận văn
Luận văn sẽ đƣợc chia thành 3 chƣơng chính dựa vào nội dung nêu trên:
- Chƣơng 1: Khái quát về kiểm thử phần mềm.
- Chƣơng 2: Phƣơng pháp và các thể loại kiểm thử phần mềm.
- 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.
13

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

thăm dò thời tiết Sao Hỏa của NASA vào tháng 10 năm 1999. Nguyên nhân của sự
việc là do trục trặc trong một bộ phận của phần mềm ở chức năng chuyển đổi chuẩn
độ đo của Anh sang chuẩn độ đo mét. Năm 2002, ngƣời ta đã phát triển một module
dành cho việc kiểm thử dụng cụ Quang học nhằm đảm bảo không có việc lẫn lộn giữa
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,
15

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, 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

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
17 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ử chịu tải (Load Test), và các kiểm thử thủ công.
Thực hiện kiểm thử bằng cách sử dụng môi trƣờng phát triển tích hợp của Visual
Studio (IDE Visual Studio). Ngoài ra, có thể chạy các nhóm thử nghiệm hoặc kiểm tra
bất kỳ đơn vị thử nghiệm độc lập nào khác bằng cách sử dụng dòng lệnh (command
line).
Do các công cụ thử nghiệm đƣợc tích hợp với các thành phần khác của Visual
Studio Team System, nên kiểm thử viên có thể lƣu trữ kết quả vào cơ sở dữ liệu, tạo ra
các hình thức báo cáo khác nhau, so sánh các loại dữ liệu, và xem có bao nhiêu lỗi, là
những lỗi nào đã đƣợc tìm thấy bởi công cụ kiểm thử.
Đây quả là một công cụ mạnh mẽ mà Microsoft trang bị cho bộ sản phẩm Visual
Studio của mình. Với lợi thế là tích hợp chặt chẽ vào môi trƣờng phát triển phần mềm,

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
quản lý Object Repository.
- Thực tế cho thấy, QTP thực hiện kiểm thử tự động trên nhiều trình duyệt
cùng lúc tốt hơn những công cụ khác.
- Với chức năng Recovery Scenarios, QTP cho phép xử lý những sự kiện
hoặc lỗi không thể đoán trƣớc có thể làm kịch bản bị dừng trong khi đang
chạy.
- QTP có khả năng hiểu kịch bản kiểm thử của Mercury Winrunner (một
công cụ kiểm tra khác của Mercury).
Nhược điểm:
- Chƣa hỗ trợ tốt trên nhiều nền tảng công nghệ khác nhau.
- Giá thành khá cao: cho một máy 9.000 USD; cho nhiều máy dùng cùng
lúc 12.000 USD.
 JMeter
20 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ỳ

- e-Test suite - Empirix
- Webking - Parasoft
- WetFT - RadView Software
Công cụ kiểm thử chịu tải (performance/load-test):
- LoadRunner - Mercury Interactive
- Astra LoadTest - Mercury Interactive
- QACenter - Compuware
- WebLoad - RadView Software
- Rational Suite TestStudio - IBM Rational
- SilkPerformer - Segue
- e-Test suite - Empirix
- webking - Parasoft
- 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
22

- FarSight - Empirix
- Rational Suite TestStudio - IBM Rational
Công cụ quản lý kiểm thử (test-management):
- QA Director - Compuware
- TestDirector - Mercury Interactive
- Rational Suite TestStudio - IBM Rational
- SilkPlan Pro - Segue
Với tƣ cách là một ngƣời làm việc trực tiếp trong lĩnh vực sản xuất phần mềm và
là ngƣời nghiên cứu Luận văn này, tôi đã đánh giá cao những khả năng tuyệt vời của
các công cụ kiểm thử hiện có, mặc dù tính tự động và hiệu quả của chúng chƣa đƣợc

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.
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
về tiến trình phần mềm. Giống nhƣ các tiến trình phần mềm, các kiểm thử
viên trở nên hiểu biết sâu sắc hơn về sản phẩm và các vấn đề tiềm tàng mà
họ có thể dự đoán trƣớc. Các công cụ kiểm thử tự động sau đó có thể đƣợc
bổ sung vào để làm việc với từng vấn đề cụ thể.
 Các tổ chức đã phát triển một mô hình phát triển phần mềm mang tên “lập
trình cực đoan” (Extreme Programming - XP) cho những dự án có rủi ro
cao trong do yêu cầu phần mềm không thống nhất. Họ không làm rõ đƣợc
chi tiết các yêu cầu ngay từ đầu. Thay vào đó mã nguồn của họ có thể
hoàn toàn đƣợc chỉnh sửa hoặc cập nhật thƣờng xuyên. Các kịch bản kiểm
thử là một phần của mã nguồn điều khiển cùng với mã nguồn của chƣơng
trình. Trên thực tế, kiểm thử tự động khó có thể áp dụng cho mô hình XP
do những kịch bản kiểm thử có thể đƣợc chỉnh sửa và trả về với mỗi quá
trình phát triển tích hợp.
 Hiếm khi một tổ chức có thể không chú ý tới những công cụ kiểm thử tự
động. Để quản lý chất lƣợng, việc phát triển một công cụ kiểm thử tự động
là một bƣớc thúc đẩy cho việc phát triển dự án.
Vòng đời của một mô hình phát triển phần mềm cũng tác động tới việc mở rộng
các tiến trình kiểm thử tự động:
24

 Thƣờng thì việc thay đổi xảy ra thƣờng xuyên trong giai đoạn bắt đầu dự
án. Mục đích của ta là phát triển một công tụ để sinh tự động các kịch bản
kiểm thử, nó cần phản ánh đƣợc những thay đổi đồng thời đem lại lợi ích
và hiệu quả đối với những sản phẩm không có tính thống nhất hay dễ bị
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


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