?
2: 参考答案:
?
试题内容: o (10分)
QESuite Web Version 1.0中,已知某安全文档管理系统测试项目的部分信息如下:
●在测试过程中先后产生4个测试版本,按日期排序分别为SEDM 1.0_101009,SEDM 1.0_101025,SEDM1.0_101103,SEDM1.0_101106。
●功能分类视图中部分待测区域及人员分配定义如下表所示:
o
?
3: 参考答案: (2)测试用例:
①输入:bookCount,输出:合法!
②输入:puts,输出:常、变量标识不能用C语言预定义函数名! ③输入:5student,输出:首字符只能是字母或下划线!
④输入:stu+name,输出:常、变量只能由字母、下划线和数字构成! ⑤输入:float,输出:常、变量标识不能用C语言关键字! ⑥输入:
putsfloatstudentsnamechinachineseenglishchinachinesechinachina,输出:内存不够!
⑦输入:_StuId,输出:合法!
该程序的语句覆盖率或分支覆盖率均无法达到100%,因为该程序允许中
间返回值。如果if条件中任意一个成立就立即返回,那么剩下的语句就无法执行;即使所有的if条件均不成立,运行到最后,那么if条件成立时的语句就无法执行,其覆盖率始终无法达到100%。
?
试题内容: o (20分)
已知C源程序如下:
/**************************************************/ /*功能:检查输入的标识符是否符合C语言规则*/
/**************************************************/ #include
o
char* IsLegal(char*CheckWor D.;
const int MaxWordLen=32;
char*ErrorMessages[]={/*错误信息列表*/ \合法!\
\首字符只能是字母或下划线!\
\常、变量只能由字母、下划线和数字构成!\\常、变量标识不能用C语言关键字!\,
\常、变量标识不能用C语言预定义函数名!\, \内存不够!\};
int main() {
char *Prompt=\语言标识符的命名要遵守以下原则:\char *TestWord; inti;
TestWord=(char *)malloc(sizeof(char)*MaxWordLen); /*TestWord存放用户输入*/ if(!TestWor D.
return 1;
/*显示部分提示信息*/ puts(Prompt);
for(i=1;i<=4;i++){
puts(ErrorMessages[i]); }
while(1){
printf(\\n\n请输入一个标识符(大写的Q退出):\提示*/ scanf(\D.;/*得到用户输入*/
if(toupper)(TestWord[0]))==0) break;/*循环出口*/
printf(\\n%s%s\D.);/*判定标识符的合法性*/ }
free(TestWor D.;
return 0; }
/*此函数检验标识符命名的合法性*/ char*IsLegal(char*CheckWor D. {
char*KeyWords[]
={\t\
\\\\\\
\关键字列表*/ char*Functions[]
={\n\
\\\\\\\\\主要预定义函数列表*/
char*Others=\?_?也可以用于关键字,但我们不推荐您使用!*/
int WordLength,i; char*WordTemp;
WordLength=strlen(CheckWor D.;
/*检查标识符命名原则1*/
if((isalpha(CheckWord[0])==0)&&(CheckWord[0]!=Others[0]))
return ErrorMessages[1]; /*检查标识符命名原则2*/ for(i=0;i<WordLength;i++) if((isalnum(CheckWord[i]==0)&&(CheckWord[i]!=Others[0])) return ErrorMessages[2]; /*检查标识符命名原则3*/ for(i=0;i<44;i++) {
if(!strcmp(CheckWord,KeyWords[i])) return ErrorMessages[3]; }
/*检查标识符命名原则4*/ for(i=0;i<69;i++)
{
if(!strcmp(CheckWord,Functions[i])) return ErrorMessages[4]; }
return ErrorMessages[0]; }
(1)参照QESAT/C软件分析与测试工具的规定,画出程序中所有函数的控制流程图;(11分)
(2)设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率尽量达到最大。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。(9分)