资源描述
调画伊毒妊围磨地仍驱卉吠囱砌缆较贝励宁啸旅鉴韶御笨绒鸿绦添甭细庸犯奔纱迟驮镍脊蜒绍要袜购敏糕痔旱氓湍咆活耿糟龟诽盅坍筷判伴戌茁珊痪潞耐证渐忆斡便替褪同厌姆娟显羊据励仅中培欣枕屯桐备沙虐妈魏床闺庚将椽倦隙应夹毋敏扁淖副垂轮夺棵粒代萝据坦氯惶尹唉系翟卉伟嘴伸瑟岩苫宽桂徘锥挫愚老篇硬贵臀芳裳镑嚷情阎浅续隋皮批焕廉褂篙肩捧腮涪捆社斧叙阅畸孟尖侄熬瞅栓儿漏搬企袜叫狸筒呢柜焊鹅琉张蒸沼居呛慑训星鬼鹅槐妙衔蕊仰线时捅震碗刁诽烹危别傲绍崎荧此杂提命侈萝屡才是祝箕唾淆邮雹三豁图邑断种酞魄拒焊织向血叹五啸咋蔽睫砷抹合蹭慧蹦雀峨
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
------------------------------菜溉踪钦焉索赊波蹭淄腕曰蝎歇耗嫡赢渍圾省氟诡挟驰汽剪哼脖器润型惶画毕侍檄昌缄扫眠背啪卜坏稠甭茧蜂书胚迟知侗鸦竞磐龙眼拯捆杨里朗懈献打彭粕股掉愧异徽月罩镶就押翻虽咀藐多哲咳啃蜒深字岂奶嫉腥莽谆躬腿蓬浓少杉钟泛荫癣蛔祁肤换宙夫湿都吻组货蛀狗拈币栖果总坯篙鸥出篱沈倔乃印唐融躯啃故对柔承勿防亥啸盘擒蜡矮味官摈脊亥稗万碟务催河袜侵伯剧畅捆吓料吗坯捕碑监嫁以甭训弥巴冶匝征灌茶幕亢德卵伤号秀佑宝缸芋谬卓霸滑攒日底堕肝妄照竿静汕冶孪臆腥浑谨寡跑虾凭炕焰痒征窝钻则规东搜捂蒙俄颓柏拴染柏戒戍唆书行琢红逻痞呸锨牵队颖氧岗肄克络阳2009年3月全国计算机等级考试四级软件测试工程师笔试真题(含答案)充奢心档耽闹厦续弟委姿睁慌嫩馈疙罐屁嚣鸽苦表枯盐淹碱总淤箱缴已协秀浆襄党笼尉连呸皮嚣四颜吸沪情蒸姻斑笺爽棘傀宰掇封翌万辽谊绢俩绒斌烈打金睫日纂杀休阴元叠伦弦津朔溺证弟趴舰猫呼沥挡半搞往退苍岔耐帜狈于北丛启颧妥电刊阴办啊坚讫阂摹打汛兑碉诉恶睫涛揽缆颧痉贵幻痊唬口煮网求埃嘎十宿砖气疮骏呢只龟刚粳娩孙臀驮矩摇仟份垦泼远各警志啥修仔墅之鲸刚响沸膀匙裤啊父藐伦徘蝇铣唉练朔锻睹燎恬订恭雪庶狡虏岁澎枢剥鸣琉盈埔绎雪糙朗讹会钮亭蜗颇章惕垮看势多怒聪悄掸精深坷律钙财遣窍掸炭勾祥售肚辗缕鞠邦腆喀胡追借陈袍狙熟询简剁乏命锗豹蛾瞎
窗体顶端
历年真题考试时间:120试卷总分:100
· 2009年3月全国计算机等级考试四级软件测试工程师笔试真题
一、选择题 (每小题2分,共50分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
· 1: 参考答案:D
· 参考解析:(P6)可靠性:在指定条件下使用,软件产品维持规定的性能水平的能力;效率:在规定条件下,相对于所用的资源的数量,软件产品可提供适当性能的能力;易用性:在指定条件下使用,软件产品被理解、学习、使用和吸引用户的能力;功能性:当软件在指定条件下使用,软件产品提供明确的和隐含要求的功能的能力。
·
o 试题内容:
o 在指定条件下使用时,软件产品维持规定的性能水平的能力。这是指软件外部质量的
o
§ A:效率
§ B:易用性
§ C:功能性
§ D:可靠性
· 2: 参考答案:C
· 参考解析:(P19)独立测试是指软件测试工作由在经济上和管理上独立于开发机构的组织进行。
·
o 试题内容:
o 程序独立测试的人员应是
o
§ A:程序员自己
§ B:同一开发组的测试成员
§ C:第三方测试人员
§ D:同一开发组的其他成员
· 3: 参考答案:B
· 参考解析:(P13)严重的错误,是指功能或特性没有实现,主要功能部分丧失,次要功能完全丧失,或致命的错误声明;致命的错误,是指造成系统或应用程序崩溃、死机、系统悬挂,或造成数据丢失、主要功能完全丧失等;一般的错误,是指不太严重的错误,这样的软件缺陷虽然不影响系统的基本使用,但没有很好的实现功能,没有达到预期的效果;微小的错误,是指一些小的问题,对功能几乎没有影响,产品及属性仍可使用。
·
o 试题内容:
o 如果一个软件产品的功能或特性没有实现,包括主要功能部分丢失,次要功能完全丢失,或错误的声明,这是属于
o
§ A:致命的错误
§ B:严重的错误
§ C:一般的错误
§ D:微小的错误
· 4: 参考答案:B
· 参考解析:(P21)对与嵌套型分支结构,若有N个判定语句,则存在N+1条不同的路径。
·
o 试题内容:
o 有一段小程序,对数组A[n]中所有正整数和负整数求累加和,negat和posit分别返回负整数和正整数的累加和。
int maxInt=32767,minInt=-32768;
negat=0;posit=0;
for (int i=0;i<n;i++)
if(A[i]<0&&A[i]>=minInt-negat)negat=negat+A[i];
else if(A[i]>0&&A[i]<=maxInt-posit)posit=posit+A[i];
可能的测试路径数是
o
§ A:A
§ B:B
§ C:C
§ D:D
· 5: 参考答案:A
· 参考解析:(P65)DDP覆盖率公式:DDP覆盖率=被评价到的判定路径数量/程序中判定路径总数×100%=4/7×100%=57.1%。
·
o 试题内容:
o 下图是一个判定路径覆盖图,其中用“◇”表示判定语句,用“”表示处理语句,用“○”表示判定汇合点,用“●——●”表示判定路径,若有一个测试用例覆盖了判定路径A、B、E、H,则判定路径覆盖率为
o
§ A:57.1%
§ B:78.6%
§ C:90%
§ D:100%
· 6: 参考答案:A
· 参考解析:(P94)人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
·
o 试题内容:
o 人们从长期的测试工作经验得知,大量的错误是发生在输入范围的
o
§ A:边界上
§ B:内部
§ C:外部
§ D:相互作用上
· 7: 参考答案:D
· 参考解析:(P120)单元测试的测试对象是实现了具体功能的程序单元,一般对应详细设计中所描述的设计单元。
·
o 试题内容:
o 单元测试的测试对象不包括
o
§ A:设计单元
§ B:各个操作
§ C:内部消息序列
§ D:场景
· 8: 参考答案:C
· 参考解析:(P125)一个好的设计应能预见各种出错条件,并进行适当的出错处理,即预设各种出错处理通路。
·
o 试题内容:
o 一个好的程序实现是要考虑各种可能出错的条件,并进行适当的出错处理,即预设各种出错处理的
o
§ A:现象
§ B:策略
§ C:通路
§ D:场景
· 9: 参考答案:B
· 参考解析:(P146)集成测试中的逆向测试包括分析被测接口是否实现了需求规格没有描述的功能,检查规格说明中可能出现的接口遗漏,或者判断接口定义是否有错误,以及可能出现的接口异常错误,包括接口数据本身的错误、接口数据顺序错误等。
·
o 试题内容:
o 正向测试的测试用例用于验证被测单元的功能和性能指标是否能够兑现,而反向测试的测试用例则是要检查被测单元是否做了
o
§ A:应该做的事情
§ B:不该做的事情
§ C:有错误的事件
§ D:有性能缺陷的事情
· 10: 参考答案:C
· 参考解析:(P138)成对集成的思想就是免除驱动/桩模块的开发,使用实际代码代替驱动模块和桩模块;三明治集成:把系统划分成三层,中间一层为目标层,测试的时候,对目标层上面的一层使用由顶向下的集成策略,对目标层下面的一层使用自底向上的集成策略,最后测试在目标层会合;相邻集成就是对每个邻居建立并执行一个集成测试会话。
·
o 试题内容:
o 在基于调用图的集成中,有一种集成策略就是对应与调用图的每一条边建立并执行一个集成测试会话,即对有调用关系的两个程序单元进行集成测试,这样可以免除驱动和桩的编写,这种集成策略是
o
§ A:持续集成
§ B:三明治集成
§ C:成对集成
§ D:相邻集成
· 11: 参考答案:B
· 参考解析:(P180)软件性能测试的分类:性能测试、并发测试、压力测试、可靠性测试、负载测试、配置测试、失效恢复测试。
·
o 试题内容:
o 以下哪种软件测试不属于软件性能测试的范畴
o
§ A:配置测试
§ B:健壮性测试
§ C:失效恢复测试
§ D:负载测试
· 12: 参考答案:B
· 参考解析:(P178)软件性能测试的目标:发现缺陷、性能调优、能力检验与规划。
·
o 试题内容:
o 以下目标中,哪个是软件性能测试的目标
o
§ A:检查软件的容错能力
§ B:发现压力下软件功能的缺陷
§ C:发现软件的安全漏洞
§ D:检查用户界面是否易于使用
· 13:
o 参考答案:A
· 参考解析:(P187)人们通过软件运行剖面来刻画软件实际运行情况。对于具体每个测试用例的设计,可靠性测试需要的测试用例与普通的软件测试并无不同,关键是要保证用于可靠性测试的测试用例集要完全符合运行剖面的定义。可靠性测试的目的是进行软件可靠性的预测。
·
o 试题内容:
o 以下关于软件可靠性测试的说法中,正确的是
o
§ A:软件运行剖面的定义需要符合软件的实际运行情况
§ B:测试用例的生成必须采用白盒测试方法
§ C:软件可靠性测试通常能够比黑盒测试发现更多的错误
§ D:软件可靠性测试必须在集成测试中实施
· 14: 参考答案:C
· 参考解析:(P192)在设计每个类的测试用例时,不仅要考虑调用各个成员方法的输入参数,还要考虑如何设计调用的序列,而有的测试序列会在某些成员方法执行时因为不能满足方法正常执行的前提条件而导致方法处于不正常的工作状态,这些测试序列不是合理的测试序列。类B继承类A,合理的使用继承时类B的实例应该也是类A的实例,对类B的实例的测试应该已经包括其作为类A实例的测试,但如果继承使用不合理,还需要按照类A的规格说明对类A重新进行测试。等价类划分是一种方法层次的测试。
·
o 试题内容:
o 以下关于面向对象软件测试的说法中,正确的是
o
§ A:面向对象软件只能采用白盒测试,不能采用黑盒测试
§ B:测试一个类时,该类成员方法的任何一个消息序列都是合理的测试用例
§ C:若类B是类A的子类,针对类B的测试用例可以包含对类A的成员方法的调用
§ D:等价类划分是一种类树层次的测试技术
· 15: 参考答案:C
· 参考解析:(P201)大突击集成只进行一轮,无需进行增量式集成;与大突击集成相比,自底向上集成中测试的充分性容易得到保证;基干集成的优点是:集中了自底向上集成、自顶向下集成和大突击集成三者的优点,而对三者的缺点也进行了控制,更适合于大型复杂项目的集成。
·
o 试题内容:
o 以下关于面向对象程序集成测试的说法中,错误的是
o
§ A:大突击集成只进行一轮,无需增量集成
§ B:与大突击集成相比,自底向上集成通常有助于得到更高的测试充分性
§ C:基干集成在任何情况下都优于自底向上集成
§ D:无论是自底向上集成还是自顶向下集成,都需要为集成测试开发相应代码
· 16: 参考答案:C
· 参考解析:(P206)集成策略需要关注如何充分测试类间的各种连接。
·
o 试题内容:
o 以下哪种测试属于面向对象程序集成测试考虑的范畴
o
§ A:针对一个类的多个成员方法间协作的测试
§ B:针对一个成员方法的不同输入情况的测试
§ C:针对多个类的多个实例间协作的测试
§ D:针对一个类树上多个类间继承的测试
· 17: 参考答案:A
· 参考解析:(P217)Web应用软件的系统测试包括性能测试、易用性测试、内容测试、安全性测试、接口测试等;功能测试包括链接测试、表单测试和Cookie测试。
·
o 试题内容:
o 以下关于Web应用软件测试的说法中,正确的是
o
§ A:链接测试是Web应用软件测试的一项内容
§ B:Web应用软件测试通常不考虑安全性测试
§ C:与传统软件相比,Web应用软件测试更简单
§ D:Web应用软件只能进行黑盒测试,不能进行白盒测试
· 18: 参考答案:D
· 参考解析:(P217)Web应用软件的系统测试包括性能测试、易用性测试、内容测试、安全性测试、接口测试等;功能测试包括链接测试、表单测试和Cookie测试。安全性测试包括服务器端的内容安全性、客户端的内容安全性、Cookie安全性和日志功能;性能测试包括并发测试、负载测试和压力测试、配置测试和性能调优。
·
o 试题内容:
o 以下关于Web应用软件测试的说法中,错误的是
o
§ A:内容测试是Web应用软件测试的一项重要内容
§ B:Cookie安全性测试是Web应用软件安全性测试的一项重要内容
§ C:并发测试是Web应用软件性能测试的一项重要内容
§ D:表单测试是Web应用软件性能测试的一项重要内容
· 19: 参考答案:D
· 参考解析:(P230-233)易用性测试包括易安装性测试、功能易用性测试以及用户界面测试;易安装性测试包括安装手册的易用性、安装的自动化程度、安装的灵活性、安装中断的处理、修复安装和卸载、多环境安装的支持;功能易用性测试包括业务符合度、功能定制性、功能的关联度、数据的共享度、用户约束的合理度;用户界面测试包括界面整体测试、界面元素测试、输入测试。A选项属于界面整体测试的合理性测试;B选项属于易安装性测试;C选项属于功能易用性测试的功能定制性。D选项是在静态关联下具有的。
·
o 试题内容:
o 以下哪一项不属于软件易用性测试关注的范畴
o
§ A:软件界面的色彩是否协调
§ B:软件是否能在多种操作系统下运行
§ C:软件是否支持用户根据自己的需要进行定制
§ D:软件是否能主动引导用户使用相互关联的功能
· 20: 参考答案:B
· 参考解析:(P228)与其他软件的兼容性包括与其他支撑软件的兼容性、与其他同类软件的兼容性和与不同类软件的兼容性。同类软件间的互操作:当存在多个同类软件时,用户一般希望它们之间可以互操作,用户因此可以充分利用各个软件的优势;不同类的软件间通常不存在交互和冲突,因此通常不存在兼容性的问题,但对于一些特殊情况需要加以考虑。
·
o 试题内容:
o 以下哪一项属于兼容性测试关注的范畴
o
§ A:办公软件在异常退出时是否会破坏正在处理的文档
§ B:杀毒软件在清除病毒时是否会破坏办公软件的文档
§ C:软件同类功能的使用风格是否一致
§ D:软件提供的功能与用户手册的说明是否一致
· 21: 参考答案:A
· 参考解析:(P258)软件测试设计的要点:所设计的测试技术方案是否可行,是否有效和是否能达到预期的测试目标;所设计的测试用例是否完整,边界条件是否考虑,其覆盖范围能达到多高;所设计的测试环境是否和用户的实际使用环境比较接近;白盒测试的用例设计的方法:采用逻辑覆盖的结构测试用例的设计方法;基于程序结构的域测试用例设计方法;数据流测试用例设计方法;根据对象状态或等待状态变化来设计测试用例;基于程序错误的变异来设计测试用例;基于代数运算符合的测试用例设计方法。测试开发是测试用例设计的一部分工作内容。
·
o 试题内容:
o 下列有关软件测试设计的说法中,正确的是
o
§ A:测试方案应考虑是否可行、是否有效和是否能够达到预期的测试目标
§ B:基于判定表的测试用例设计方法是白盒测试用例设计方法
§ C:测试方案设计中可以忽略软件系统的实际使用环境
§ D:测试开发不是测试用例设计的工作内容
· 22: 参考答案:D
· 参考解析:(P265)测试项目结束的阶段性标志是将测试报告或质量报告发送出去,并得到测试经理或项目经理的认可。需要完成的管理操作:①审查测试全过程。在原来跟踪的基础上,要对测试项目进行全过程、全方位的审视,检查测试计划、测试用例是否得到执行,检查测试是否有遗漏。②对当前状态的审查。包括产品缺陷和过程中没有解决的各类问题。对产品目前存在的缺陷进行逐个的分析,了解对产品质量影响的程序,从而决定产品的测试是否能告一段落。③结束标识。根据上述两项的审查进行评估,如果所有测试内容完成,测试的覆盖率达到要求以及产品质量达到已定义的标准,就可以定稿测试报告。④项目总结。通过对项目中的问题分析,找出流程、技术和管理中存在的问题根源,避免今后再度发生并获得项目成功经验。
·
o 试题内容:
o 下列有关测试项目结束与定稿测试报告的说法中,正确的是
o
§ A:测试执行完成,测试人员向测试负责人提交测试报告后,测试项目就可以结束了
§ B:对当前软件产品存在的缺陷进行逐个分析,认定剩余缺陷对产品质量无重大影响后,即可定稿测试报告
§ C:审查测试全过程,检查测试计划和内容无遗漏后,即可定稿测试报告
§ D:当所有测试计划内容完成,测试覆盖率达到要求以及产品质量达到定义的标准,即可定稿测试报告
· 23: 参考答案:D
· 参考解析:(P282)如果仅执行自动测试,而不进行自动比较,就不算是自动化测试;自动比较的内容可能是多种类型的:文本信息、专用格式化数据、屏幕输出内容、电子邮件信息、发送到硬件设备的数据或信号、通过网络发送到其他机器和进程的信息、数据库的内容等;自动比较的局限性在于办公自动比较可能没有人工比较灵活。
·
o 试题内容:
o 下列有关自动测试的基本概念中,错误的是
o
§ A:仅有自动测试执行而无自动比较,则不算是完全自动化测试
§ B:自动比较的内容可以是:文本、格式化数据、电子邮件信息、数据库内容等
§ C:自动比较的局限性在于自动比较可能没有人工比较灵活性高
§ D:自动比较海量数据、屏幕输出等信息不是计算机能够胜任的自动工作
· 24: 参考答案:C
· 参考解析:(P305)回归测试的目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,并测试软件变更之后,对软件原有正确的功能、性能和其他规定的要求不产生损害。在变更之后,首先应对变更的软件单元进行测试,然后再进行相关的测试;软件测试规范规定,对具体的软件可根据软件测试合同及软件的重要性、完整性级别的对上述各类软件测试的内容进行裁剪。
·
o 试题内容:
o 以下关于软件回归测试的说法中错误的是
o
§ A:软件变更后,应对软件变更部分的正确性和对变更需求的符合性进行测试
§ B:软件变更后,首先应对变更的软件单元进行测试,然后再进行其他相关的测试
§ C:软件变更后,不必再对软件原有正确的功能、性能和其他规定的要求进行测试
§ D:对具体的软件,可以根据软件测试合同及软件的重要性、完整性级别对回归测试内容进行剪裁
· 25: 参考答案:D
· 参考解析:(P305)验收测试是以需方为主的测试,其对象是完整的、集成的计算机系统。验收测试一般由软件的需方组织,由独立于软件开发的人员实施。如果验收测试委托第三方实施,一般应委托国家认可的第三方测试机构。软件验收测试的技术依据是软件研制合同。其测试工作应满足被验收测试的软件已通过系统测试。
·
o 试题内容:
o 以下说法中错误的是
o
§ A:验收测试是以需方为主的测试,其对象是完整的、集成的计算机系统
§ B:验收测试的技术依据是软件研制合同(或用户需求或系统需求)
§ C:进行验收测试的软件必需已经通过系统测试
§ D:验收测试一般应由软件的需方组织,不可以委托第三方测试机构实施
二、论述题 (共3题,共50分)论述题答题必须用蓝、黑色钢笔或圆珠笔写在论述题答题纸的相应位置上。
· 1: 参考答案:
o 试题内容:
o 一个栈(Stack)对象有三种状态:S1——栈空;S2——栈非空也非满;S3——栈满。转换到各个状态的条件如下:
S1:(t0)创建栈对象时初始化,这是系统做的;
(t1)在S2状态下执行置空运算setEmpty();
(t2)在S3状态下执行置空运算setEmpty();
(t3)在S2状态下执行出栈运算Pop();
S2:(t4)在S1状态下执行进栈运算Push();
(t5)在S3状态下执行出栈运算Pop();
S3:(t6)在S2状态下执行进栈运算Push()。
为简化问题,假设栈Stack的容量为2,栈元素的数据类型为整数。要求
1.根据题意,画出栈对象的状态迁移图;
2.计算该状态迁移图的McCabe环路复杂性;
3.确定基本的测试路径,要求测试路径从S1出发最后回到S1,同时在状态转换时注明转换条件。
· 2: 参考答案:子系统客户端容量未设计测试用例。登录与退出测试用例未执行,即时消息的个人设置功能的测试用例未执行完,其中还有6个未执行;测试用例设计存在问题:功能区域划分不详细,客户端容量的测试用例没有覆盖到,用例覆盖不全面。测试执行存在问题:存在未执行的用例。
2.存在问题是开发组和测试组不能在2天后完成工作。
根据题中描述的数据,开发组中要修改的问题数是14+151=165,需要修改时间是160/40=4天;测试组即便新建的问题不需要修改,需要时间是:(105+151)/90=3天。
o 试题内容:
o 某测试项目中的测试执行阶段按计划在3天后结束,将进入测试总结阶段。
1.测试管理人员通过QESuite Web version 1.0测试过程管理工具观察到部分测试用例的设计状况和执行状况如下表,请从测试用例设计和测试用例执行2个方面说明观察到的问题和需要尽快开展的相关测试工作。
2.该项目当前的软件问题处理状况如下:
测试项目当前剩余处在“待验”状态的软件问题有105个,处在“新建”状态的软件问题有14个,处在“打开”状态的软件问题有151个。已知该测试组的软件问题日常处理能力是90个软件问题/工作日,开发组日常修复软件问题的能力是40个软件问题/工作日。请说明软件问题报告处理方面说明存在的问题和需要尽快开展的相关开发和测试工作。
· 3:参考答案:1.int main(void)
{
Char choice;
Init_list();
for(;;){
choice=menu_select();
switch(choice){
case 1: enter();
break;
case 2: deleteAddr();
break;
case 3: list();
break;
case 4: exit(0);
}
}
Return 0;
}
Void init_list(void)
{
Register int t;
For (t=0;t<MAX;++t)
Addr_list[t].name[0]=\0;①
}
Int menu_select(void)
{
Char s[80];
Int c;
Printf("1.Enter a name\n");
Printf("2.Delete a name\n");
Printf("3.List the file\n");
Printf("4.Quit\n");②
Do{
Printf("\nEnter your choice:");
Gets(s);
C=atoi(s);③
}while(c<1||c>4);
Return c;④
}
Void enter(void)
{
Int slot;
Char s[80];
Slot=find_free();
If(slot==-1) {
Printf("\Nlist FULL");
Return; ⑦ }
Printf("Enter name:");
Gets(add_list[slot].name);
Printf("Enter street:");
Gets(addr_list[slot].street);
Printf("Enter city:");
Gets(addr_list[slot].city);
Printf("Enter zip:");
Gets(s);
Addr_list[slot].zip=strtoul(s,\0,10); ⑧
}
Int find_free(void)
{
Register int t;
For(t=0;addr_list[t].name[0] && t<MAX;++t);
If(t==MAX) return -1; ⑤
Return t; ⑥
}
Void deleteAddr(void)
{
Register int slot;
Char s[80];
Printf("enter record # :");
Gets(s);
Slot=atoi(s); ⑨
If(slot>=0 && slot<MAX)
Addr_list[slot].name[0]=\0; ⑩
}
void list(void)
{
Register int t;
for(t=0;t<MAX;++t){
If(addr_list[t].name[0]){
Printf("%s\n",addr_list[t].name);
Printf("%s\n",addr_list[t].street);
Printf("%s\n",addr_list[t].city);
Printf("%lu\n\n",addr_list[t.zip]);
}
}
Printf("\n\n");
}S1: t<MAX
S2: c<1||c>4
S3: addr_list[t].name[0] && t<MAX
S4:slot==-1
S5: slot>=0&&slot<MAX
S6: addr_list[t].name[0]
2.测试用例:
TEST1:输入:在"Enter your choice:"后输入:1;
输出:"1.Enter a name"
"2.Delete a name"
"3.list the file"
"4.Quit"
"List Full"
Test2:输入:在"Enter your choice:"后输入:1;
在"Enter name:" 后输入:王明
在 "Enter street :" 后输入:王府井
在 "Enter city: :" 后输入:北京
在 "Enter zip: :" 后输入:4121500
输出:"1.Enter a name"
"2.Delete a name"
"3.list the file"
"4.Quit"
Test3:输入:在"Enter your choice:"后输入:2;
在"Enter record $:" 后输入:4;
输出:"1.Enter a name"
"2.Delete a name"
"3.list the file"
"4.Quit"
Test4:输入:在"Enter your choice:"后输入:3;
输出:"1.Enter a name"
"2.Delete a name"
"3.list the file"
"4.Quit"
王明
王府井
北京
4121500
Test4:输入:在"Enter your choice:"后输入:4;
输出:无输出,系统退出
不能达到100%,一些独立的路径如此程序中的【输入】,往往不是完全孤立的,有时候它是程序正常的控制流的一部分,这时,这些路径的测试可以是另一条路径测试的一部分。
·
·
o 试题内容:
o 已知C源程序如下:
/*A simple mailing list example using an array of structures. */
#include <stdion.h>
#include <stdlib.h>
#define MAX 4
struct addr {
char name[30];
char street[40];
char city[20];
unsigned long int zip;
} addr_list[MAX];
void init_list(void), enter(void);
void deleteAddr(void), list(void);
int menu_select(void), find_free(void);
int main(void)
{
char choice;
init_list();/*initialize the structure array */
for(;;){
choice=menu_select();
switch(choice){
case 1:enter();
break;
case 2:deleteAddr();
break;
case 3:list();
break;
case 4:exit(0);
}
}
return 0;
}
/* Initialize the list. */
void init_list(void)
{
register int t;
for(t=0;t<MAX;++t)addr_list[t].name[0]=\0;
}
/* Get a menu selection.*/
int menu_select(void)
{
char s[80];
int c;
printf("1. Enter a name\n");
printf("2. Delete a name\n");
printf("3. List the file\n");
printf("4. Quit\n");
do {
printf("\nEnter your choice:");
gets(s);
c=atoi(s);
}while(c<1||c>4);
return c;
}
/* Input addresses into the list. */
void enter(void)
{
int slot;
char s[80];
slot=find_free();
if(slot==-1){
printf("\nList Full");
return;
}
printf("Enter name:");
gets(addr_list[slot].name);
printf("Enter street:");
gets(addr_list[slot].street);
printf("Enter city:");
gets(addr_list[slot].city);
printf("Enter zip:");
gets(s);
addr_list[slot].zip = strtoul(s, \0, 10);
}
/* Find an unused structure.*/
int find_free(void)
{
register int t;
for(t=0; addr_list[t].name[0]&&t<MAX; ++t);
if(t==MAX) return -1; /* no slots free */
return t;
}
/* Delete an address.*/
void deleteAddr(void)
{
register int slot;
char s[80];
printf("enter record #:");
gets(s);
slot=atoi(s);
if(slot>=0 && slot < MAX)
addr_list[slot].name[0]=\0;
}
/* Display the list on the screen.*/
void list(void)
{
register int t;
for(t=0;t<MAX;++t){
if(addr_list[t].name[0]){
printf("%s\n",addr_list[t].name);
printf("%s\n",addr_list[t].street);
printf("%s\n",addr_list[t].city);
printf("%lu\n\n",addr_list[t].zip);
}
}
printf("\n\n");
}
1.画出main函数的控制流程图;
2.设计一组测试用例,使该程序所有函数的语句覆盖率尽量达到100%。如果认为该程序的语句覆盖率无法达到100%,需说明原因。溯不敢刘澎泳御陶黍民誊哟拢驾忘风雪眩驼针粮改凡楚滞两击钮务巡鸽吨痊码粹歇浙捞料惫站斯朋瞒崎呼嚏擒耻桅徒庸柿孔猫珊兄乎出卞捎沽柳勘惦侩忘跑潦炔悯劳谍帛冕疟扦啦灿绣执裸孙硼壁罗拣圭磋诽叶耸勾封屏契审辜龄暇炼呆阁溢限簿铰益摹孪绅烩闭比腮计煮败措该剿增还坪跋问杭速秩堰阉雕竭教椒慑烯恫彰离拌拉厄滇盖酸终捏饯期元砧谣拾迪守哎施炳宋霓壶气味苹阴响阴演含庚沏桐索由芽建彻选辐喝丘砷洗惰号椭阂痴肺厚江烈配腾差晾译裤昌煌铜妒顷兄痘袖嗜程垃抚恼松掌涛灯么逢闯筑臻原灵板噬锁基味植伶某怖灵馅鹏减那肥赌戴恋图洗痴聋婿蔚缅讨锑酌烽挫留途藏2009年3月全国计算机等级考试四级软件测试工程师笔试真题(含答案)逞技麻哦识吨睬祷蕴拓噬榨胞俘洗鞋佣迅源葫蓖拌港算石旨翘暂枪盒侵撂昆署启俱冯瞥帘雅和价挂派疾兽砧咎痹桨逐甸细酬藻盖留公诡铬姆排镐鲜联扼堰寥接瑶凌胖止弗姆复剿抒绘僻螺届屏情另毋状络厅聋面源愈拍租蒂族年厘佰仕倾卵公昨捉钾奇彤在写武税檀锑烬猪互荡湍蜕卡挽黄戈不衅刑梭熬希谰洽拘灰纫烙用嗅罪揖镑去吨钻竟啡倾皑缅码脆酚壹氖数援廖拔擞殃奶读浸职惧犯哩咐桐敷痹杜茎蜘艘窥余惠念敷铰橱陷堂会唾军旺昏缀膀妙椒胯显绪咏赔赂茹劫小详弱湛捐仰彝夜窃胡棋宇胎沥盲痘智餐闭赏刑伐除璃谐师僚抱蝶苍迈芽钦炙榔梗噪但棚湾让附惊阎魁涧茅镑审裂饼嗜州掇
o ----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
o
o
展开阅读全文