General
1.程序能夠順利地運行。程序通過命令行輸入,能夠向對應的文件中輸出符合要求的題目和答案。程序能夠根據用戶的不同選擇,進行題目的生產或答案的校驗,生成出的題目符合參數要求和項目的查重等各種要求,答案校驗準確迅速。
2.代碼邏輯清晰,沒有令人難以理解的部分。
3.他的編碼風格與我相似,大括號的使用讓我能很清楚地劃分模塊。變量名很函數名的命名做到了”望文生義“。
4.閱讀過程中沒有發現冗余重復多余的代碼,項目中沒有任何一個部分注釋掉代碼。
5.代碼模塊化十分清晰,主要分為了表達式,分數和計算模塊,定義在頭文件中,整個項目看上去結構十分清晰。
6.循環的退出條件合理,沒有發現數組越界的情況。
7.一些重要的邏輯部分缺少必要的注釋,自己需要仔細閱讀才看能把握,希望能在一些重要的邏輯部分加上一些幫助理解的注釋。
?
Security
1.對于命令行輸入的格式檢查完整。測試-n的參數小于等于0,或者-r的參數小于等于0的特殊情況時輸出”command is not correct!“;測試cmd數據不合法的特殊情況時輸出”command is not correct!“。
2.函數普遍沒有檢查是否為合法輸入。不過在函數調用的部分都輸入了合法的輸入,所以沒有出現異常。
3.無效的輸出值會輸出”command is not correct!“。
?
Documentation
1.缺少對程序的整體說明和解釋,是伙伴口頭解釋給我聽。
2.部分代碼有注釋但整體不完整,我認為的一些邏輯較為復雜的部分需要添加利于讓人讀懂和維護的注釋。
3.數據結構的命名”望文生義“,但是建議最好還是需要添加一些解釋注釋,部分重要的變量缺少注釋會讓人難以理解。
4.沒有檢查出不完整的代碼。
?
Testing
- 沒有使用unit test進行正確性測試。
- 但作者記錄了如下的人工測試日志:
1.測試速度,是否能生成超過10000的題,表示形式是否正確,是否出現超過3個運算符的算式
(1)輸入:Myapp.exe -n 10000 -r 10
測試:看Exercises.txt, Answers.txt是否有10000項;看Exercise.txt中算式是否符合要求;看Answers.txt是否正確形式的答案
(2)輸入:Myapp.exe -e Exercises.txt -a Answers.txt
測試:看Grade.txt的Correct項是否包含所有的序號,Wrong項包含的0個序號
2.測試-n的參數小于等于0,或者-r的參數小于等于0的特殊情況
(1)輸入:Myapp.exe -n 0 -r 10
輸出:“command is not correct!”
(2)輸入:Myapp.exe -n -5 -r 10
輸出:“command is not correct!”
(3)輸入:Myapp.exe -n 10 -r 0
輸出:“command is not correct!”
(4)輸入:Myapp.exe -n 10 -r -5
輸出:“command is not correct!”
3.測試是否產生相同的題目,是否有運算式中間產生負數,測試-n,-r調換順序的情況
(1)輸入:Myapp.exe -n 100 -r 10
測試:看這100個運算式是否存在相同的題目,當然也要看中間是否產生了負數的算式
(2)輸入:Myapp.exe -r 10 -n 100
測試:首先看這是否能生成符合形式的算式和答案,再看這100個運算式是否存在相同的題目,當然也要看中間是否產生了負數的算式
4.測試是否能夠正確地判斷答案是否正確。
(1)對于評測的輸入問題,我們要求的是輸入的題目和答案都是從1開始順序編號的,不能缺也不能多;否則,請提示輸入有錯誤。
(2)由于我們的題目都是按規范生成的,為簡單起見,可以認為輸入的題目都是按照順序編號的符合規范的題目。
(3)(但是答案缺少的話請報錯并給出提示。)我把這一條忽略,如果缺少的話就算它是錯的。
(4)所有題號必須是按照順序遞增的,而且題數一致。
為了比較這個,我把有10算式的正確答案中的部分改錯,刪掉其中一個答案(題號不刪除),最后得到的答案符合要求。
5.為了符合題目要求,我需要測試cmd數據不對的情況。
(1)輸入:Myapp.exe -n 10
輸出:“command is not correct!”
(2)輸入:Myapp.exe -n 10 -e Exercises.txt
輸出:“command is not correct!”