4.2. Kiểm thử chức năng đăng nhập của phần mềm TestSystem·······················
4.2.4. Báo cáo kết quả kiểm thử····································································
Để chạy các ca kiểm thử được trình bày ở mục 4.2.3, cần tạo mã driver cho các phương thức cần kiểm thử. Tác giả viết luận văn đã xây dựng mã này và được lưu trữ trong lớp TestLogin của hệ thống TestSystem. Chi tiết mã lớp TestLogin được trình bày trong phụ lục 1 – Mã lớp TestLogin.
Quá trình chạy các ca kiểm thử trên hệ thống TestSystem được minh họa trong hình 4.7. Giao diện bao gồm các nút Class Login, GetStudent, GetTeacher, SetPresenceStudent, SetPresenceTeacher, các ô để nhập thông tin về tên người dùng (user), mật khẩu (password), chỉ số của người dùng (ID), và có đang truy cập hệ thống hay không (presence). Nhấn vào nút ClassLogin, hệ thống chuyển đến trang chủ, tại đây người dùng có thể thực hiện việc đăng nhập vào hệ thống. Giao diện trang chủ được minh họa trong hình 4.8. Tại trang chủ, người dùng nhập tên và mật khẩu ở bên trái trang web. Sau khi nhấn nút Login, hệ thống sẽ thực thi các phương thức trong lớp Login, sau đó hiển thị trang TestLogin và hiển thị các kết quả của TypeUser, IDStudent, IDTeacher như hình 4.7. Để theo dõi kết quả của các biến countStudent, countTeacher, countAdmin, countAnonymous, người dùng có thể xem trực tiếp trên bảng trạng thái, hiển thị phía bên trái của trang chủ. Để kiểm thử phương thức GetStudent và GetDataTeacher, nhập dữ liệu về tên và mật khẩu người dùng vào các ô User, Password minh họa trong hình 4.7, nhấn vào nút GetStudent hoặc GetTeacher để kiểm tra xem tên và mật khẩu này có tồn tại hay không. Với phương thức SetPresenceStudent và SetPresenceTeacher, để kiểm thử, người dùng nhập số ID của sinh viên hoặc giáo viên, đồng thời nhập thuộc tính đúng (true) hoặc sai (false) vào Presence rồi ấn nút SetPresenceStudent hoặc SetPresenceTeacher như trong hình 4.7 và theo dõi kết quả thông báo ở phía dưới.
Như vậy, thông qua ví dụ kiểm thử chức năng đăng nhập của hệ thống TestSystem, luận văn đã mang đến cho người đọc một cái nhìn trực quan về kỹ thuật kiểm thử sinh môi trường.
Hình 4.7. Kiểm thử chức năng đăng nhập của TestSystem.
CHƯƠNG 5 - KẾT LUẬN
Trong kiểm thử phần mềm, có thể sử dụng kỹ thuật kiểm thử sinh môi trường được trình bầy trong luận văn để làm giảm không gian cần kiểm thử. Thay vì tốn nhiều công sức cho kiểm thử tích hợp, người kiểm thử có thể thực hiện kiểm thử với độ phức tạp tương đương kiểm thử đơn vị.
Sau khi nghiên cứu luận văn, người đọc đã được giới thiệu về các kiến thức cơ bản trong kiểm thử, những kiến thức được sử dụng trong việc nghiên cứu lý thuyết chính của luận văn. Đó là các kiến thức cơ bản như kiểm thử đơn vị, phân tích tĩnh, kiểm thử luồng điều khiển và hai dạng của kiểm thử luồng dữ liệu là kiểm thử định nghĩa – sử dụng và kiểm thử dựa trên lát cắt.
Phần lý thuyết chính của luận văn được trình bày ở chương 3 - Kỹ thuật kiểm thử sinh môi trường. Với ý tưởng chia phần mềm thành hai phần là đơn vị và môi trường mà đơn vị tương tác với, kỹ thuật kiểm thử sinh môi trường đã làm giảm không gian cần kiểm thử. Kỹ thuật bao gồm các bước: thứ nhất là xác định chức năng cần kiểm thử; thứ hai là xác định đơn vị, đơn vị bao gồm các lớp quyết định trực tiếp đến chức năng cần kiểm thử; thứ ba là xác định giao diện đơn vị và giao diện môi trường, nghĩa là xác định những thuộc tính, phương thức của đơn vị mà môi trường gọi đến và những thuộc tính, phương thức của môi trường mà đơn vị gọi đến; bước cuối cùng, tiến hành kiểm thử các thuộc tính và các phương thức tìm được ở bước thứ 3 bằng kỹ thuật kiểm thử đơn vị.
Chương 4 của luận văn trình bày chi tiết từng bước của kỹ thuật kiểm thử sinh môi trường với một ví dụ cụ thể. Áp dụng kỹ thuật kiểm thử sinh môi trường để kiểm thử chức năng đăng nhập của phần mềm kiểm tra trực tuyến TestSystem. Với chức năng đăng nhập cần kiểm thử, luận văn đã chỉ ra chi tiết đơn vị, giao diện đơn vị - môi trường, áp dụng kỹ thuật kiểm thử đơn vị để sinh các ca kiểm thử; xây dựng mã driver của các phương thức cần kiểm thử, từ đó chạy chương trình TestSystem, so sánh kết quả với kết quả kỳ vọng và lập báo cáo kiểm thử.
Với phạm vi nghiên cứu của một luận văn thạc sĩ, kỹ thuật kiểm thử sinh môi trường được trình bày trong luận văn vẫn còn nhiều hạn chế. Kỹ thuật có thể được phát triển theo các hướng nghiên cứu như sau:
Một là, đánh giá tính hiệu quả của kỹ thuật kiểm thử sinh môi trường. Kỹ thuật kiểm thử sinh môi trường không phải hiệu quả với mọi phần mềm. Nghiên cứu đưa ra đặc điểm của các phần mềm mà khi ứng dụng kỹ thuật kiểm thử sinh môi trường mang lại hiệu quả cao. Thực nghiệm, thống kê so sánh tính hiệu quả
Hai là, xây dựng bước xác định đơn vị một cách tự động. Trong luận văn, bước xác định đơn vị được làm bằng tay bởi người dùng. Công việc này có thể được làm một cách tự động. Với chương trình cần kiểm thử, xây dựng đồ thị phụ thuộc giữa các lớp bằng cách sử dụng kỹ thuật phân tích tĩnh. Với mỗi chức năng cần kiểm thử, sử dụng đồ thị phụ thuộc sẽ tìm được các lớp được phân cấp theo mức độ ảnh hưởng tới chức năng đó, từ đó xác định được đơn vị của chức năng cần kiểm thử.
TÀI LIỆU THAM KHẢO Tiếng Anh
1.Kshirasagar Naik, Priyadarshi Tripathy (2008), Software Testing and Quality assurance – Theory and Practice, The John Wiley and sons, INC.
Publication. – 3
2.Lee Copeland (2003), A Practitioner's Guide to Software Test Design,
Artech House Publishers. - 4
3.F. Nielson, H. R. Nielson, and C. Hankin (1999), Principles of Program Analysis, Springer-Verlag New York, Inc. (1
4.Oksana Tkachuk (2003), Doctor of Philosophy: Domain – specific environment generation for modular software model checking, M.S,
Kansas State University. - 5
5.Paul C. Jorgensen, Ph.D. (2002), Software Testing, Craftsman’s Approach, CRC Press. - 6
6.H. Zhu, P. A. V. Hall, and J. H. R. May (1997), Software unit test coverage
PHỤ LỤC Phụ lục 1 – Mã lớp TestLogin using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using TestSystem.Class; namespace TestSystem {
public class driver : System.Web.UI.Page {
protected System.Web.UI.WebControls.Button Button2; private Student CStudent = new Student();
protected System.Web.UI.WebControls.Button TypeUser_bt; protected System.Web.UI.WebControls.TextBox User_tb; protected System.Web.UI.WebControls.Label Label1; protected System.Web.UI.WebControls.Label Pass; protected System.Web.UI.WebControls.TextBox Pass_tb; protected System.Web.UI.WebControls.Label report_lb; private Teacher CTeacher = new Teacher();
protected System.Web.UI.WebControls.Button GetStudent_bt; protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.TextBox ID_tb; protected System.Web.UI.WebControls.TextBox Presence_tb; protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Button SetPreTea_bt; private DataTable DB;
private void Page_Load(object sender, System.EventArgs e) {
report_lb.Text = "TypeUser la: " + Session["TypeUser"].ToString() + ". IDTeacher la: " + Session["IDTeacher"].ToString()+ ". IDStudent la: " + Session["IDStudent"].ToString();
#region Web Form Designer generated code override protected void OnInit(EventArgs e) {
InitializeComponent(); base.OnInit(e);
}
private void InitializeComponent() {
this.GetStudent_bt.Click += new
System.EventHandler(this.GetStudent_Click);
this.Button2.Click += new System.EventHandler(this.GetTeacher_Click); this.Button1.Click += new System.EventHandler(this.SetPreStu_Click);
this.TypeUser_bt.Click += new
System.EventHandler(this.TypeUser_bt_Click); this.SetPreTea_bt.Click += new
System.EventHandler(this.SetPreTea_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
private void GetStudent_Click(object sender, System.EventArgs e) {
DB = CStudent.GetStudent(User_tb.Text, Pass_tb.Text); if (DB.Rows.Count == 0)
report_lb.Text = "Khong ton tai sinh vien nay"; else
report_lb.Text = "Ton tai sinh vien voi Ten va Mat khau nay"; }
private void TypeUser_bt_Click(object sender, System.EventArgs e) {
Response.Redirect("Default.aspx"); }
private void GetTeacher_Click(object sender, System.EventArgs e) {
DB = CTeacher.GetDataTeacher(User_tb.Text, Pass_tb.Text); if (DB.Rows.Count == 0)
report_lb.Text = "Khong ton tai giao vien nay"; else
report_lb.Text = "Ton tai giao vien voi Ten va Mat khau nay"; }
private void SetPreTea_Click(object sender, System.EventArgs e) {
CTeacher.SetPresenceTeacher(Convert.ToInt16(ID_tb.Text), Convert.ToBoolean(Presence_tb.Text));
report_lb.Text = "Thuoc tinh da duoc thiet lap neu tim thay ID cua giao vien nay";
}
private void SetPreStu_Click(object sender, System.EventArgs e) {
CStudent.SetPresenceStudent(Convert.ToInt16(ID_tb.Text), Convert.ToBoolean(Presence_tb.Text));
report_lb.Text = "Thuoc tinh da duoc thiet lap neu tim thay ID cua sinh vien nay";
} } }
Thank you for evaluating AnyBizSoft PDF Splitter.
A watermark is added at the end of each output PDF file.
To remove the watermark, you need to purchase the software from