4. 2.1. Tổng quan chương trình
Chương trình kiểm tra tam giác được xây dựng nhằm phục vụ cho việc sử dụng công cụ NUnit 2.5 để tiến hành kiểm thử.Chương trình xây dựng phải đảm bảo có dữ liệu đầu vào và dữ liệu đầu ra.
4. 2.2. Các hệ thống liên quan
Chương trình xây dựng trên các công cụ và môi trường sau: Môi trường cài đặt ứng dụng : Microsoft Windows XP. Môi trường lập trình : Visual Studio 2008.
4.3. CÁC YÊU CẦU CHUNG
4. 3.1. Yêu cầu về kiến trúc chương trình
( Lợi ích của đối tượng người dùng:
( Tính tiện dụng: Giao diện thân thiện, dễ sử dụng với người dùng windows. ( Tính tiến hóa.
( Tính tương thích: Thích hợp với các môi trường. ( Tính hiệu quả : Hiệu suất cao, truy xuất nhanh.
( Lợi ích của việc phát triển dự án:
Các tham số của hệ thống được thiết kế động, dễ hiệu chỉnh. Tính dùng lại của code.
4.3.2. Các yêu cầu về thẩm mỹ
Đảm bảo thống nhất form chữ trong tất cả các trường dữ liệu của chương trình.
Có thể điều chỉnh kích cỡ màn hình.
Đảm bảo các nút có cùng kích cỡ, hình dáng, form và cỡ chữ.
4.3.3. Các yêu cầu về sử dụng
Chức năng của phím TAB được thực hiện theo đúng trình tự từ trên cùng bên trái sang dưới cùng bên phải
Con trỏ phải được đặt vào trường thông tin cần phải nhập hoặc trường/nút điều khiển đầu tiên trên màn hình khi chức năng được kích hoạt
Các trường giá trị ngầm định hoặc không được dùng đến phải được bỏ qua trong trình tự TAB
Các trường giá trị ngầm định hoặc không được dùng đến phải được bỏ qua trong trình tự TAB
Trạng thái ban đầu khi vào form: Tất cả các trường texbox phải được xóa trắng, các combobox phải ở trạng thái chưa lựa chọn.
Tạo ra giao diện thân thiện với người dùng
Các trường nhập vào kiểm tra nếu null thì mặc định là 0 Giá trị nhập vào phải là số không âm
4.4. CHƯƠNG TRÌNH
4.4.1. Giao diện chương trình
Chương trình kiểm tra tam giác có giao diện như hình
Hình 4.1: Giao diện chương trình kiểm tra tam giác
4.4.2. Mô tả các đối tượng
Đối tượngTên đối tượngMô tảTextBoxtxtACạnh ABTextBoxtxtBCạnh
BCTextBoxtxtCCạnh ACCheckBoxcbACăn bậc 2 của ABCheckBoxcbBCăn bậc 2 của BCCheckBoxcbCCăn bậc 2 của ACTextBoxtxtTamgiacTam giácTextBoxtxtCVChu
viTextBoxtxtSDiện tíchButtonbtokThực hiệnButtonbthuyXóa
4.4.3. Mã code của chương trình
4.4.3.1 Mã code của giao diện
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using ClassLibrary1; namespace kiemtratamgiac {
public partial class Form1 : Form
{
public Form1() {
InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) {
}
private void txtA_KeyPress(object sender, KeyPressEventArgs e) {
string decimalString = ".";
char decimalChar = Convert.ToChar(decimalString);
if (Char.IsDigit(e.KeyChar) || Char.IsControl(e.KeyChar)) { }
else if (e.KeyChar == decimalChar && txtA.Text.IndexOf(decimalString) == -1) { } else { e.Handled = true; } }
private void btok_Click_1(object sender, EventArgs e) { if (txtA.Text == "") { txtA.Text = "0"; } if (txtB.Text == "") { txtB.Text = "0"; } if (txtC.Text == "") { txtC.Text = "0"; }
double a = Convert.ToDouble(txtA.Text); double b = Convert.ToDouble(txtB.Text); double c = Convert.ToDouble(txtC.Text);
if (cbA.Checked) {
} if (cbB.Checked) { b = Math.Sqrt(b); } if (cbC.Checked) { c = Math.Sqrt(c); }
Class1 x = new Class1(); int d = x.phanloai(a, b, c); if (d == 1)
{
txtTamgiac.Text = "Tam giác đều"; }
else
if (d == 2) {
txtTamgiac.Text = "Tam giác vuông cân"; }
else
if (d == 3) {
txtTamgiac.Text = "Tam giác cân"; }
else
if (d == 4) {
txtTamgiac.Text = "Tam giác vuông"; }
else
if (d == 5) {
txtTamgiac.Text = "tam giac thuong"; }
else
{
txtTamgiac.Text = "Không phải tam giác"; }
txtCV.Text = x.chuvi(a, b, c).ToString(); txtS.Text = x.dientich(a, b, c).ToString(); }
private void bthuy_Click_1(object sender, EventArgs e) { txtA.Text = ""; txtB.Text = ""; txtC.Text = ""; lable6.Text = ""; txtCV.Text = ""; txtS.Text = ""; } } }
4.4.3.2. Mã Code của lớp kiểm tra tam giác
using System; using System.Collections.Generic; using System.Linq; using System.Text; using ClassLibrary1; namespace ClassLibrary1 {
public class Class1
{
public Boolean tamgiac(double a, double b, double c)// kiem tra la tam giac thuong
{
if ((a + b > c) && (b + c > a) && (a + c > b)) {
return true; }
return false; }
public Boolean tamgiacvuong(double a, double b, double c)// kiem tra la tam giac vuong
{
if (tamgiac(a, b, c))// neu la tam giac thuong
{ if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) return true; } return false; }
public Boolean tamgiacvuongcan(double a, double b, double c)// kiem tra tam giac vuong can { if (tamgiacvuong(a, b, c)) { if (a == b || b == c || c == a) return true; } return false; }
public Boolean tamgiaccan(double a, double b, double c)// kiem tra tam giac can
{ if (tamgiac(a, b, c)) { if (a == b || b == c || c == a) return true; } return false; }
public Boolean tamgiacdeu(double a, double b, double c)// kiem tra tam giac deu
{ if (tamgiac(a, b, c)) { if (a == b && b == c && c == a) return true; } return false; }
{
if (!tamgiac(a, b, c)) return 0; double p = (a + b + c) / 2;
return Math.Sqrt(p * (p - a) * (p - b) * (p - c)); }
public double chuvi(double a, double b, double c) {
if (!tamgiac(a, b, c)) return 0; return a + b + c;
}
public int phanloai(double a, double b, double c)// phan loai tam giac
{
if (tamgiacdeu(a, b, c)) return 1;// la 1 neu tam giac deu
if (tamgiacvuongcan(a, b, c)) return 2;//...
if (tamgiaccan(a, b, c)) return 3; if (tamgiacvuong(a, b, c)) return 4; if (tamgiac(a, b, c)) return 5; return 0;// la 0 neu ko la tam giac
} } }
CHƯƠNG 5 : THIẾT KẾ KIỂM THỬ 5.1. Kiểm thử hộp đen
Kiểm thử hộp đen là phương pháp tập trung vào yêu cầu về mặt chức năng của phần mềm. Sau đây chúng ta sẽ tạo ra một bộ các điều kiện input yêu cầu về giao diện để kiểm thử chức năng của ứng dụng kiểm tra tam giác.
5.1.1. Yêu cầu giao diện
Ứng dụng kiểm tra tam giác được tạo ra với mục đích để minh họa cho quá trình kiểm thử đơn vị với công cụ kiểm thử NUnit version 2.5 cho nên yêu cầu về giao diện rất đơn giản.
TT Yêu cầu Test Yêu cầu kết quả1Các thông tin chương trìnhChương trình bao gồm:
( Các Label: Cạnh AB, Cạnh BC, Cạnh AC. ( Ba Checkbox: Căn Bậc 2.
( Các textbox: A, B, C, TamGiac.
( Các button: Bắt đầu, Hủy. 2Cho phép thực hiện kiểm tra tam giác.Click button “ Bắt đầu ” để tiến hành kiểm tra tam giác.3Cho phép nhập lại các thông tin đã nhập.Click button “ Hủy ” để tiến hành nhập lại các thông tin đã nhập.4Cho phép người dùng có thể chọn căn bậc hai của cạnh đã nhậpClick checkbox “ Căn Bậc 2 ” để chọn căn bậc hai cho cạnh đã nhập5Người dùng không cần sử dụng chuột nhưng vẫn có thể thực hiện được chương trình.Sử dụng phím tab để di chuyển.6Cho phép người dùng có thể nhập độ dài của các cạnh. Các textbox: Cạnh AB, Cạnh AC, Cạnh BC được dùng cho phép người dùng có thể nhập độ dài các cạnh. 7Cho phép xem đó là tam giác gì sau khi đã tiến hành kiểm tra.Texbox “ TamGiac” cho phép người dùng xem đó là tam giác gì sau khi đã tiến hành kiểm tra.5.1.2 Mô tả các tình huống test
giác và kích chọn button “Bắt đầu ”.Trên form chương trình sẽ hiện ra đó là loại tam giác gì.2Nhập vào giá trị của ba cạnh tam giác và kích chọn button “ Hủy ”.Chương trình sẽ xóa trắng các textbox để người dùng nhập dữ liệu mới.3Nhập vào giá trị của ba cạnh tam
giác, kích chọn vào checkbox của một cạnh nào đó và kích button “ Hủy ”.Chương trình sẽ xóa trắng các textbox, checkbox để người dùng nhập dữ liệu mới.4Nhập dữ liệu
các cạnh là ký tự.Trên form chương trình sẽ báo lỗi dữ liệu bị sai.5Không nhập dữ liệu các cạnh nhưng lại kích chọn button “Bắt đầu ”.Chương trình ngầm hiểu rằng các cạnh của tam giác lúc này là bằng không và vẫn tiến hành kiểm tra.6Nhập dữ liệu các cạnh có
dạng phân số.Trên form chương trình sẽ báo lỗi dữ liệu bị sai.
5.2. KIỂM THỬ HỘP TRẮNG
Trong kiểm thử hộp trắng,các trường hợp kiểm thử được thiết kế để xem xét trên cấu trúc nội bộ của module và cấu trúc điều kiện
TT Tình huốngDữ liệu đầu vàoKết quả đầu raDữ liệu đầu vào và kết quả đầu ra đều
đúng.Cạnh AB: 3 Cạnh AC: 4
Cạnh BC: 5 Tam giác vuôngDữ liệu đầu vào và kết quả đầu ra đều đúng.Cạnh AB: 2 Cạnh AC: 2
Cạnh BC: Căn bậc hai của 8Tam giác vuông cân
Dữ liệu đầu vào đúng nhưng kết quả đầu ra sai.Cạnh AB: 2 Cạnh AC: 3
Cạnh BC: 4Tam giác vuông
Dữ liệu đầu vào và kết quả đầu ra đều đúng.Cạnh AB: Căn bậc hai của 9 Cạnh AC: 3
Cạnh BC: 5Tam giác cân
Dữ liệu đầu vào và kết quả đầu ra đều sai.Cạnh AB: 3/5 Cạnh AC: 3
CHƯƠNG 6: TIẾN HÀNH KIỂM THỬ 6.1. KIỂM THỬ HỘP ĐEN
6.1.1. Kết quả kiểm thử giao diện
TT Yêu cầu Test Yêu cầu kết quả Kết quả1Các thông tin chương trìnhChương trình bao gồm:
( Các Label: Cạnh AB, Cạnh BC, Cạnh AC, Tam Giác. ( Ba Checkbox: Căn Bậc 2.
( Các textbox: A, B, C, TamGiac.
( Các button: Bắt đầu, Hủy. True2Cho phép thực hiện kiểm tra tam giác.Click button “ Bắt đầu ” để tiến hành kiểm tra tam giác.True3Cho phép nhập lại các thông tin đã nhập.Click button “ Hủy ” để tiến hành nhập lại các thông tin đã nhập.True4Cho phép người dùng có thể chọn căn bậc hai của cạnh đã nhậpClick checkbox “ Căn Bậc 2 ” để chọn căn bậc hai cho cạnh đã nhậpTrue5Người dùng không cần sử dụng chuột nhưng vẫn có thể thực hiện được chương trình.Sử dụng phím tab để di chuyển.True6Cho phép người dùng có thể nhập độ dài của các cạnh. Các textbox: A, B, C được dùng cho phép người dùng có thể nhập độ dài các cạnh. True7Cho phép xem đó là tam giác gì sau khi đã tiến hành kiểm tra.Texbox “ TamGiac” cho phép người dùng xem đó là tam giác gì sau khi đã tiến hành kiểm tra.True
6.1.2 Kết quả kiểm thử chức năng
TT Dữ liệu Test Yêu cầu kết quả Kết quả1 Nhập vào giá trị của ba cạnh tam giác và kích chọn button “ Bắt đầu ”.Trên form chương trình sẽ hiện ra đó là loại tam giác gì.True2Nhập vào giá trị của ba cạnh tam giác và kích chọn button “ Hủy ”.Chương trình sẽ xóa trắng các textbox để người dùng nhập dữ liệu mới.True3Nhập vào giá trị của ba cạnh tam giác, kích chọn vào checkbox của một cạnh nào đó và kích button “ Hủy ”.Chương trình sẽ xóa trắng các textbox, checkbox để người dùng nhập dữ liệu mới.Faile4Nhập dữ liệu các cạnh là ký tự.Trên form chương trình sẽ báo lỗi dữ liệu bị sai.Faile5Không nhập dữ liệu các cạnh nhưng lại kích chọn button “ Bắt đầu ”.Chương trình ngầm hiểu rằng các cạnh của tam giác lúc này là bằng không và vẫn tiến hành kiểm tra.True6Nhập dữ liệu các cạnh có dạng phân số.Trên form chương trình sẽ báo lỗi dữ liệu bị sai.Faile
6.2. KIỂM THỬ HỘP TRẮNG
Để kiểm thử module của chương trình ứng dụng thì ta cần tạo một project trong Visul Studio 2010 với tên testUnitTamGiac. Sau đây là TestCase:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; namespace testUnitTamGiac {
static class Program
{
static void Main() {
}
[TestFixture]
public class testUnitTamGiac
{
private ClassLibrary1.Class1 x; [TestFixtureSetUp]
public void SetUp() {
x = new ClassLibrary1.Class1(); }
[TestFixtureTearDown] public void TearDown() {
x = null; }
[Test]
public void TestTamGiac() { int a = x.phanloai(3, 4, 5); Assert.AreEqual(a, 4); } } } }
TTTình huốngDữ liệu đầu vàoKết quả đầu raKết quảHình1Dữ liệu đầu vào và kết quả đầu ra đều đúng.Cạnh AB: 3
Cạnh AC: 4 Cạnh BC: 5 Tam giác vuông
Kết quả chấp nhận bộ dữ liệu vào và cho ra kết quả là tam giác vuông → kết quả test là đúng 32Dữ liệu đầu vào và kết quả đầu ra đều đúng.Cạnh AB: 2
Cạnh AC: 2
Cạnh BC: Căn bậc hai của 8Tam giác vuông cân
Kết quả chấp nhận bộ dữ liệu vào và chương trình không báo lỗi → kết quả test là đúng43Dữ liệu đầu vào đúng nhưng kết quả đầu ra sai.Cạnh AB: 2
Cạnh AC: 3 Cạnh BC: 4 Tam giác vuông
Kết quả chấp nhận bộ dữ liệu vào nhưng chương trình báo lỗi → kết quả test là đúng54Dữ liệu đầu vào và kết quả đầu ra đều đúng.Cạnh AB: Căn bậc hai của 9
Cạnh AC: 3
Cạnh BC: 5Tam giác cân
Kết quả chấp nhận bộ dữ liệu và chương trình không báo lỗi → kết quả test là đúng65Dữ liệu đầu vào và kết quả đầu ra đều sai.Cạnh AB: 3/5
Cạnh AC: 3 Cạnh BC: 4
Không là tam giác
Kết quả chấp nhận bộ dữ liệu và chương trình không báo lỗi → kết quả test là sai. Dữ liệu Cạnh AB không được có dạng phân số.7
Kết quả kiểm thử lần 1 ở hình 3 cho thấy dữ liệu đầu vào và kết quả đầu ra là trùng với nhau (tam giác vuông),vậy kết quả test là đúng
Hình 6.1: Kết quả test tam giác là đúng
Kết quả kiểm thử lần 2 ở hình 6.1 cho thấy dữ liệu đầu vào và kết quả đầu ra là trùng với nhau (tam giác vuông cân),vậy kết quả test là đúng.
Hình 6.2: Kết quả test là đúng
Kết quả kiểm thử lần 3 ở hình 6.2 cho thấy kết quả chấp nhận bộ dữ liệu đầu vào nhưng chương trình báo lỗi (dữ liệu đầu vào là tam giác thường nhưng kết quả đầu ra lại là tam giác vuông),vậy kết quả test là sai.
Hình 6.3: Kết quả test là sai
Kết quả kiểm thử lần 4 ở hình 6.3 cho thấy dữ liệu đầu vào và kết quả đầu ra là trùng với nhau (tam giác cân),vậy kết quả test là đúng.
Hình 6.4: Kết quả test là đúng
Kết quả kiểm thử lần 5 ở hình 6.4 cho thấy mặc dù dữ liệu đầu vào cho cạnh AC ở dạng phân số nhưng chương trình test vẫn chấp nhận dữ liệu này trong khi chương trình ứng dụng thì không, vậy kết quả test là sai.
Hình 6.5: Kết quả test là đúng
PHẦN III: KẾT LUẬN
mềm. Việc nghiên cứu lựa chọn các kỹ thuật và chiến lược kiểm thử phần mềm phù hợp giúp cho việc kiểm thử có hiệu quả, giảm chi phí và thời gian. Việc xây dựng tài liệu kiểm thử phần mềm hợp lí sẽ giúp cho việc tổ chức, quản lí và thực hiện kiểm thử có hiệu quả.
Trên cơ sở nghiên cứu các tư liệu và kết quả thực nghiệm cho thấy kiểm thử phần mềm là rất quan trọng, việc thực hiện kiểm thử tốt sẽ làm tăng chất lượng của sản phẩm. Tuy nhiên, để vận dụng và thực hiện một cách hiệu quả các qui trình, phương pháp và công cụ kiểm thử thì vẫn còn nhiều vấn đề đặt ra cần tiếp tục giải quyết. Có thể đề xuất những hướng nghiên cứu và triển khai tiếp theo của đồ án là:
- Sử dụng công cụ kiểm thử NUnit để kiểm thử các đối tượng của website và hiệu suất của một website.
- Nghiên cứu một số công cụ kiểm thử web, kiểm thử cơ sở dữ liệu, kiểm thử tải. Để nâng cao hiệu suất kiểm thử nhiều loại sản phẩm phần mềm khác nhau, ta cần nghiên cứu thêm nhiều công cụ kiểm thử tự động khác bởi vì mỗi một công cụ kiểm thử chỉ có thể thực hiện chuyên một số kiểm thử nào đó
TÀI LIỆU THAM KHẢO
1. Pragramtic Unit Testing In C# with NUnit – Andrew Hunt and David Thomas
2. Unit Testing in BlueJ – version 1.0 for BlueJ Version 1.3.0 – Michael Kolling
and Mᴂrsk Institute – University of Southern Denmark.
3. Unit Testing A Guide – Mark R.Dawson.
4. Unit testing with Mock Objects – Tim Mackinnon, Steve Freeman, Philio Craig. 5. The Art of Unit Testing with Example in .NET – Roy Osherove.
6. Software Unit Testing – Rodney Parkin – IV&V Australia. 7. Một số video hướng dẫn lập Unit test sử dụng công cụ NUnit.
8. ᄉ http://www.testingvn.com/viewtopic.php?f=15&t=2789 ᄉ