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!”