软件工程——数独 集成测试

 

一、    数独不重复测试

通过编写暴力算法,每次取1e4的数据量进行一一检查,发现有重复项。

 

 

 

 

观察输出发现,这是在交换行的过程中出现的错误。对交换行代码进行检查。

代码错误最终确认在SudokuMaker.cpp 中的void generateFullSwappedRowSudoku(int level);函数,源代码为:

generateFullSwappedRowSudoku(level + 1);//不进行交换

 

            swapRow(4, 5);

            //showSudoku();

            generateFullSwappedRowSudoku(level + 1);

 

            swapRow(4, 6);

            //showSudoku();

            generateFullSwappedRowSudoku(level + 1);

 

            swapRow(5, 6);

            //showSudoku();

            generateFullSwappedRowSudoku(level + 1);

 

            swapRow(4, 5);

            //showSudoku();

            generateFullSwappedRowSudoku(level + 1);

 

            swapRow(4, 6);

            //showSudoku();

        generateFullSwappedRowSudoku(level + 1);

 

添加了对其中的代码注释之后解决该问题。原因是在后续的输出中存在不交换即输出的函数,中间层的交换后立即输出与后续的不交换即输出产生了冲突,修改之后代码正确。

后在1e3和1e4内进行循环测试没有发现重复。相关代码可以参见集成测试项目中的RepeationTest.

可以合理认为测试是成功的。

 

二、    求解算法测试

首先生成一定数量的数独。数独问题生成器在集成测试项目(IntegrationTest项目)中的SudokuProblemMaker中。根据数独生成算法生成的数独文件读入挖空并输出得到不同1e3到1e6数量的数独问题。生成的问题上传至百度网盘

对该数独进行求解,在测试过程中取消对数独检查代码(正式生成程序时为加快速度进行注释)的注释如下:

 

 

 

 

对其进行求解输出测试发现无误。

三、    数独输出模块检查

手动对输出进行检查即可。

用户有个需求不清楚,就是再最后一个数独之后是否有空行。自行理解输出如下:

 

 

 

 

四、    命令解析测试

 

 

 

 

 

 

 

 

详细测试已在单元测试中做过。GoogleTest的代码在gtest项目中。需要在debug模式下运行,release没有做配置。

 

 

 

 

五、    集成测试

通过一系列测试,测试通过。

 

 

 

 

 

 

 

posted @ 2020-01-16 22:25  LightningStar  阅读(320)  评论(0编辑  收藏  举报