以下是某C++程序,用来判定用户口令,请仔细阅读程序并完成要求。
//**********************************************************//
// 口令检验程序 //
// //
// 文件名:password_check.cpp//
//**********************************************************//
#include
#include
//**********************************************************//
// 主 函 数//
//**********************************************************//
void main(void)
{
char password[128]={’\0’);
cout<<"请输入您的口令:";
cout.flush();
while(true){
cin.getline(password, 128,’\n’);
if(strlen(password)<6) //口令长度少于6位
{
cout<<"您的用户口令少于6个字符!"<endl;
cout<<"请重新输入:";
cout.flush();
}else{
bool capital=false; //检验是否有大写字母
bool lowercase=false; //检验是否有小写字母
bool digit=false;//检验是否有数字
for(unsigned int i=0;i<strlen(password);i++){
if(password[i]>=’A’&&password[i]<=’Z’)
capital=true;
if(password[i]>=’a’&&password[i]<=’z’)
lowercase=true;
if(password[i]>=’0’&&password[i]<=’9’)
digit=true;
}
//判断用户输入的口令中缺少哪中字符
if(!capital){
cout<<"您的用户口令中没有大写字母!"<<endl;
cout<<"请重新输入:";
}else if(!lowercase){
cout<<"您的用户口令中没有小写字母!"<<endl;
cout<<"请重新输入:";
}else if(!digit){
cout<<"您的用户口令中没有数字!"<<endl;
cout<<"请重新输入:";
)else{
cout<<"您的口令满足要求!"<<endl;
break;
}
}
}
}
设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句或分支覆盖率无法达到100%,需说明为什么。 |
参考答案:
解析:测试用例设计如下。 分几种情况考虑,第一要满足所有条件,例如asl23CD;第二要都不满足条件,例如#¥%%@¥&;第三要长度小于6,例如sal;第四要有错误的输入,例如空输入,cin.getline无法获取回车符。 测试用例为: asl23CD #¥%%@¥& Sal (回车符,空输入)