Chương 3. XÂY DỰNG CÔNG CỤ HỖ TRỢ KIỂM THỬ DỊCH VỤ WEB
3.2. Phân tích và đánh giá hệ thống
3.2.4. Phân tích kết quả
3.2.4.3. Triển khai thực hiện
3.2.4.3.1. Xây dựng Web service.
Trước tiên ta cần xây dựng Web service lấy thông tin thuê bao để thực hiện kiểm thử trên Web service này.
Thiết kế cơ sở dữ liệu của database CM (thông tin thuê bao): gồm database trả trước, database trả sau, database lưu thông tin đăng nhập. Cấu trúc hai database trả trước và
trả sau giống nhau, gồm hai bảng SUB_MB và SUB_HP. Database lưu thông tin đăng nhập gồm bảng WS_USER.
Bảng 3.3. Bảng thiết kế CSDL cho WS
Bảng lưu thông tin thuê bao di động - Tên bảng: SUB_MB
STT Tên cột Kiểu Mô tả
1 Sub_id Number(18,0) Mã thuê bao
2 Msisdn Nvarchar(50) Bắt buộc, lưu số thuê bao 3 Product_code Narchar(50) Mã gói cước của thuê bao 4 Status Number(2,0) Trạng thái thuê bao
5 Act_status Nvarchar(50) Trạng thái hoạt động của thuê bao 6 Fullname Nvarchar(50) Tên đầy đủ của thuê bao
7 Address Nvarchar(50) Địa chỉ của thuê bao Bảng lưu thông tin thuê bao homephone- Tên bảng: SUB_HP
STT Tên cột Kiểu Mô tả
1 Sub_id Number(18,0) Mã thuê bao
2 Msisdn Nvarchar(50) Bắt buộc, lưu số thuê bao 3 Product_code Narchar(50) Mã gói cước của thuê bao 4 Status Number(2,0) Trạng thái thuê bao
5 Act_status Nvarchar(50) Trạng thái hoạt động của thuê bao 6 Fullname Nvarchar(50) Tên đầy đủ của thuê bao
7 Address Nvarchar(50) Địa chỉ của thuê bao Bảng lưu thông tin đăng nhập - Tên bảng: WS_USER
STT Tên cột Kiểu Mô tả
1 Id Number(10,0) Khóa chính của bảng, tăng tự động
2 user Nvarchar(50) Tên đăng nhập
3 pass Nvarchar(50) Mật khẩu đăng nhập
Xây dựng Web service lấy thông tin thuê bao:
Bước 1: kiểm tra thông tin đăng nhập trong bảng WS_USER:
Câu lệnh:
SELECT * FROM ws_user where [user] = @user and [pass] = @pass
Nếu có dữ liệu Bước 2
Nếu không: trả về error_code = -1, description = Loi dang nhap kết thúc Bước 2: kiểm tra thông tin lần lượt trong sub_mb trả trước. Câu lệnh:
SELECT sub_id,msisdn,product_code,status,act_status FROM sub_mb where msisdn = @msisdn
Nếu có dữ liệu trả về thông tin:
- error_code = 0 - sub_id
- msisdn - product_code - status
- act_status - sub_type = 1
- description = Tra truoc
kết thúc
Nếu không Bước 3
Bước 3: kiểm tra thông tin lần lượt trong sub_hp trả trước. Câu lệnh:
SELECT sub_id,msisdn,product_code,status,act_status FROM sub_hp where msisdn = @msisdn
Nếu có dữ liệu trả về thông tin:
- error_code = 0 - sub_id
- msisdn - product_code - status
- act_status
- sub_type = 0
- description = homephone
kết thúc Nếu không Bước 4
Bước 4: kiểm tra thông tin lần lượt trong sub_mb trả sau. Câu lệnh:
SELECT sub_id,msisdn,product_code,status,act_status FROM sub_mb where msisdn = @msisdn
Nếu có dữ liệu trả về thông tin:
- error_code = 0 - sub_id
- msisdn - product_code - status
- act_status - sub_type = 2
- description = Tra sau
kết thúc Nếu không Bước5
Bước 5: kiểm tra thông tin lần lượt trong sub_hp trả sau. Câu lệnh:
SELECT sub_id,msisdn,product_code,status,act_status FROM sub_hp where msisdn = @msisdn
Nếu có dữ liệu trả về thông tin:
- error_code = 0 - sub_id
- msisdn - product_code - status
- act_status - sub_type = 0
- description = homephone
kết thúc
Nếu không trả về thông tin:
- Description = So khong ton tai - Error_code = -2
kết thúc Request:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getSubInfo xmlns="http://tempuri.org/">
<msisdn>string</msisdn>
<user>string</user>
<pass>string</pass>
</getSubInfo>
</soap:Body>
</soap:Envelope>
Response:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getSubInfoResponse xmlns="http://tempuri.org/">
<getSubInfoResult>
<error_code>string</error_code>
<status>string</status>
<act_status>string</act_status>
<product_code>string</product_code>
<sub_type>string</sub_type>
<description>string</description>
<msisdn>string</msisdn>
<sub_id>string</sub_id>
</getSubInfoResult>
</getSubInfoResponse>
</soap:Body>
</soap:Envelope>
3.2.4.3.2. Lập kịch bản test
Sử dụng công cụ và mô tả yêu cầu webservice, ta tạo testcase tự động như sau:
- Msisdn: định dạng đúng là chuỗi số 10 hặc 11 ký tự, bắt đầu bằng 84. Như vậy mẫu (regular expression) có dạng 84\d{9,10}, các giá trị gán lần lượt: giá trị mặc định (là số điện thoại hợp lệ, ví dụ 84979348036), giá trị thiếu độ dài (tạo ngẫu nhiên và cắt đi số ký tự min_value - 1), giá trị thừa độ dài (tạo ngẫu nhiên, ghép thêm ký tự ngẫu nhiên đến khi độ dài bằng max_value + 1), giá trị sai định dạng (chứa ký tự không phải số, ví dụ 84979348xxx), và các giá trị ngẫu nhiên đúng định dạng để test từng số thuê bao thuộc mỗi loại.
- User: định dạng đúng là kiểu chuỗi ký tự bất kỳ, độ dài lớn hơn 0, không có ký tự đặc biệt, mẫu regular expression có dạng [A-Za-z0-9!@#$]+, chỉ nhận giá trị trong default_value (ví dụ: nhung) và một giá trị ngẫu nhiên
- Pass: định dạng đúng là chuỗi gồm chữ cái hoa và thường, chữ số, ký tự đặc biệt, độ dài tối thiểu 8 ký tự. Tuy nhiên ta lấy mẫu regular expression đơn giản là [A-Za-z][A-Za-z0-9]+, chỉ nhận giá trị trong default_value (ví dụ:
123456a@) và một giá trị ngẫu nhiên
Sau khi loại bỏ các testcase dư thừa, ta xây dựng được kịch bản test như sau:
I D
ME TH OD
INPUT OUTPUT_
RESULTS OUTPUT_DESIRABLE
RES UL TS
LE VE L 1.
getS ubIn fo
user=dfW2y|pass=
123456a@|msisdn
=84979348036
Error_code=-1|Description=loi xac thuc
Imp orta nt
2.
getS ubIn fo
user=nhung|pass=fr e5#$c2|msisdn=84 979348036
Error_code=-1|Description=loi xac thuc
Imp orta nt 3.
getS ubIn fo
user=s3DS5|pass=e w#c!@|msisdn=97 9348036
Error_code=-1|Description=loi xac thuc
Imp orta nt 4.
getS ubIn fo
user=nhung|pass=1 23456a@|msisdn=
8456972553
Error_code=-2|Description=So khong ton tai
Imp orta nt 5.
getS ubIn fo
user=nhung|pass=1 23456a@|msisdn=
8456972553238
Error_code=-2|Description=So khong ton tai
Imp orta nt 6.
getS ubIn fo
user=nhung|pass=1 23456a@|msisdn=
84979348036s
Error_code=-2|Description=So khong ton tai
Imp orta nt
7.
getS ubIn fo
user=nhung|pass=1 23456a@|msisdn=
84979348035
Error_code=0|Status=1|Act_status=00|
Product_code=ECO50|Sub_type=1|Des cription=la tra truoc
Imp orta nt
8.
getS ubIn fo
user=nhung|pass=1 23456a@|msisdn=
84979348037
Error_code=0|Status=1|Act_status=00|
Product_code=POBAS|Sub_type=2|De scription=la tra sau
Imp orta nt
9.
getS ubIn fo
user=nhung|pass=1 23456a@|msisdn=
84979348038
Error_code=0|Status=1|Act_status=00|
Product_code=POBAS|Sub_type=0|De scription=la homephone
Imp orta nt
Bảng 3.4. Bảng thiết kế các trường hợp kiểm thử 3.2.4.3.3. Thực hiện test
Import file kịch bản vào công cụ và thực hiện test. Kết quả test sẽ hiển thị lên màn hình.