整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

你了解软件测试吗?

你了解软件测试吗?

常开发中,程序员可能对 Bug 并不陌生,如果仅仅依赖测试人员给出反馈,无疑隔靴挠痒。

那么如何才能保证高质量代码,这就需要我们了解测试。

一、软件测试类型都有哪些?

1.按测试策略分类:

  • 静态与动态测试;
  • 黑盒与白盒测试;
  • 手工和自动测试;
  • 冒烟测试;
  • 回归测试;

2.按测试阶段分类:

  • 单元测试;
  • 集成测试;
  • 系统测试;

3.其他常见测试方法:

  • 功能测试;
  • 性能测试;
  • 压力测试;
  • 负载测试;
  • 易用性测试;
  • 安装测试;
  • 界面测试;
  • 配置测试;
  • 文档测试;
  • 兼容性测试;
  • 安全性测试;
  • 恢复测试;

二、Web 服务器指标

Web 服务器指标是衡量一个网站性能是否达标的准则。其实我们并不陌生,很多网站性能监控系统都会包含如下的这些指标:

1.Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;

2.Successful Rounds:成功的请求;

3.Failed Rounds :失败的请求;

4.Successful Hits :成功的点击次数;

5.Failed Hits :失败的点击次数;

6.Hits Per Second :每秒点击次数;

7.Successful Hits Per Second :每秒成功的点击次数;

8.Failed Hits Per Second :每秒失败的点击次数;

9.Attempted Connections :尝试链接数。

一般监控系统中都会使用简称,所以了解一下哦,就不会显得很外行了。

三、QA 和测试的区别

QA 关注的重点不仅仅是质量,而且是整个软件过程,保证的首先是过程和体系。

而测试通过一系列活动,给 QA 人员提供尽可能有效的信息和数据,是他们能够发现过程上的异常或者制度上的不妥之处。

1.共同之处:

QA 和测试的目的一样,都是尽可能的保证最终发布的产品更符合客户的需求,尽可能的没有 bug。

2.不同之处:

QA 关注的是整个软件过程,测试人员则是通过设计、执行用例等方法去发现错误,关注的是最终质量

四、什么是冒烟测试?

冒烟测试是对软件的基本功能进行测试,测试的对象是每一个新编译的需要正式测试的软件版本。

目的是确认软件基本的功能正常,保证软件系统能跑得起来。

可以进行后续的正式测试工作,如果最基本的测试都有问题,那么其他测试也就没办法进行。

五、在频繁的版本发布中,如何回归测试?

这恐怕是比较常见的一个问题,作为开发,我们紧张的迭代后,会有很多的需求提测,那么测试人员是如何去做的呢?

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

自动回归测试将大幅降低系统测试、维护升级等阶段的成本。

回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,

软件开发的各个阶段都会进行多次回归测试。

在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。

因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。

1.回归测试是指重复以前的全部或部分的相同测试。

2.新加入测试的模组,可能对其他模组产生副作用,故须进行某些程度的回归测试。

3.回归测试的重心,以关键性模组为核心

六、手工测试与自动测试有哪些区别?

1.手工测试是传统的测试方法,由测试人员手工编写测试用例。

缺点在于测试工作量大,重复多,回归测试难以实现;

2.自动化测试利用软件测试工具自动实现全部或者部分测试工作:管理、设计、执行和报告,自动化测试节省大量的测试开销,并能够完成一些手工测试无法实现的测试。

自动化测试是对手工测试的一种补充,自动化测试不可能完全替代手工测试,因为很多数据的正确性、界面是否美观、业务逻辑的满足程度等都离不开测试人员的人工判断。

而仅仅依赖手工测试的话,则会让测试过于低效,尤其是回归测试的重复工作量对测试人员造成了巨大的压力。

自动化测试仅仅是某些条件下手工测试的一种补充,而无法全面取代手工测试。

七、性能测试工作

性能测试类型包括负载测试,强度测试,容量测试等。

1.负载测试

