一. 題目簡介
五子棋遊戲
本次專案分析了五子棋遊戲的遊戲規則,設計了遊戲演算法,並選擇eclipse作為該軟體的開發平臺,實現了五子棋的多種對戰模式,既可人與人對戰,也可人與電腦對戰。還實現了,自定義棋盤行列數。
本文將從開發環境的安裝,到五子棋的功能分析與設計,到各功能模組的實現,逐步向您展現五子棋的實現過程。經測試,本遊戲系統功能齊全,能平穩執行,具有較強的使用價值。
該軟體由畫圖、標記、判斷模組三部分組成。各部分模組基本功能如下:
(1)畫圖模組:
由畫背景 ,畫棋子 黑棋白棋要交錯畫到指定的座標中,等組成。
(2)標記模組:
將棋盤的座標索引成二維陣列的座標;用一個二維陣列對棋子進行標記,沒有棋子為零,黑棋為2,白棋為1;
如果有棋子時單擊,否則提示此處已有棋子。
(3)判斷模組:
無禁手:黑白雙方依次落子,任一方先在棋盤上形成連續的五個(含五個以上)棋子的一方為勝;
禁手主要分為以下幾類:
1.黑長連禁手:連成六個以上連續相同的棋子。
2.黑三三禁手:兩個以上的活三。
3.黑四四禁手:兩個以上的四。
二.結對分工及過程
完成五子棋基本功能是:下棋和判斷勝負。
為實現課程設計需求,需要實現的各個類、每個類需要負責實現的功能。
該遊戲主要由以下幾個模組組成:
此次專案中:徐曉萌負責畫圖模組及標記模組,在測試中負責白盒測試。
郭蕾負責判斷模組,在測試中負責黑盒測試。
三.程式碼地址
https://github.com/xutiantian/Test
四.測試情況
1.測試目的
軟體測試是為了發現錯誤而執行程式的過程。或者說,軟體測試是根據軟體開發各階段的規格說明和程式的內部結構而精心設計一批測試用例{即輸入資料及其預期的輸出結果},並利用這些測試用例去執行程式,以發現程式錯誤的過程。設計測試的目標是想以最少的時間和人力,系統地找出軟體中潛在的各種錯誤和缺陷。如果成功地實施了測試,就能夠發現軟體中的錯誤。測試的附帶收穫是,它能夠證明軟體的功能和效能與需求說明相符合。此外,實施測試收集到的測試結果資料為可靠性分析提供了依據。而測試的目的就是在軟體投入生產性執行之前,儘可能地發現軟體中的錯誤。
2.遊戲圖
3. 白盒測試
通過程式的原始碼進行測試而不使用使用者介面。這種型別的測試需要從程式碼句法發現內部程式碼在演算法,溢位,路徑,條件等等中的缺點或者錯誤,進而加以修正,這一方法是把測試物件看作一個開啟的盒子,測試人員依據程式內部邏輯結構相關資訊,設計或選擇測試用例,對程式所有邏輯路徑進行測試,通過在不同點檢查程式的狀態,確定實際的狀態是否與預期的狀態一致。
用軟體白盒測試產生的測試用例能夠:
1.保證一個模組中的所有獨立路徑至少被使用一次;
2.對所有邏輯值均需測試true和false;
3.在上下邊界及可操作範圍內執行所有迴圈;
4.檢查內部資料結構以確保其有效性。
4.測試用例
(1)用例1:
因為類ArrComparator主要功能是建立五子棋遊戲主窗體,所以對其進行測試,看其構造五子棋遊戲的主窗體的方法是否正確。
import java.util.Comparator;
/**
* 排序 Comparator
*/
class ArrComparator implements Comparator<Object> {
int column = 2;
int sortOrder = -1; // 遞減
public ArrComparator() {
}
public int compare(Object a, Object b) {
if (a instanceof int[]) {
return sortOrder * (((int[]) a)[column] - ((int[]) b)[column]);
}
throw new IllegalArgumentException("param a,b must int[].");
}
}
(2)用例2:
用ChessMap類實現電腦下子,並先通過方法判斷某座標位置是否可下棋子。
程式碼見github。
(3)用例3:
用ChessPanel類實現控制下棋和判斷勝負及演算法,並先通過方法判斷某座標位置是否可下棋子。
程式碼見github。
5.測試存在的問題
通過小組遊戲測試發現,由於棋盤大小問題,使得可能導致有時棋子滿格也沒有分出勝負,這樣,就很難顯示博弈者的水平。
6.遊戲不足的解決方案
通過對程式碼的修改實現對遊戲棋盤大小的規格控制選擇,讓博弈者盡展各自高超棋藝。
7.迴歸測試
對修改後的遊戲版本執行迴歸測試。
用例 |
操作 |
預期結果 |
測試結果 |
用例1 |
選擇不同規格棋盤,能否正常執行 |
能正常執行 |
Pass |
用例2 |
選擇不同規格棋盤,對其他功能正常執行是否產生影響 |
沒有影響 |
Pass |
六.問題及心得
在測試階段,一系列的測試方案都是為了“破壞”已經建造好的軟體系統而特地設計的,它的存在是為了竭力證明程式中的錯誤不能按照預定要求正確工作。軟體測試從不同的角度出發會派生出兩種不同的測試原則,從使用者的角度出發,就是希望通過軟體測試能充分暴露軟體中存在的問題和缺陷,從而考慮是否可以接受該產品,從開發者的角度出發,就是希望測試能表明軟體產品不存在錯誤,已經正確地實現了使用者的需求,確立人們對軟體質量的信心。
通過此次軟體測試的課程設計,深刻學習掌握了軟體測試和軟體測試過程的基本方法和基本技術,關於黑盒、白盒的測試用例的設計,也進行了認真學習研究,從而進一步提高了自己在程式上的編寫能力,以及一些之前未觸及的問題。
總之,收穫頗豐,增強了自己動手以及團隊合作的能力。付出才會有回報,實踐才能出真知。為即將踏上社會的自己又做了一份理論和實踐的準備。