Thuật toán đã sử dụng

Một phần của tài liệu Nghiên cứu về mức bao phủ của kiểm thử (Trang 49 - 51)

Cài đặt chương trình thực hiện những chức năng trên chủ yếu dùng kiến thức về java core. Sử dụng các thuộc tính và các phương thức của lớp vào ra chuẩn (java.io.*;) là lớp (java.lang.String;).

Khi người dùng nhập vào tên file cần đọc, một đối tượng BufferedReader được khởi tạo để lưu tên file nhập vào. Yêu cầu định dạng của file nhập vào phải là file *.java. Kiểm tra phần mở rộng của file dùng hàm:

object. endsWith(“.java”)

Yêu cầu tiếp theo người dùng cần nhập vào tên file sẽ lưu toàn bộ các câu lệnh điều khiển của file cần đọc.

 đối tượng BufferedReader để lưu tên file nhập vào  hàm createNewFile () để tạo file với tên vừa nhập

 sử dụng boolean exist=fout.createNewFile() để kiểm tra tên file vừa nhập vào đã tồn tại hay chưa.

Đọc file : sử dụng các lớp FileInputStream, DataInputStream

BufferedReader. Chúng tôi sẽ tiến hành đọc từng dòng trong file sử dụng hàm

readLine(). Duyệt toàn bộ file cho tới khi gặp dòng rỗng (null). Khi đọc từng dòng sẽ tiến hành đọc từng ký tự lưu vào một mảng kiểu char (mảng token[]). Câu lệnh rẽ nhánh if sẽ có dạng if(biểu thức logic boolean). Chúng tôi sẽ tiến hành so sánh phần tử thứ (i) trong mảng char token[], nếu như token[i] = = ‘i’ và token[i+1]= = ‘f’ thì sẽ thực hiện vòng lặp để in cả câu lệnh if đó ra file lưu trữ. Để làm được điều này chúng tôi sử dụng hàm charAt(i) để chuyển phần tử thứ (i) thành kiểu char, dùng đối tượng thuộc lớp

BufferedWriter để ghi ra file lưu trữ.Việc tìm kiếm câu lệnh while và for cũng tương tự như thực hiện với câu lệnh if. Đối với câu lệnh while tiến hành so sánh nếu tất cả các phần tử có dạng sau sẽ in ra câu lệnh while:

• token[i]= = ‘w’ • token[i+1]= = ‘h’ • token[i+2]= = ‘i’ • token[i+3]= = ‘l’ • token[i+4]= = ‘e’

Một dòng lệnh là câu lệnh for thì các phần tử trong dòng đang đọc phải có dạng như sau : • token[i]= = ‘f’

• token[i+1]= = ‘o’ • token[i+2]= = ‘r’

Khai báo các biến đếm count_if, count_while, count_for, mỗi lần một câu lệnh điều khiển được tìm thấy các biến đếm này sẽ được tăng lên một theo đúng loại câu if hay while hay for.

Người dùng muốn tiếp tục thao tác. Cần phải nhập vào “Yes”, muốn thoát phải nhập vào “No”. Nếu xâu nhập vào là “Yes” sẽ thực thi khối lệnh tiếp theo: hỏi người dùng lựa chọn loại câu lệnh điều khiển sẽ thao tác. Nếu người dùng muốn thao tác câu lệnh if thì nhập vào if , khi muốn thao tác trên while nhập vào while và nếu là for thì cần nhập vào for. Để biết người dùng đã nhập vào những lựa chọn nào sẽ dùng đến đối tượng lớp

BufferedReader để đọc, hàm so sánh xâu equals(String object) . Người dùng chọn câu lệnh muốn thao tác bằng cách nhập vào một số nguyên (kiểu int). Để lấy ra đúng câu lệnh

là số thứ tự mà người dùng vừa nhập sẽ phải dùng đến đối tượng kiểu

LineNumberReader và gọi đến hàm getLineNumber().

Giá trị biên trong các dải giá trị của biến luôn nằm đằng sau các toán tử so sánh >, >=, <, <= do đó thuật toán để lấy ra các giá trị biên trong các câu lệnh điều khiển sẽ là tiến hành đọc qua file, đọc từng dòng một, xét câu lệnh đó có phải là câu lệnh điều khiển hay không, nếu là câu lệnh điều khiển sẽ lấy ra xâu đằng sau các toán tử so sánh trên. Duyệt qua file và đọc từng ký tự về cách làm tương tự như đã làm ở trên.

Một phần của tài liệu Nghiên cứu về mức bao phủ của kiểm thử (Trang 49 - 51)