logo资料库

2012下半年软件评测师考试真题及答案-下午卷.doc

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
2012 下半年软件评测师考试真题及答案-下午卷 试题一 某酒店预订系统有两个重要功能:检索功能和预订功能。检索功能根据用户提供的关键 字检索出符合条件的酒店列表;预订功能是对选定的某一酒店进行预订。现需要对该系统执 行负载压力测试。 该酒店预订系统的性能要求为: (1)交易执行成功率 100%; (2)检索响应时间在 3s 以内; (3)检索功能支持 900 个并发用户; (4)预订功能支持 100 个并发用户; (5) CPU 利用率不超过 85%; (6)系统要连续稳定运行 72 小时。 【问题 1】(3 分) 简述该酒店预订系统在生产环境下承受的主要负载类型。 【问题 2】(5 分) 对该系统检索功能执行负载压力测试,测试结果如表 1-1 所示,请指出响应时间和交易 执行成功率的测试结果是否满足性能需求并说明原因。 表 1-1 检索功能测试结果 检索执行情况 响应时间(s) (平均值) 1.3 3.7 6.6 交易执行成功率 100% 100% 98% 并发用户数 500 900 1000 【问题 3】(5 分) 对该系统执行负载压力测试,测试结果如表 1-2 所示,请指出 CPU 占用率的测试结果是
否满足性能需求并说明原因。 表 1-2 系统测试结果 服务器资源利用情况 并发用户数 CPU 占用率(%) 检索功能并发用户数 预订功能并发用户数 (平均值) 500 900 1000 【问题 4】(6 分) 50 100 120 35.5 87.3 92.6 根据【问题 2】和【问题 3】的测试结果,试分析该系统的可能瓶颈。
答案: 【问题 1】 该酒店预订系统在生产环境下承受的主要负载类型有: 1)并发用户数属于并发执行负载。 2)连续稳定运行 72 小时属于疲劳强度负载。 3)大量检索操作属于大数据量负载。 【问题 2】 测试结果不满足性能指标。当并发用户数为 900 时,响应时间为 3.7s,不满足响应时 间小于 3s 的要求;当并发用户数为 1000 时,响应时间为 6.6s,交易成功率为 98%, 但要 求检索功能的并发用户数最多为 900,当用户数为 1000 时,不能算作不满足。 【问题 3】 测试结果不满足性能指标。当 900 个检索并发用户和 100 个预订并发用户时,CPU 利用 率超过 85%;要求检索功能支持 900 个并发用户,预订功能支持 100 个并发用户,所以在 1000 个检索并发用户和 120 个预订并发用户时 CPU 占用率超过 85%不能算不满足。 【问题 4】 (1)系统没有采用合适的并发/并行策略。 (2)服务器 CPU 性能不足。 (3)数据库设计不足或者优化不够。 (4)服务器网络带宽不足。 解析: 【问题 1】 本问题考查系统的负载类型。 系统可能的负载类型包括并发执行负载、疲劳强度负载以及大数据量负载。针对这些负 载,在进行负载压力测试时,分别需要进行并发性能测试、疲劳强度测试以及大数据量测试。 本题中,要求检索功能支持 900 个并发用户,预订功能支持 100 个并发用户,这两个功能都 有并发访问的要求,这属于并发执行负载;要求系统能连续稳定运行 72 小时,这属于疲劳 强度负载;系统存在大量并发用户进行大量的检索和预订操作,这属于大数据量负载。 【问题 2】 本问题考查对负载压力测试的测试结果进行分析。
对检索功能来说,当检索并发用户数为 900 时,检索响应时间为 3.7 秒,不满足检索响 应时间在 3 秒以内的要求。因此该测试结果不满足性能指标。 当检索并发用户数为 1000 时,检索响应时间为 6.6 秒。而需求要求检索功能在支持 900 个并发用户的情况下响应时间在 3 秒以内,这样当 1000 个并发用户响应时间超出 3 秒时, 不能算作不满足性能指标。 【问题 3】 本问题考查对负载压力测试的测试结果进行分析。 当检索功能并发用户数为 900,预订功能并发用户数为 100 时,CPU 占用率为 87.3%,不 满足 CPU 利用率不超过 85%的要求。因此该测试结果不满足性能指标。 当检索功能并发用户数为 1000,预订功能并发用户数为 120 时,CPU 占用率为 92.6%o 而需求要求检索功能并发用户数为 900,预订功能并发用户数为 100 的情况下,CPU 利用率不 能超过 85%。这样当存在 1000 个检索功能并发用户和 120 个预订功能并发用户,而 CPU 占 用率超过了 85%的情况下,不能算作不满足性能指标。 【问题 4】 本问题考查对系统瓶颈的初步判断。 根据问题 2 可以看出,当并发用户数过多时,检索响应时间不满足需求。这个问题的可 能原因有三个,一是该模块程序没有采用合适的并发/并行策略,二是数据库本身的设计或 者优化不够,三是服务器网络带宽不足。 根据问题 3 可以看出,当并发用户数过多时,CPU 占用率不满足需求。这个问题的可能 原因是服务器 CPU 本身性能不够或者程序没有采用合适的并发/并行策略。 综上,根据问题 2 和问题 3 的测试结果,本系统的可能瓶颈包括:(1)系统没有采用合 适的并发/并行策略;(2)数据库设计不足或者优化不够;(3)服务器网络带宽不足;(4) 服务器 CPU 性能不足。
试题二 逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现 程序的覆盖。针对以下由 C 语言编写的程序,按要求回答问题。 struct _ProtobufCIntRange{ int start_value; unsigned orig_index; }; typedef struct _ProtobufCIntRange ProtobufCIntRange; int int_range_lookup (unsigned n_ranges, const ProtobufCIntRange *ranges, int value){ unsigned start,n; start=0; n=n_ranges; while(n>1){ unsigned mid= start+ n/2; if(value< ranges[mid].start_value){ n=mid-start; //4 } else if(value>=ranges[mid].start value+ ∥1 //2 //3 (int)(ranges[mid+1].orig_index-ranges[mid].orig_index)){ //5 unsigned new_start= mid+1; //6 n=start+n-new_start, start = new_start; } else //7 return ( value - ranges[mid].start_value ) + ranges[mid] , orig_index; }
if(n>0){ //8 unsigned start_orig_index= ranges[start].orig_index; unsigned range_size=ranges[start+1].orig_index - start_orig_index; if (ranges[start].start_value<=value && value< (int)(ranges[start].start_value+ range_size) ) //9, 10 return (value - ranges[start].start_value)+start_orig_index; //11 } return -1, } 【问题 1】 //12 //13 请给出满足 100%DC (判定覆盖)所需的逻辑条件。 【问题 2】 请画出上述程序的控制流图,并计算其控制流图的环路复杂度 V(G)。 【问题 3】 请给出【问题 2】中控制流图的线性无关路径。
答案: 【问题 1】 编号 条件 n>1 n<=1 value < ranges[mid].start_value value >= ranges[mid].start_value (value >= ranges[mid].start_value) && value >= ranges[mid].start_value + (int)(ranges[mid+1].orig_index-ranges[mid].orig_index) (value >= ranges[mid].start_value) && value < ranges[mid].start_value + (int)(ranges[mid+1].orig_index-ranges[mid].orig_index) n>0 n<=0 ranges[start].start_value <= value && value < ( int ) (ranges[start].start_value + range_size)) ranges[start].start_value > value || value >= ( int ) 1 2 3 4 5 6 7 8 9 10 (ranges[start].start_value + range_size)) 【问题 2】
环路复杂度 V(G)=7 【问题 3】 线性无关路径: 1) 1-2-3-4-2 … 2) 1-2-3-5-6-2… 3) 1-2-3-5-7-13 4) 1-2-8-9-10-11-13 5) 1-2-8-9-10-12-13 6) 1-2-8-9-12-13 7) 1-2-8-12-13 解析: 【问题 1】 本题考查白盒测试方法中的判定覆盖法。 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真” 值和“假”值,从而使程序的每一个分支至少都通过一次。 本题中程序一共有 5 个判定,所以满足判定覆盖一共就需要 10 个逻辑条件,这些条件
分享到:
收藏