The notes of How We Test Software At Microsoft(6)

Chapter 11Non-Functioanl Testing非功能测试

定义非功能的测试领域包括了性能,负载,安全,可靠性和其他很多方面。非功能测试有时也被称作行为测试或质量测试。非功能测试的众多属性的一个普遍特征是一般不能直接测量。这些属性是被间接地测量,例如用失败率来衡量可靠性或圈复杂度,用设计审查指标来评估可测性。

国际化标准组织(ISO)在ISO9216ISO250002005中定义了几个非功能属性。这些属性包括:

·         Reliability可靠性:软件使用者期望软件能够正常运行。可靠性是度量软件如何在主流情形和非预期情形下维持它的功能,有时也包括软件出错时的自恢复能力。

·         Usability可用性:如果用户不明白应该如何使用,那么,既是零差错的软件也会毫无用处。可用性测量的是用户学习和控制软件以达到用户需求的难易程度。进行可用性研究,重视顾客反馈意见和对错误信息和交互内容的检查都能提高可用性。

·         Maintainability可维护性:可维护性描述了修改软件而不引入信错误所需的工作量。

·         Portability可移植性:

Performance Testing

性能测试的目标是发现重大的系统瓶颈。

How do you Measure Performance

在设计阶段发现潜在性能问题的技巧:

·         Ask questions:找出潜在性能问题的地方。对网络交通的拥塞状况,内存管理的效率,数据库设计的合理性,或其他任何有关的地方提出疑问。即使你并没有性能设计的解决方案,通过让其他团队成员考虑性能问题,测试工程师也一样能够产生很大的影响力。

·         Think about the big picture考虑全局:不是片面地考虑局部优化,而是考虑全面的用户场景。

·         Set clear, unambiguous goals明确目标:应SMARTSpecific Measureable Achievable Relevant Time-bound)标准来设计目标。

有益的性能测试的技巧:

·         Establish a baseline建立基线。早定义,早测量的一个重要方面是建立基线。

·         Run tests often经常运行测试。一旦建立了基线,就尽量经常的测量。

·         Measure responsiveness测量相应效率。性能测试必须着重于测量用户响应时间,而不管该操作的后台计算需要消费多少时长。

·         Measure performance要专注测量的是性能。

·         Take advantage of performance tests充分利用性能测试。

·         Anticipate bottlenecks预估瓶颈。针对延迟会发生的地方做性能测试,比如文件和打印I/o,内存程序,网络操作,或其他任何不响应行为可能发生的地方。

·         Use tools使用工具。

·         Remember that resource utilization is important合理使用资源很重要。响应时间和延迟两者都是性能的关键标识,但不要在性能测试中忘记检查CUP的负荷,磁盘或网络I/OCPU使用率。

·         Use “clean machines” and don’t用还是不用“干净”机器上。让一部分性能测试在干净机器上运行,其余部分在基于顾客配置的机器上运行。干净机器对于产生一致的数据很有用,但如果性能会被其他应用软件,外接程序或其他扩展严重影响,这些数据就会起误导作用。在干净的机器上运行性能测试可以产生最好的数据,但是在一台装满了软件的机器上产生的数据会更加接近用户的体会。

·         Avoid change避免改变。克制住你对性能测试小修(或大修)的冲动。长远来看,测试本身改动得越少,得到的数据越精确。

http://msdn.microsoft.com/en-us/library/bb924375.aspx,这里可以获得更多信息。

Stress Testing压力测试

压力测试包括负载测试,平均无故障时间(mean time between failure, MTBF)测试,低资源测试,容量测试或重复性测试。

·         Stress testing压力测试,一般来说,压力测试的目的是要通过模拟比预期大的工作负载让只在峰值条件下出现的缺陷曝光。压力测试是要发现软件的弱点所在。内存泄漏,竞态条件,数据库中的线程或数据行之间的死锁条件和其他同步问题等,都是压力测试能发掘出来的常见缺陷。

·         Load Testing负载测试是要探讨在高峰或高于正常水平的负载下系统或应用程序会发生什么情况。

·         Mean time between failureMTBFtesting平均无故障时间(MTBF)测试是测量系统或应用程序在出错或宕机前的平均运行时间。

·         Low-resource Testing低资源测试,确定当前系统在重要资源(内存,硬盘空间或其他系统定义的资源)降低或完全没有的情况下的状况。

·         Capacity testing容量测试,于负载测试非常类似,一般用来执行服务器或服务测试,其目的是要确定一台或多台计算机能支持的最多用户数。容量模型通常建立在容量厕所数据基础上,有了这些数据,英语团队能计划什么时候增加系统容量,要么增加单击资源。

·         Repetition Testing重复性测试,是为了确定重复某一个程序或场景的效果而采取的一项简单而“粗暴”的技术。这个技术的精髓是循环运行测试直到达到一个具体界限或临界值。

Compatibility Testing兼容性测试

应用程序的兼容性测试是为了保证所测试程序和所有文件格式及组件之间的互用性能够继续正常工作。

工程师测试应用程序兼容性的一个关键工具是Application Verifier 它用来在运行时积极检测用户模式下的本机用户模式应用程序,以找出由于常见的编程错误产生的潜在的金融性问题。http://msdn.microsoft.com/en-us/library/ms807121.aspx,这个page可以找到更多的信息。

Accessibility Testing可达性测试

可达性时指为每个人提供接触信息和工具的相等的机会,这些信息和工具时他们完成每天工作所必需的。

可达性是由几层特定的特殊定义定,其中每一个都是程序可达性的重要部分。任何应用程序都必须测试的特性包括:

·         Operating System Settings操作系统的设置。这些设置包括大字体,高DPI,高反差界面风格,光标闪烁速度,粘滞键,过滤键,鼠标设置子键,串行键设置子键,切关键设置子键,屏幕分辨率,自定义鼠标设置即从屏幕键盘的输入。

·         “Built-in”  accessibility features内置可达性,这些特性和功能包括tab键顺序,热键和快捷键。

·         Programmatic access编程访问:MSAA

·         Accessible technology tools可达性技术工具,包括阅读器,放大镜,语音识别或者其他输入程序。

Usability Testing可用性测试

可用性和可达性很相似,但是两者之间有一个很大区别,可达性是指任何一个人都能够使用用户界面,而可用性是指用户能不能很容易地理解和与用户界面互动。可达性特性能够带来更高程度地可用性,但可用性包含更多。有用的文档,工具提示,容易找到的功能,还有很多其他的标准都对提高软件的可用性有帮助。

Security Testing安全测试

Threat Modeling威胁建模审查应用程序的结构以找到潜在的安全威胁和弱点,是一个有组织的集体工作。

Fuzz Testing模糊测试,是一种用来决定程序对无效输入数据会怎样的反映技术。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值