负载测试是一种性能测试指数在超负荷环境中运行,程序是否能够承担。通过在被测系统上不断增加压力,直到性能指标达到极限

2.强度测试

强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。主要是为了检查程序对异常情况的抵抗能力。

3.容量测试

确定系统可处理同时在线的最大用户数。可以看作系统性能指标中一个特定环境下的一个特定性能指标,即设定的界限或极限值

在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比)。

八、什么是α测试,β测试?

α、β、λ 常用来表示软件测试过程中的三个阶段:

1.α 是第一阶段,一般只供内部测试使用,在开发小组内部进行,测试的方法也较多,黑盒、白盒、 压力、应力等等;

2.β 是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用

3.λ 是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。

九、关于自动化测试工具

1.功能测试工具:QTP;

2.性能测试工具:LoadRunner;

3.测试管理工具:QC Mantis 缺陷跟踪工具。

十、原创热门文章推荐

1.究竟什么是位图?

2.HTML5 之音频合成(Speech Synthesis)

3.Web 安全之 CSP(Content Security Policy)

、脚本模板

2、 场景模板

性能测试工具选择

1. 数据建模工具

DataFactory是一种强大的数据产生器,它允许开发人员和QA很容易产生百万行有意义的正确的测试数据库,该工具支持DB2、Oracle、 Sybase、SQL Server数据库,支持ODBC连接方式,无法直接使用MySQL数据库,可间接支持。

2. 脚本开发工具

(1) 若考虑脚本运行效率,则可考虑底开发语言C或支持异步通信的语言JS,我们可以分别选择:Loadrunner 或 Node.js的IDE环境进行开发。

(2) 若考虑脚本开发效率,则可考虑代码复用性,可以选择面向对象语言C#或Java,为此我们可以分别选择:VS2008及以上版本 +对应LR.NET控件 或者 Eclipse4.0及以上版本 + JDK1.7及以上版本。

3. 压力模拟工具

(1) 若为Java类接口且单机并发数控制在500内,则可选择Jmeter或者 Loadrunner。

(2) 若为WebService类接口且单机并发数控制在500内,则可选择SoapUI或者Loadrunner。

(3) 若单机并发数超过500且控制在5000内,则可选择Loadrunner。

(4) 若单机并发数超过5000,则建议采用负载集群,即采用“中控(Control Center)+ 多机部署(LoadGenerator)”方案。

4. 性能监控工具

4.1 监控工具

无论Windows或Linux

平台,一般存在的是一个或一组进程实例,我们可以选择Loadrunner 或 Nmon 来监控。有时为了获取被测应用的一些特性指标,可以选择被测组件自带的性能工具集或监控系统。常见应用服务器监控工具推荐如下:

4.2 监控平台

监控机器主要对被测集群服务器的服务或资源使用情况进行监控,比如各种开源的监控工具,MRTG:流量监控;CACTI:流量预警,性能报告Smokeping:IDC 质量监控;综合监控:Nagios、Zenoss、Ganglia 、Zabbix、Sitescope、Hyperic HQ 等,如下所示:

4.3 第三方监控云服务(APM)

APM提供端到端应用性能管理软件及应用性能监控软件解决方案,包含移动,浏览器,应用,基础设施,网络,数据库性能管理等,支持Java、.NET、PHP

、Ruby、Python

、Node.js、iOS

、Android

、HTML5

等应用性能监控管理,主流云服务包括听云、OneAPM等,如下所示:

性能测试结果分析

1. 指标分析

性能测试的指标可分为产品指标和资源指标两类。对测试人员而言,性能测试的需求来自于用户、开发、运维的三方面。用户和开发关注的是与业务需求相关的产品指标,运维人员关注的是与硬件消耗相关的资源指标。

(1) 从用户角度关注的指标

用户关注的是单次业务相关的体验效果,譬如一次操作的响应快慢、一次请求是否成功、一次连接是否失败等,反映单次业务相关的指标包括:

a.成功率b.失败率c.响应时间

