(Post 02/07/2010) Có công cụ nguồn mở nào đáp
ứng nhu cầu của lĩnh vực kiểm định phần mềm? Và chúng ta phải cân nhắc
những yếu tố gì, tiêu chí nào để đưa ra quyết định lựa chọn giữa công
cụ nguồn mở và công cụ thương mại?
Sản xuất phần mềm
chuyên nghiệp ngày nay không thể không sử dụng các công cụ hỗ trợ. Chúng
là trợ thủ đắc lực (đôi khi là bắt buộc) giúp lực lượng phát triển phần
mềm nâng cao năng suất và chất lượng dự án. Tuy nhiên, một thực tế là
chi phí cho các phần mềm hỗ trợ thương mại là rất cao, đôi lúc làm cho
dự án không còn khả năng sinh lời ... Hơn nữa, với tình hình kinh tế hiện
nay, các doanh nghiệp gia công phần mềm đang phải gồng mình cung cấp các
gói dịch vụ giá thấp nhưng có chất lượng cao hơn để thu hút khách hàng.
Do vậy ban quản trị dự án luôn phải tìm cách tiết kiệm chi phí phát triển,
kiểm định cũng như vận hành dự án, trong khi vẫn đảm bảo chất lượng sản
phẩm đầu ra.
Các phần mềm mã
nguồn mở có thể đáp ứng cho nhu cầu trên. Mozilla Firefox, OpenOffice,
hay LAMP (Linux, Apache, MySQL, PHP)... là các tên tuổi được nhiều người
biết đến trong lĩnh vực phần mềm mã nguồn mở. Nhưng có công cụ mã nguồn
mở nào đáp ứng nhu cầu của lĩnh vực kiểm
định phần mềm? Và chúng ta phải cân nhắc những yếu tố gì, dựa trên
những tiêu chí nào để đưa ra quyết định lựa chọn giữa công cụ kiểm tra
mã nguồn mở và công cụ thương mại? Hy vọng bài viết này có thể giúp bạn
trả lời câu hỏi trên.
1. CÔNG CỤ KIỂM TRA TỰ
ĐỘNG MÃ NGUỒN MỞ
Cộng đồng mã nguồn mở có khá nhiều ứng dụng hỗ trợ việc
kiểm tra tự động, từ các công cụ kiểm tra tính năng, hiệu năng, đến công
cụ hỗ trợ kiểm tra hệ thống mạng, cơ sở dữ liệu... Dưới đây chúng tôi
chọn ra một số công cụ mã nguồn mở có uy tín trong lĩnh vực kiểm tra tự
động, cụ thể là kiểm tra tự động tính năng, hiệu năng của ứng dụng web.
JMETER
Là một công cụ chuyên dùng để kiểm tra hiệu năng của
các ứng dụng web, được viết bằng Java, JMeter có thể hoạt động trên các
hệ điều hành có hỗ trợ JVM (Java Virtual Machine) phiên bản 1.4 trở lên.
JMeter không đòi hỏi kiến thức lập trình chuyên sâu để sử dụng. Hiện nay
ứng dụng này đã được cải tiến để có thể đo lường hiệu năng hoạt động của
các đối tượng và giao thức sau: HTTP, HTTPS, SOAP, JDBC, LDAP, JMS, POP3
...
Các thành phần chính:
- Test Plan: Bao gồm các bước sẽ được JMeter thực thi.
- Thread Group: Đại diện cho người dùng ảo (virtual user), có thể
gồm các thành phần sau:
- Logic Controller: Cho phép điều chỉnh logic khi gửi các yêu
cầu đến đối tượng cần kiểm tra.
- Sampler: Cung cấp thông tin cho JMeter gửi các yêu cầu đến
máy chủ cần kiểm tra. Tùy theo giao thức kiểm tra, JMeter hỗ trợ
những loại sampler khác nhau.
- Config Element: Sử dụng để thêm vào những thay đổi/ cấu hình
cần thiết cho các sampler.
- Timer: Điều chỉnh khoảng thời gian dừng giữa các lần gửi yêu
cầu.
- Pre/Post Processor: Cho phép thực hiện một số bước cần thiết
ngay trước/ sau khi chạy một sampler nào đó.
- Assertion: Các phương pháp xác nhận thông tin trả về từ đối
tượng kiểm tra có đúng với mong đợi hay không.
- Listener: Cho phép thu thập thông tin kết quả. Có thể đưa ra
các báo cáo kết quả kiểm tra dạng đồ thị, hoặc xuất ra tập tin.
- WorkBench: Được xem như một vùng tạm để làm việc, lưu trữ. Tất
cả các thành phần bên trong WorkBench sẽ không được thực thi (trừ
khi nó được chuyển vào trong Test Plan).
JMeter có thể giả lập hàng ngàn người dùng ảo để thực
hiện đo lường, kiểm tra hiệu năng của đối tượng cần test dựa trên một
kịch bản dựng sẵn. Số lượng người sử dụng ảo bị hạn chế bởi cấu hình phần
cứng của máy chủ chạy test. Nhưng điều này có thể được khắc phục với phương
pháp kiểm tra phân tán. JMeter đồng thời cũng cung cấp một hệ thống báo
cáo kết quả kiểm tra linh động. Tính dễ sử dụng của công cụ này là không
cao nếu so sánh với các công cụ thương mại. Nhưng JMeter hiện đang được
sử dụng rộng rãi nên có một hệ thống tài liệu hỗ trợ rất tốt, từ các hướng
dẫn trên website, đến các diễn đàn và ebook.
SELENIUM
Selenium gồm một bộ các công cụ hỗ trợ kiểm tra tự động
tính năng của ứng dụng web, bao gồm: Selenium IDE, Selenium Remote Control
(RC), Selenium Core và Selenium Grid. Bộ công cụ này hoạt động tốt trên
nhiều hệ điều hành và có thể thực thi kiểm tra trực tiếp trên các trình
duyệt web khác nhau.
- Selenium IDE: Một ứng dụng mở rộng
cho Mozilla Firefox phiên bản 2.0 trở lên. Công cụ này cung cấp chức năng
"thu và chạy lại" – Record and Playback. Nhờ đó, Tester có thể
nhanh chóng tạo một bộ kịch bản kiểm tra (test script) bằng cách trực
tiếp "thu" các thao tác của mình trên đối tượng cần kiểm tra
thành một tập những câu lệnh Selenese (ngôn ngữ kịch bản được dùng riêng
cho Selenium IDE và Selenium Core, có dạng bảng HTML). Sau đó chạy lại
các câu lệnh này để kiểm tra. Chức năng này rất hữu dụng giúp tiết kiệm
thời gian viết kịch bản kiểm tra. Selenium IDE còn cho phép lưu kịch bản
đã thâu dưới nhiều loại ngôn ngữ lập trình khác nhau như Java, PHP, C#,
Ruby, Perl hay Python.
- Selenium RC: Công cụ này có thể nhận
các test script được thu bởi Selenium IDE, cho phép chỉnh sửa, cải tiến
linh động bằng nhiều ngôn ngữ lập trình khác nhau. Sau đó khởi động một
trong các trình duyệt web được chỉ định để thực thi kiểm tra trực tiếp
trên trình duyệt đó. Selenium RC còn cung cấp khả năng lưu lại kết quả
kiểm tra.
- Selenium Grid: Thực hiện phương pháp
kiểm tra phân bổ, phối hợp nhiều Selenium RC để có thể thực thi trên nhiều
trình duyệt web khác nhau trong cùng một lúc. Cũng cho phép lưu lại kết
quả kiểm tra.
- Selenium Core: Đã được tích hợp trong
Selenium IDE. Selenium Core là một công cụ chạy các test script viết bằng
Selenese. Thế mạnh của công cụ này là có thể chạy test script trên gần
như tất cả các trình duyệt, nhưng lại yêu cầu được cài đặt trên máy chủ
của website cần kiểm tra. Điều này là không thể khi Tester không có quyền
truy cập đến máy chủ đó.
Cơ cấu
làm việc của bộ ba Selenium IDE, Selenium RC và Selenium Grid
(nguồn: http://seleniumhq.org/) |
|
Là một công cụ hỗ trợ kiểm tra tính năng nên Selenium
không có khả năng giả lập nhiều người dùng ảo cùng một lúc. Công việc
của nó là chạy kiểm tra tự động dựa trên một kịch bản đã được thiết kế
từ trước. Qua đó chúng ta có thể chắc chắn rằng đối tượng kiểm tra có
hoạt động đúng như mong đợi hay không. Lợi ích Selenium có thể đem lại
là không nhỏ, nhưng để tận dụng lợi thế đó, tester phải có khả năng nghiên
cứu và ứng dụng, đồng thời kiến thức lập trình tốt cũng sẽ giúp ích nhiều
trong quá trình sử dụng công cụ mã nguồn mở này.
MỘT SỐ CÔNG CỤ MÃ NGUỒN
MỞ KHÁC
Ngoài hai công cụ hữu ích trên, các công cụ sau đây tuy
có một số khuyết điểm nhưng cũng gây được ấn tượng tốt với cộng đồng người
dùng nên chúng tôi sẽ điểm qua một số thông tin sau:
- The
Grinder. Nhìn chung, The Grinder có nhiều điểm tương đồng
với JMeter: là một ứng dụng thuần Java, hoạt động trên nhiều hệ điều hành,
yêu cầu JVM phiên bản 1.4 trở lên. The Grinder cũng được thiết kế để kiểm
tra hiệu năng web, cơ sở dữ liệu qua JDBC và một số giao thức khác. Điều
khác biệt là The Grinder đòi hỏi tester phải có khả năng sử dụng ngôn
ngữ Jython để có thể viết/chỉnh sửa các kịch bản kiểm tra (test script)
theo ý mình, và hệ thống báo cáo kết quả kiểm tra không linh động như
JMeter.
- TestMaker.
Hỗ trợ kiểm tra hiệu năng và tính năng của ứng dụng web. TestMaker có
khả năng chạy test script được thâu từ các công cụ khác như TestGen4Web
và Selenium. Tuy nhiên, phiên bản được xây dựng sẵn để cài đặt và sử dụng
miễn phí nhưng bị hạn chế khả năng chạy kiểm tra tối đa với 200 người
dùng ảo. Để xóa bỏ hạn chế này, người sử dụng có thể trả tiền hoặc tự
tải mã nguồn của TestMaker về và tự xây dựng (build) thành một bộ cài
đặt và sử dụng hoàn chỉnh. Điều này đòi hỏi kiến thức về Java, Ant, NetBean,
...
- WebLoad OpenSource.
Vốn là một công cụ thương mại hỗ trợ kiểm tra hiệu năng web của RadView
Software. Gia nhập cộng đồng mã nguồn mở vào năm 2007 nhưng WebLoad OpenSource
bị hạn chế nhiều tính năng so với phiên bản thương mại của nó. Hiện tại
WebLoad OpenSource không hỗ trợ giao thức HTTPS nên khá bất tiện trong
một số trường hợp.
- OpenSTA.
Cũng là một công cụ kiểm tra hiệu năng web có tên tuổi nhưng đã không
đưa ra một phiên bản mới nào từ cuối năm 2007. Một trong những yếu điểm
của OpenSTA là chỉ hoạt động trên Windows. Tuy nhiên tính thân thiện và
dễ sử dụng của công cụ này lại được đánh giá cao. Ngôn ngữ kịch bản được
sử dụng trong OpenSTA là SCL.
Nhiều ứng dụng mã nguồn mở phục vụ công việc kiểm định
phần mềm cũng được giới thiệu tại www.opensourcetesting.org.
2. CÔNG CỤ MÃ NGUỒN MỞ
HAY THƯƠNG MẠI
Liệu các công cụ hỗ trợ kiểm định mã mở có thể làm tốt
công việc như các công cụ thương mại hay không. Câu trả lời là có, nhưng
chúng ta vẫn phải xét đến các khía cạnh sau:
So sánh giữa công cụ mã mở và thương
mại |
|
Khi quyết định sử dụng
các công cụ mã nguồn mở, chúng ta phải chấp nhận rằng chúng không dễ sử
dụng (như công cụ thương mại), có một số hạn chế trong tính năng và có
thể công cụ đó vẫn còn một số lỗi phát sinh trong quá trình sử dụng. Vì
vậy việc sàng lọc không phải đơn giản. Tốt nhất công cụ mã mở đó vẫn phải
được cập nhật và hỗ trợ tài liệu, kỹ thuật bởi cộng đồng để có thể giảm
thiểu các yếu tố rủi ro vừa nêu.
Ngoài ra, việc tìm được nhân lực có thể sử dụng tốt các
công cụ kiểm định mã nguồn mở cũng là một bài toán khó. Do đó, việc nghiên
cứu và đào tạo cần được đầu tư đúng lúc, đúng mức độ cần thiết cho nhu
cầu dự án. Tuy nhiên khi xem xét lại giữa công sức phải bỏ ra để ứng dụng
phần mềm mã nguồn mở và chi phí rất lớn để đầu tư công cụ thương mại,
ta sẽ thấy được sự cân bằng giữa hai loại công cụ nói trên.
Các vấn đề cân nhắc khi quyết định ứng dụng công cụ mã
nguồn mở vào dự án:
Vấn đề kỹ thuật:
- Nhu cầu kiểm định của dự án? Sử dụng các công nghệ, giao thức gì?
- Có yêu cầu đặc biệt nào về báo cáo và phân tích kết quả kiểm tra
không?
- Công cụ mã mở đó có được hỗ trợ kỹ thuật/ tài liệu đầy đủ không?
Vấn đề nguồn lực:
- Khả năng kỹ thuật và nghiên cứu của tester
- Trong nhóm ít nhất nên có một tester đã có kinh nghiệm sử dụng,
hoặc thông thạo ngôn ngữ kịch bản mà công cụ đó hỗ trợ.
Vấn đề chi phí:
- Chi phí và quỹ thời gian cho giai đoạn kiểm định tự động (nên cân
nhắc cả thời gian đào tạo để ứng dụng công cụ).
3. KẾT LUẬN
Các phần mềm mã nguồn mở đem lại cơ hội thứ hai bên cạnh
các phần mềm thương mại, cho lĩnh vực kiểm định chất lượng phần mềm. Tuy
không tốn chi phí đầu tư ban đầu nhưng việc ứng dụng công cụ mã mở cũng
có các phát sinh tiềm ẩn khác đôi khi rất tốn kém, như việc phải tìm được
giải pháp vượt qua các hạn chế và lỗi của công cụ (nếu có), hoặc phải
lập trình thêm một số module bổ sung tính năng để đáp ứng nhu cầu dự án,
tốn nhiều thời gian để tìm hiểu và ứng dụng tốt... Do đó cần có kế hoạch
cân nhắc và đánh giá kỹ tất cả các khía cạnh để cuối cùng việc ứng dụng
công cụ mã mở đó đem lại lợi ích nhiều hơn với tổng chi phí và công sức
đầu tư thấp hơn.
Ngô Quách Hy
(theo PC World VN)
|