目录
一、课程设计的任务及要求
1)基本要求:
(1)详细分析软件项目的需求规格说明、概要设计说明和详细设计说明(如果有
的),并对代码进行走查;编写单元测试计划、系统测试计划和验收测试计划;
- 根据需要,选择测试工具集,并搭建测试环境;
- 综合运用白盒测试方法和黑盒测试方式设计测试用例,利用工具实现测试用例,
编写测试说明;
- 进行软件测试,并记录相关结果,编写测试报告;
- 完成课程设计报告和自评报告;
- 课程设计答辩;
2)课程设计论文编写要求:
(1)将测试计划、测试说明和测试报告等内容以课程设计论文的形式提交,格式必
须严格按照课程设计论文标准格式进行书写和装订。
(2)课程设计报告(论文)包括目录、正文(主要包括课程设计目的,课程设
计内容、测试计划、测试说明、测试报告、课程设计总结、谢辞、参考文献、附录等
内容。
二、 测试基线---LL(1)文法分析系统简明规格说明
1、需求规格说明
1.1功能需求:
本系统的只要功能如图1.1所示:
图1.1 系统总体功能用例图
2、用例规约
- 用户文法输入用例规约如表1.1所示:
表1.1 文法分析
用例编号 | 0001 |
用例名称 | 输入文法 |
简要描述 | 输入规定的文法,才能进行分析 |
角色 | 用户 |
前置条件 | 输入合法的文法开始符 |
后置条件 | 输入合法的文法 |
主事件流 |
|
- 用户输入串验证用例规约如表1.2所示
表1.2 串验证
用例编号 | 0002 |
用例名称 | 输入串 |
简要描述 | 输入合法的串 |
角色 | 用户 |
前置条件 | 输入的文法经分析后是LL(1)型文法 |
后置条件 | 输入合法的串 |
主事件流 |
|
3、概要设计说明
编写程序从窗口实现开始,读入用户输入的文法,调用主要算法类,进行文法分析生成终结符和非终结符、文法扩展显示、生成first集布尔矩阵、生成follow集布尔矩阵、生成LL(1)分析表、判断是否是LL(1)文法等将一系列数据存储到数据结构中,后跳转界面,将数据合理的显示在界面上,等待用户输入串,后读入串,进行输入串进行判断,并且输出分析过程,反馈到界面上。
图1.2 LL(1)分析系统设计图
4、详细设计说明
设计读入文法 并识别非终结符,终结符模块、文法增广模块、求first的集合模块、求Follow的集合模块、构建分析表模块、输出分析表模块、判断文法模块、判断串,存储判断过程模块、辅助函数模块等,实现一个自动构造LL(1)分析表的程序,该程序的输入是任一个文法G,输出对应的LL(1)分析表,并指出该文法是否为LL(1)文法,同时输出终结符、非终结符、first集二维布尔矩阵、follow集二维布尔矩阵、分析表、同时可以输入串进行验证文法,并输出验证过程。
图1.2 LL(1)分析系统结构图
三、LL(1)文法分析系统测试计划
1、单元测试计划
- void Du(char [] wen) //读入文法 并识别非终结符,终结符
- void kuo() //文法增广
- void getFirst() //求first的集合
- void getFollow() //求Follow的集合
- void createTable() //构建分析表
- void sutable() //输出分析表
- String judgeTable() //判断是否是LL(1)型文法
- void judgeChuan(String s) //分析串,输出分析过程
- int getLength(char [] a) //获取输入的字符数组的长度
- 兼容性测试
- 安装/卸载测试
- 可用性测试
- 安全测试
- 配置测试
- 负载测试
- 压力测试
- 健壮性测试
四、测试说明
1、单元测试说明
1、针对主要功能函数进行测试
对主要功能函数void Du(char [] wen) 、void kuo()、void getFirst()、void getFollow()、void createTable()、void sutable()、String judgeTable()、void judgeChuan(String s) 、int getLength(char [] a) 测试以下内容:
2、人工静态检查
- 检查算法的逻辑正确性
- 模块接口的正确性检查
- 输入参数有没有作正确性检查
- 调用其他方法接口的正确性
- 出错处理
- 检查常量或全局变量使用的正确性
- 检查代码是否可以优化、算法效率是否最高
- 检查您的程序是否清晰简洁容易理解
- 检查方法内部注释是否完整
- 检查注释文档是否完整
创建多个测试用例对功能函数进行输入和预期结果输出,进行动态执行跟踪测试
2、系统测试说明
- 兼容性测试
测试软件在一个特定的硬件、软件、操作系统、网络等环境下系统能否正常运行
- 安装/卸载测试
测试程序的安装和卸载的步骤是否清晰,操作简单
- 安全测试
安全测试检测系统对非法入侵的防范能力。
- 配置测试
配置测试将验证软件与其所依赖硬件环境的依赖程度
- 负载测试
数据在超负荷环境下运行,测试软件系统是否能够承担。这种超负荷主要指多并发用户
- 压力测试
指系统不断施加越来越大的负载(并发,循环操作,多用户,网络流量)的测试
- 健壮性测试
又称为容错测试。主要检查系统容错能力。当系统出错时,能否在指定的时间间隔内修正错误并重启系统。
- 可用性测试
可用性测试是面向用户的系统测试。让一群有代表性的用户尝试对产品进行典型操作,- - 同时观察员和开发人员在一旁观察,聆听,做记录
五、测试报告
1、单元测试报告
人工静态检查
- 检查算法的逻辑正确性
经人工检查算法在数组长度小于100的情况下,算法的逻辑基本正确,存在一些数组超过长度的情况和一些其他的逻辑错误。
- 模块接口的正确性检查
经人工检查所调用和预留的接口基本正确。
- 输入参数有没有作正确性检查
经人工检查输入的参数在传入数据不超过所定义的数据范围、上下界的情况下传入的参数基本正确。
- 调用其他方法接口的正确性
经人工检查调用其他方法的接口时候基本正确。
- 出错处理
经人工检查在一些文法读入和串输入验证的算法中设计了一些出错处理,进行错误提示,但在其他的函数中缺少出错处理。
- 检查常量或全局变量使用的正确性
经人工检查由于程序在设计的时候所定义的变量基本为全局变量,所以在变量的使用中存在一些问题,但是全局的变量使用的时候基本正确。
- 检查代码是否可以优化、算法效率是否最高
经人工检查代码还存在很大的优化空间,同时算法的效率比较低,在大多少情况下基本是使用多层for循环,使算法的效率低下。
- 检查您的程序是否清晰简洁容易理解
经人工检查此程序的量级和实现的功能比较小所以,程序的内部结构比较清晰简洁易懂。
- 检查方法内部注释是否完整
经人工检查在程序的各处内部注释比较完整。
动态执行跟踪
- void Du(char [] wen) //读入文法 并识别非终结符,终结符
测试用例编号 | 输入 | 预期输出 | 实际输出 | 总覆盖率 |
文法 | 非终结符,终结符数组 | 96.5% | ||
1 | A->aE E->ABl|ε B->dF F->bF|ε | A E B F a l ε d b | A E B F a l ε d b | |
2 | S->iESA|a A->eS|ε E->b | S A E i a e ε b | S A E i a e ε b | 89.8% |
3 | S-->iESA|a A-->eS|ε E-->b | S A E i a e ε b | 程序停止运行 | 864% |
4 | A->aB| B->b | A B a b | A B a b | 88.5% |
- void kuo() //文法增广
测试用例编号 | 输入 | 预期输出 | 实际输出 | 总覆盖率 |
文法 | 文法增广 | 48.5% | ||
1 | A->aE E->ABl|ε B->dF F->bF|ε | A->aE E->ABl E->ε B->dF F->bF F->ε | A->aE E->ABl E->ε B->dF F->bF F->ε | |
2 | S->iESA|a A->eS|ε E->b | S->iESA S->a A->eS A->ε E->b | S->iESA S->a A->eS A->ε E->b | 48.6% |
3 | S-->iESA|a A-->eS|ε E-->b | S->iESA S->a A->eS A->ε E->b | 程序停止运行 | 44.6% |
4 | A->aB| B->b | A->aB B->b | A->aB A-> B->b | 46.8% |
- void getFirst() //求first的集合
测试用例编号 | 输入 | 预期输出 | 实际输出 | 总覆盖率 |
文法 | first的集合 | 49.5% | ||
1 | A->aE E->ABl|ε B->dF F->bF|ε | first集布尔矩阵: a l ε d b A 1 0 0 0 0 E 1 0 1 0 0 B 0 0 0 1 0 F 0 0 1 0 1 | first集布尔矩阵: a l ε d b A 1 0 0 0 0 E 1 0 1 0 0 B 0 0 0 1 0 F 0 0 1 0 1 | |
2 | S->iESA|a A->eS|ε E->b | first集布尔矩阵: i a e ε b S 1 1 0 0 0 A 0 0 1 1 0 E 0 0 0 0 1 | first集布尔矩阵: i a e ε b S 1 1 0 0 0 A 0 0 1 1 0 E 0 0 0 0 1 | 52.4% |
3 | S-->iESA|a A-->eS|ε E-->b | first集布尔矩阵: i a e ε b S 1 1 0 0 0 A 0 0 1 1 0 E 0 0 0 0 1 | 程序停止运行 | 51.5% |
4 | A->aB| B->b | first集布尔矩阵: a b A 1 0 B 0 1 | first集布尔矩阵: a b A 1 0 B 0 1 | 49.7% |
(只展示部分动态测试)
2、系统测试报告
- 兼容性测试
经过在三台设备上运行分析运行良好
- 安装/卸载
- 可用性测试
经三个用户进行使用发现基本可以使用的流畅
用户a | 年龄:19 | 性别:男 | 职业:学生 | 教育程度:本科 |
用户b | 年龄:20 | 性别:男 | 职业:学生 | 教育程度:本科 |
用户c | 年龄:21 | 性别:男 | 职业:学生 | 教育程度:本科 |
- 安全测试
因为不含有数据库文件,没有关联数据库,并且不存在一些机密数据或者其他数据,同时因为程序的结构简单、量级小,所以不存在一些安全隐患。
- 配置测试
在三个不同的设备上均可以运行,对于配置要求较低,泛化性强,但是需要设备含有jdk。
- 负载测试
在运行的时候所使用的cpu和内存较小,所以负载较小。
- 压力测试
在同时启动多个程序时会使设备处于卡顿状态,所以经过测试发现,该程序的压力测试较差。
- 健壮性测试
同时使用多个不同的设备进行测试,结果发现程序的健壮性良好。