(2) 从开发角度关注的指标

开发人员更关注的是系统层面的指标。

a.容量:系统能够承载的最大用户访问量是多少?系统最大的业务处理量是多少?

b.稳定性:系统是否支持7*24小时(一周)的业务访问。

(3) 从运维角度关注的指标

运维人员更关注的是硬件资源的消耗情况。

以上说明了测试人员在选择指标时需站在用户角度去思考,另外为了后续能够更好地分析问题,更需掌握与被测组件特性或运行原理相关的性能指标。

举例来说,通常接口系统均会直接或间接地访问数据库层介质(如Mysql、Oracle、SQLServer等),此时我们需考虑由接口系统产生压力下存储介质的性能情况,通常我们会选择分析指标如下:

(1) 连接数(Connections)
(2) 每秒查询数/每秒事务数(QPS/TPS)
(3) 每秒磁盘IO数(IOPS)
(4) 缓存命中率(Buffer Hits)
(5) 每秒发生的死锁数(Dead Locks/sec)
(6) 每秒读/写字节数(Read/Write Bytes/sec)
2. 建模分析

2.1 理发店模型

图中展示的是1个标准的软件性能模型。在图中有三条曲线,分别表示资源的利用情况(Utilization,包括硬件资源和软件资源)、吞吐量(Throughput,这里是指每秒事务数)以及响应时间(Response Time)。图中坐标轴的横轴从左到右表现了并发用户数(Number of Concurrent Users)的不断增长。

在这张图中我们可以看到,最开始,随着并发用户数的增长,资源占用率和吞吐量会相应的增长,但是响应时间的变化不大;不过当并发用户数增长到一定程度后,资源占用达到饱和,吞吐量增长明显放缓甚至停止增长,而响应时间却进一步延长。如果并发用户数继续增长,你会发现软硬件资源占用继续维持在饱和状态,但是吞吐量开始下降,响应时间明显的超出了用户可接受的范围,并且最终导致用户放弃了这次请求甚至离开。

根据这种性能表现,图中划分了三个区域,分别是Light Load(较轻的压力)、Heavy Load(较重的压力)和Buckle Zone(用户无法忍受并放弃请求)。在Light Load和Heavy Load 两个区域交界处的并发用户数,我们称为“最佳并发用户数(The Optimum Number of Concurrent Users)”,而Heavy Load和Buckle Zone两个区域交界处的并发用户数则称为“最大并发用户数(The Maximum Number of Concurrent Users)”。

当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待;当系统负载处于最佳并发用户数和最大并发用户数之间时,系统可以继续工作,但是用户的等待时间延长,满意度开始降低,并且如果负载一直持续,将最终会导致有些用户无法忍受而放弃;而当系统负载大于最大并发用户数时,将注定会导致某些用户无法忍受超长的响应时间而放弃。所以我们应该保证最佳并发用户数要大于系统的平均负载。

2.2 压力变化模型


随着单位时间流量的不断增长,被测系统的压力不断增大,服务器资源会不断被消耗,TPS 值会因为这些因素而发生变化,而且符合一定的规律。

图中:

a 点:性能期望值
b 点:高于期望,系统资源处于临界点
c 点:高于期望,拐点
d 点:超过负载,系统崩溃

2.3 容量计算模型

以一网站性能测试为案例:

1. 通过分析运营数据,可以知道当前系统每小时处理的PV数
2. 通过负载测试,可以知道系统每小时最大处理的PV数

即整理得

系统每小时PV处理剩余量=系统每小时最大处理的PV数 — 系统每小时处理的PV数

假设该网站用户负载基本呈线性增长,现有系统用户数为70万,根据运营推广计划,1年内该网站发展用户将达到1000万,即增长了14倍。即整理得:

系统每小时PV处理增加量=当前系统每小时处理的PV数 * 14 — 当前系统每小时处理的PV数

每天系统负载增加率=100% / 365=2.74 % (备注:此处将未来系统用户数达到1000万的负载定义为 100% )

