第二次作業(WordCount)
1 Github項目地址:https://gitee.com/DamonGetup/WordCount/tree/master
2 對程序設計語言源文件統計字符數、單詞數、行數,統計結果以指定格式輸出到默認文件中,以及其他擴展功能,並能夠快速地處理多個文件。
基本功能:wc.exe -c file.c //返回文件 file.c 的字符數
wc.exe -w file.c //返回文件 file.c 的單詞總數
wc.exe -l file.c //返回文件 file.c 的總行數
wc.exe -o outputFile.txt //將結果輸出到指定文件outputFile.txt
擴展功能:wc.exe -s //遞歸處理目錄下符合條件的文件
wc.exe -a file.c //返回更復雜的數據(代碼行 / 空行 / 註釋行)
wc.exe -e stopList.txt // 停用詞表,統計文件單詞總數時,不統計該表中的單詞
3 基本思路:
由於很久沒使用C語言了,導致編寫進度進展的很慢。但根據要求進行需求分析,主要要實現的功能有:用戶的命令行輸入,文件的獲取與讀寫,文件內容遍歷,字符串匹配等。該程序代碼的結構如下, 從根據argv[]傳入的參數,條件語句判斷。來決定進行什麽功能。
4 代碼設計:
-c 返回文件字符數
-w返回文件單詞總數
-l返回文件總行數
主函數根據argv[]傳入的參數,進行條件語句判斷。來決定進行什麽功能。
int main(int argc, char* argv[])
{
FILE *fp;
while(1)
{
if((fp=fopen(argv[2],"r"))==NULL)
{
printf("FileNull\n\n\n");
scanf("%s%s%s",argv[0],argv[1],argv[2]);
continue;
}
else if(!strcmp(argv[1],"-w"))
countw(argv[2]);
else if(!strcmp(argv[1],"-c"))
countc(argv[2]);
else if(!strcmp(argv[1],"-l"))
countl(argv[2]);
else if(!strcmp(argv[1],"-a"))
{
count_blankline(argv[2]);
count_noteline(argv[2]);
count_codeline(argv[2]);
}
else if(!strcmp(argv[1],"-s"))
{
searchfile();
}
else
printf("NullPoint\n");
printf("\n\n");
scanf("%s%s%s",argv[0],argv[1],argv[2]);
}
return 0;
}
5.測試思路:
采用白盒測試用例設計法覆蓋可能出現的左右情況,盡量找到代碼中可能蘊含的錯誤並改正,因此,測試設計應該覆蓋判斷中的各種邊界情況。-c test.txt,-w test.txt,-l test.txt,-c –w test.txt,-c –l test.txt,-w –l test.txt,-c –w –l test.txt,-c test.txt –o output.txt,-w test.txt –o output.txt,-l test.txt –o output.txt,-c –w test.txt –o output.txt,-c –l test.txt –o output.txt,-w –l test.txt –o output.txt,-c –w –l test.txt –o output.txt。
測試文件:
測試均可通過,表示基本功能沒有問題,不一一列舉了。
6 總結:
本次作業較為倉促,有多個功能聚集在主函數內部,比較雜亂,沒有比較好的代碼優化。算法的性能還有待提高和優化,對問題的考慮可以更全面。但是加強了編程能力,讓我對時間安排有了更充分的理解,理解了上課所學習的基本內容,初步理解的測試的相關方法,希望能在今後的學習中對軟件測試有更加深刻的理解和學習
參考文獻
【1】http://www.cnblogs.com/xinz/p/5044037.html
【2】http://www.cnblogs.com/xiaobao123/p/9649693.html
【3】https://www.cnblogs.com/IHHHH/p/8612972.html
【4】https://www.jianshu.com/p/5323bca00825
第二次作業(WordCount)