51Testing第二十五期沙龙(广州站)提问回答
1、可靠性测试一般行业如何测试?
【回答】:可靠性分为软件的可靠性和硬件的可靠性,硬件的可靠性测试目前已经有非常成熟的工具和分析方法,比如故障模式影响分析(FMEA),它是一种在产品设计过程中,通过对产品各组成单元的潜在故障模式、严酷度及其对功能的影响进行分析,提出可以采取的预防改进措施,以提高产品可靠性的一种分析方法 ;危害分析(CA),按每一种故障模式的严酷度类别及故障模式发生概率所产生的影响对其分类,以便全面地评价各种可能的故障模式的影响,是FMEA的补充和扩展;故障树分析(FTA),他是一种在产品设计过程中,通过对可能造成产品故障的各种因素(包括硬件、软件、环境、人为因素等)进行分析,画出逻辑框图(即故障树),从而确定产品故障原因的各种可能组合方式的一种可靠性分析技术。是用于分析大型复杂系统可靠性、安全性以及故障诊断的一个有力分析方法。测试方面可以采用HALT (Highly Accelerated Life Test)
即高加速寿命试验:通过HALT试验可以暴露试验对象的缺陷或者薄弱环节,寻找改进试验对象的机会;另外也可以采用HASS - Highly Accelerated Stress Screening,高加速应力筛选试验:同传统的环境应力筛选试验(ESS)的目的一样,HASS也是隶属于生产过程中的一种试验手段,主要目的是通过对一批产品的全部或部分(抽样)施加要求的应力,发现和剔除有缺陷的产品。具体的可靠性测试,可以采用故障注入的方式,业界成为FIT(Fault Insertion Test),向系统注入故障分为软件和硬件两种方式。在保证能够触发故障的前提下,优先采用软件故障注入,以利于实现自动化测试。软件故障注入需要适当编写测试程序,如写寄存器、状态控制、函数补丁等。
2、性能测试中,从用户图或者Web 资源图等,怎么快速定位一个瓶颈,通常的分析流程是什么?
【回答】:用户图和web资源图是从客户端反映系统的性能情况,可以揭示性能测试缺陷出现的时间和场景,另外通过对页面的分析也可以找出具体是网络方面的问题还是应用的问题,但是如果需要瓶颈定位,还需要借助其他的工具,及被测试系统自带的调试工具进行定位。通常的分析流程是先从应用的角度来找到问题带来的影响,然后逐步定位看是不是配置(比如操作系统核心参数、数据库核心参数、web服务器核心参数)的问题,接下来再看是不是系统架构设计的问题还是硬件平台的问题,最后再看是不是具体的代码或者是SQL的性能问题。
3、针对一个网站系统,最大用户数的加载方式,比如每20秒加载10个用户,有什么标准,加载快慢有什么影响没有?
【回答】:这个问题是一个关于性能测试场景设计的问题,性能测试场景的设计依赖性能测试需求规格以及性能测试的目的和策略,而目前很多公司没有性能需求规格同时性能测试的目的也不尽相同,因此没有一个具体的统一的标准。性能测试场景体现的是用户的行为活动,设置的情况直接影响性能测试的结果。
4、当测试硬件环境的cpu和内存都与生产环境不一样的时候,能测试么?怎么样处理测试结果?
【回答】:这个是个性能建模以及容量规划的问题,如果能建立起一种资源消耗在一定技术架构下和用户并发数的关系模型,则能很好地解决这个问题的,但目前还不是很成熟。一般情况下,性能测试的环境最后是实际生产环境的1/2、1/4或者1/8,这样测试的结果有一定的参考性,但是如果是我们仅仅是做调优类或者对比类的性能测试,其实环境并不是十分重要,重要的是两次测试的环境是一样的。
5、没有明确的性能需求,如何作性能测试?
【回答】:这个问题胶片部分关于性能需求的来源很好的解释了这个问题,性能测试的需求最好来源于需求规格或者国际、国家、行业标准和规范,或者是企业的标准和规范,如果这些都没有的话,就需要考虑用户的行为习惯以及用户的容忍程度(比如3、5、8、10、30秒的原则)另外就是可以考虑与竞争对手产品的差异。在做性能测试时,如果没有需求,那么建议先跟开发或者是用户做充分的交流与沟通定下一个大家都认可的性能需求。
6、没有性能测试需求情况下,如何发现更多的性能问题?
【回答】:没有性能需求的情况下,对比类、长时间性的性能测试可以帮助我们能更好的找问题,另外可以在测试的过程多考虑一些异常的流程和一些性能测试工具,比如性能监控工具等,当然更多的需要依赖经验和性能测试需求工程师的能力。
7、如何提升测试工作的兴趣,让测试变成一份有意思的工作?
【回答】:工作坦白的说没有爱好而言,这个好比结婚和恋爱,先恋爱后结婚就一定幸福吗?先结婚后恋爱就一定不幸福吗?工作的兴趣来源于通过你努力把一份工作做得尽可能的好,然后通过这样得到应该得到的财富、尊重以及成就感和满足感,然后你觉得任何工作都是有意思的,另外就是干一行、爱一行、成一行、精一行。
8、根据需求怎样很好的预估测试的进度?
【回答】:要想预测,最重要的是需要模型,要模型,需要先做好度量,然后才能根据模型来进行预测。
9、在需求还没有明确性能指标的情况下,怎么做性能测试?
【回答】:同问题5
10、能否大概讲下性能测试执行后,分析性能瓶颈的顺序,如网络?服务器?数据库?再就是从那些结果对应那些问题?
【回答】:同问题2
11、需求频繁变更,如何作单元测试,回归测试,用例如何编写,如何才算是测试通过?
【回答】:需求的变更的控制是很多项目失败的最主要的原因之一,如何做单元测试是个很大的问题,回归测试最重要的是根据项目组的特点设计合理的回归测试策略,是完全回归还是选择性回归需要综合考虑项目的成本、质量、进度以及产品本身的技术架构。用例的编写最重要的是考虑粒度和覆盖率,这一点需要借助好的用例设计方法。至于测试什么时候通过,最重要的测试应该停止于理智而非情感,可以考虑是否达到质量目标,比如遗留缺陷密度是否符合公司定义的质量目标。
12、验证码的屏蔽?
【回答】:这个跟具体的项目相关,请相关的开发工程师协助就可以了,也可以考虑设置万能密码或者是让开发帮忙协助写验证码算法的dll。
13、如何确定系统的并发用户数?
【回答】:系统的并发用户数应该来源于需求规格的说明,在具体的定义的时候可以考虑从两方面来考虑:一方面是从用户规模来进行估算,比如移动10000:1的注册用户与并发用户数比;另一方面可以从终端数来进行估算,比如1:1或者2:1的终端数与并发用户数比。当然这个数值仅供参考,而且每个行业肯定不一样。
14、如何确定虚拟用户的thinktime的值?
【回答】:这个需要按照实际用户行为来设置,另外考虑不同的测试目的对thinktime的调整。
15、是否有计算并发用户数和thinktime值得计算公式?
【回答】:并发用户数现在经常使用8020法则,即20%的在线用户做并发。但thinktime是没有计算公式的。
16、如何测试cs架构的性能模型,如何找出性能瓶颈?
【回答】:同BS的一样,只是协议不同罢了。性能瓶颈的分析思路同问题2
17、自动化测试开展的时机?
【回答】:自动化测试开展需要考虑很多要素,比如测试进度要求、人力资源要求、版本稳定程度、版本应用情况、可自动化率、版本规模以及自动化的投入产出,好的经验是把自动化当成一个项目来运作。
18、自动化测试框架的设计和实现?
【回答】:和软件开发里面的框架设计一致,问题比较大,但框架的设计可以考虑几个方面,一个是主框架与脚本的分离,另一方面是脚本与数据的分离。好的自动化框架应该是“一键触发,无人值守”的。
19、通过的场景得出性能测试后如何进行性能分析?
【回答】:同问题2的回答
20、运行几天的系统崩溃了,应如何进行性能测试来分析发现问题?
【回答】:系统崩溃这个问题其实要想通过性能测试来发现还是比较容易的,可以通过长时间的测试来发现系统是否存在死循环(消耗CPU资源)、是否存在内存泄露等问题。另外崩溃的原因如果是因为文件系统的问题,长时间测试也可以来发现系统的日志的满处理策略是否合理。
21、如何在一台机器上控制多个负载生成器?是否需要Ip欺骗?
【回答】:一台机器能发起多少负载跟具体的脚本协议以及是否以进程还是线程来模拟有关;是否需要IP欺骗这个更web服务器的负载均衡策略有关,但是从模拟用户行为的角度来看,当然是需要启动IP欺骗。
22、如何监控服务器资源?具体操作办法是?
【回答】:如果是LR,根据monitor中的描述进行配置就可以了,另外在配套相应的监控脚本,比如vmstat、ps、iostat等。
23、如何展开性能基准测试?是否结合硬件指标?
【回答】:性能基准测试的方法跟一般的性能测试方法类似,因为是基准当然是要结合硬件指标来做,至少需要记录性能指标值对应的硬件环境。另外也可以结合配置测试一起来做。
24、性能测试模型与性能测试计划的关系?
【回答】:性能测试模型是整个性能测试过程中一个非常关键的环节,理所当然应该成为性能测试计划的一部分。
25、如何建立性能测试模型,包括那些要素,依据是什么?
【回答】:要建立性能测试模型,需要考虑测试环境、人力资源、测试数据、业务行为、用户行为等各个方面。依据当然是被测试对象本身的系统组成架构、用户行为等。
|