标签:rom format product git 技术分享 get ini 有关 line
阶段: |
估计耗时(min) |
实际耗时(min) |
计划: |
5 |
3 |
计划所需时间 |
5 |
3 |
开发: |
305 |
381 |
需求分析(包括学习新技术) |
20 |
25 |
生成设计文档 |
5 |
2 |
设计复审 |
5 |
2 |
代码规范 |
5 |
2 |
具体设计 |
10 |
30 |
具体编码 |
120 |
140 |
代码复审 |
20 |
30 |
测试 |
120 |
150 |
报告: |
105 |
105 |
测试报告 |
90 |
90 |
计算工作量 |
5 |
5 |
事后总结,并提出过程改进计划 |
10 |
10 |
合计: |
420 |
489 |
3. 被测代码及接口简介:
我所测试的内容是文件输入部分,包括头文件<file.h>和<file.cpp>,其中file.cpp对输入路径进行分析,打开文件,并将文件内容拷贝到字符串缓冲区,缓冲区将作为返回值用于字符计数时的字符读取。
实现方法:打开给定路径下的文件,统计文件长度,根据文件长度申请足够的缓冲区,将文件内容读入缓冲区,处理文件结尾,返回缓冲区的地址。
关键方法:
*文件长度获取:
fseek(fp, 0, SEEK_END);
num = ftell(fp);
fseek(fp, 0, SEEK_SET);
先将文件索引指针指向文件末尾,ftell(FILE*)用于获取索引指针距离文件首部的距离,即文件中的可见字符个数。
*文件尾部处理:
buf = (char *) malloc (sizeof(char) * (len + 2));
fread(buf, sizeof(char), len, fp);
fclose(fp);
*(buf + len) = ‘ ‘;
*(buf + len + 1) = ‘\0‘;
缓冲区长度比字符数大2,其尾部分别设置为” ”,”\0”,其目的是方便在读取单词时可以方便读取最后一个单词。
鉴于文件读取模块功能简单,共可以设计10个测试用例,基于黑盒测试的理念,对输入的等价类划分为 无输入,正确输入,无效输入(输入是文件夹),错误输入。由于输入是文件路径,无法指定边界划分。基于白盒测试,对代码中的判定节点进行条件覆盖可将输入分为无效输入和正确输入(已包含在黑盒测试中)。针对需求中要求的单词类型,共提供6种测试用例,单元测试用于判断对这些文件是否读取正确。
Input 输入 | Procedure 操作步骤 | Output 预期结果 | Result 实际结果 | Status 是否通过 | Remark 备注(在此描述使用的测试方法) |
空 | open file error | open file error | OK | 等价类测试:无输入 | |
.\\TestCase.\\test1.txt | h | h | OK | 等价类测试:正确输入 | |
H:\\asdasd | open file error | open file error | OK | 等价类测试:错误输入 | |
.\\* | open file error | open file error | OK | 等价类测试:无效输入 | |
abc | abc | abc | OK | 检测读取内容是否一致 | |
hello- | hello- | hello- | OK | 检测读取内容是否一致 | |
let‘s | let‘s | let‘s | OK | 检测读取内容是否一致 | |
a-b | a-b | a-b | OK | 检测读取内容是否一致 | |
1_3 | 1_3 | 1_3 | OK | 检测读取内容是否一致 | |
my you | my you | my you | OK | 检测读取内容是否一致 |
关于测试质量:测试用例已经覆盖所有可能出现的情况,测试质量有所保障。
关于测试模块质量:测试结果显示所有测试均符合预期,被测模块质量得到保障。
0.3。
静态测试:
文档总结:
原则:简明易读。
代码风格规范:
* 缩进:4空格
* 行宽:100字符
* 括号:表明逻辑优先级
* 断行与空白{}行:程序模块{}分割,{}各占单行
* 分行:一句一行,变量定义各自成行
* 命名:“匈牙利命名法”,从命名中可以直接理解该命名的含义
* 下划线:作用域_名称
* 书写:所有的类型/类/函数名都用Pascal形式,所有的变量都用Camel形式。
*类/类型/变量:名词或组合名词,如Member、ProductInfo等。
*函数则用动词或动宾组合词来表示,如get/set; RenderPage()。
* 注释:注释代码都采用ASCII码,不要使用中文等,提高可移植性
注明做什么,为什么,不需要解释怎么做
程序开头注明变量含义
设置字体风格
*注释分析:
/*
**function: process text and get statistical result
*/
符合要求:多行注释在中间行前加**,全部采用英文书写,对函数功能进行说明。
*缩进分析:
void WcPro::processText()
{
/*state val and initialize them*/
char c; //visit all char and process it
char *pText = textBuf; //a copy from private member val
符合要求:缩进4个字节,结构清晰,通常IDE都会自动控制缩进,使代码美观。
*分行分析:
char *pText = textBuf; //a copy from private member val
int word_flag = NOT_WORD; //mark current word state
int state = SPACE; //DFA state
符合要求:一句一行,每个变量的定义自成一行,注释也较为清晰。
*函数名分析:
void WcPro::processText()
符合要求:采用常规约定,第一个单词小写,之后的单词首字母大写。
cppcheck使用:https://blog.csdn.net/e5max/article/details/11489137
问题1:(style) Class ‘WcPro‘ has a constructor with 1 argument that is not explicit.
风格警告 :风格有关问题的代码清理(未使用的函数、冗余代码、常量性等等)
该问题是说构造函数参数不明确。我分析是代码中构造函数没有设置默认输入所导致的。可以在参数列表加入默认值即可。
问题2:(information) Cppcheck cannot find all the include files (use --check-config for details)
信息消息 :配置问题,建议在配置期间仅启用这些。
该问题表示没有找到所有的include文件。我查了一下,结论是:这个是cppcheck自己的配置问题,不代表代码问题。
标签:rom format product git 技术分享 get ini 有关 line
原文地址:https://www.cnblogs.com/ys112358/p/8747976.html