系统每天PV处理增加量=系统每小时PV处理增加量 * 每天系统负载增加率 * 24

所以,我们可以知道在正常负载条件下:

系统可支持正常运行天数=系统每小时PV处理剩余量 * 24 / 系统每天PV处理增加量

假设该网站后续部署升级天数已知,这样我们可以知道提前升级的天数:

系统可支持正常运行天数 — 部署升级天数。

性能测试通过标准

1. 所有计划的测试已经完成。

2. 所有计划收集的性能数据已经获得。

3. 所有性能瓶颈得到改善并达到设计要求。

个APP的正常上线运行,必须要经过开发测试的环节,而APP的开发测试,包括6大部分:服务器的选择、常用工具的选择、服务类API、开发者服务、测试工具、开发学习。每一部分都要保证绝对的合格。

下面,我们了解分析一下怎么完成APP开发的测试。

1.APP服务器

app server的前身是middleware(中间件),历史要长的多。早在上世纪六七十年代就已经开始在IBM大型机系统上广泛应用了,叫做TP Monitor,比较著名的是BEA的Tuxedo和IBM的CICS,运行在Terminal/Server模式的Server端,其功能主要是分离商业逻辑,进行分布式计算的,可以自动管理事务、资源和容错等等。因为发展的时间很长,所以技术非常成熟。middleware最早是用cobol编写的,现在还可以偶尔看到cobol的中间件的旧系统,再后来middleware改用C++来实现,著名中间件的有IBM的CICS,BEA的Tuexdo,仍然广泛的应用在高端系统中,特别是银行系统。

然而在面向对象的技术出现和广泛的应用之后,TP Monitor由于不是面向对象的,而是面向过程的调用,因此TP Monitor管理的商业逻辑并没有分布式对象系统中的商业组件那样的可扩展性、可重用性,表现出来很大的局限。

不过像PHP这样主要还是面向过程调用的函数式的语言来说,TP Monitor仍然可以支持的非常完美,由于有了TP Monitor的支持,PHP也可以应用在企业的环境中了。

2.常用工具

appMobi

可以让开发人员创建、模拟和测试PhoneGap项目。该工具是一个集成开发环境(IDE),提供了用于创建HTML5和PhoneGap应用的全套开发工具。

Visual Studio

它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。

支持跨平台移动开发、 web 和云开发、 IDE 生产力增强

Sublime Text

Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。

3.服务类AIP

API 全称Application Programming Interface,即应用程序编程接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

API除了有"应用程序接口"的意思外,还特指 API的说明文档,也称为帮助文档。

API类型众多,分为电信类,地图类,电商类,微博类,应用类,还有服务类

服务类API主要有:

气象数据开放平台,腾讯电商开放平台,豆瓣开发者,淘宝开放平台,聚合数据等。

4.开发者服务

开发者服务,提供包括统计、推送服务、广告平台、云主机、云存储、云测试、云加速、语音平台等各类开发者服务。

5.测试工具

制作一个APP的过程中一定是要经过无数次的测试的,这种情况下我们就可以选择一些工具避免一些不必要的重复性动作。如:

常用的软件测试工具一般是:QTP+LoadRunner+QC

软件测试中还需的工具如下:

功能测试工具:QTP(HP),WinRunner(MI),Robort(IBM),QARun(Compuware)

性能测试工具:LoadRunner(HP),WAS(MS),Robort(IBM)【必须下载相应的插件才支持性能方面的测试】,QALoad(Compuware)

测试管理工具:TestDirector/Quarlity Center【这两个工具一个横版一个竖版,功能完全一样】,Rational TestManager

缺陷跟踪工具:Bugzilla、Mantis

其他:Rational Purify、Rational PureCoverager

广州安和技术APP开发公司是专业移动应用技术提供商,致力于移动整体解决方案的策划、设计、开发、发布 、如果你想拥有一款自己的APP应用,通过官网上的在线客服联系我们。

——本文由安和科技http://www.apphit.cn/发布