软件测试基本概念
QPS/TPS
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
Tps即每秒处理事务数,包括了
1)用户请求服务器
2)服务器自己的内部处理
3)服务器返回给用户
这三个过程,每秒能够完成N个这三个过程,Tps也就是N;
Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。
例如:访问一个页面会请求服务器3次,一次放,产生一个“T”,产生3个“Q”
系统吞吐量
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间
QPS(TPS):每秒钟request/事务 数量
并发数: 系统同时处理的request/事务数
响应时间: 一般取平均响应时间
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间 或者 并发数 = QPS*平均响应时间
冒烟测试
冒烟测试这个名称的来历,最初是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟再进行其它测试,否则就必须重新来过。
而在软件研发中,冒烟测试其实是微软首先提出来的一个概念,和微软一直提倡的每日build(构建版本)有很密切的联系。具体说,冒烟测试就是在每日build(构建版本)建立后,对系统的基本功能进行简单的测试。这种测试强调程序的主要功能进行的验证,而不会对具体功能进行更深入的测试。
编写测试用例的方法
1、等价类划分法
适用场景:
有数据输入的地方,就可以使用等价类划分法。如:输入框
测试思想:
从大量数据中划分范围(等价类),然后从每个范围中挑选代表数据,这些代表数据要能反应这个范围内数据的测试结果。
概念:
有效等价类:对程序来说,有意义的、合理的数据(正确的、有效的数据)
无效等价类:对程序来说,没有意义、不合理的数据(错误的、无效的数据)
例:
需求:
a、手机号输入框:只允许输入数字。(只拿手机号做示范Lo)
无效等价类:汉字、表情、符号、空格等
有效等价类:数字
2、边界值
适用场景:
有数据输入的地方,在实际工作中,一般和等价类划分一起适用。、
测试思想:
边界值是程序员在编程时是最容易出错的位置,所以要测试边界。
概念:
是有效等价类和无效等价类之间的分界点,叫边界值(最小值,最大值)。还要测试次边界,也就是边界值两边的数据。
例:
b、密码输入框:8-20位字符(只允许输入:字母、英文符号、数字)
边界值:8位字符、20位字符
次边界:7位字符、9位字符、19位字符、21位字符
3、因果图/判定表(不太重要,当熟练后可以直接适用判定表,不画因果图)
3、因果图/判定表(不太重要,当熟练后可以直接适用判定表,不画因果图)
适用场景:
在一个界面中有多个控件,如果控件之间存在组合关系或者限制关系,不同的控件组合会产生不同的输出结果,为了弄清楚不同的输入组合会产生怎样的输出结果,可以使用因果图或判定表。
概念:
因:输入条件
果:输出结果
就是通过画图的方式表达输入条件和输出结果之间的关系
因果图/判定表测试的步骤:
步骤:
步骤1:找出所有的输入条件
步骤2:找出所有的输出结果
步骤3:分析,列出输入条件之间所有的组合和限制条件
步骤4:确定每组输入条件的组合会产生怎样的输出结果,画因果图,填写判定表
(实际工作中因果图可以省略)
步骤5:编写测试用例 每一列代表一种组合,编写一条测试用例
因果图/判定表的特点:
1) 输入条件的排列顺序无关紧要
2) 输出结果的排列顺序无关紧要
3) 先测哪种组合后测哪种组合无关紧要
4) 每种组合是独立的
判定表格式如下:
判定表 名词术语
条件桩:问题的所有条件
动作桩:问题的所有输出
条件项:针对条件桩的取值
动作项:条件项的各种取值情况下的输出结果
4、正交排列法(不重要)
适用场合:
在一个界面中有多个控件,每个控件有多个取值,要考虑不同控件不同取值之间的组合 ,且组合数量较大的话,我们就可以使用正交排列法。
思想:
使用最少的抽样数据达到最广的,覆盖率最高的统计结果。
正交表公式如下:
L:line 行
n:表示正交表有几行,需要测试的组合的个数
n值是固定的,一旦正交表确定n值就是固定的,不需要测试人员自己计算。
m:表示正交表中允许出现的最大值
根据每个控件的取值个数来确定m值
k:表示正交表有几列
根据组合的控件个数进行确定,选择合适的正交表(百度搜)
方法总结: a、 如果有多余的列,可以删除掉
b、 能映射的值先映射好(替换)
c、 把每一列多出的机会,尽量均匀分配给该列的各个取值
d、 要检查是否有完全一样的组合,如果有要适当处理(建议修改,也可以删除)
e、 选择正交表时正好能应用正交表示首选,如果不合适呢么选择最接近的。
实际工作中,属性设置测试,兼容性测试常用正交排列法,而且兼容性测试可以不编写测试用例,直接用正交排列表测试各种兼容组合。
5、测试大纲法:(不重要)
适用场景:
软件中有多个窗口,窗口中有若干操作(功能点),为了理清窗口之间的关系(结果),可以使用测试大纲法。
样例如下:
6、场景法
适用场景:
业务比较复杂的软件系统都适合使用场景法,场景法是基于软件业务的测试方法,测试人员把自己当成最终用户,尽可能真实的模拟用户在使用此软件的操作情形:
重点模拟两类操作:
用户正确操作的业务过程—验证软件的业务功能是否正确实现
模拟用户错误操作的情形—验证软件的异常处理能力(健壮性)
测试思路:
场景法是模拟用户操作软件时的各种情景,主要用于测试软件的业务逻辑和流程。当拿到一个测试任务是,我们并不先关注某个文本框的等价类等是否满足要求,而是先关注它的主要功能和业务流程是否正确实现,这就需要场景法来完成测试。当业务流程测试没有问题,也就是软件的主要功能没有问题时,我们再去关注控件的等价类、边界值等细节测试。(先整体后细节)
场景划分:
1)基本流(有效流、正确流)
模拟用户正确的业务操作流程就是基本流
2)备选流(无效流、错误流)
模拟用户错误的操作流程就是备选流
样例如下:
测试工具清单
我们将常用的测试工具分为10类。
- 测试管理工具
- 接口测试工具
- 性能测试工具
- C/S自动化工具
5.白盒测试工具
6.代码扫描工具
7.持续集成工具
8.网络测试工具
9.app自动化工具
10.web安全测试工具
下面我为大家提供了一个丰富的软件测试工具列表。这些测试工具不仅可以减少测试工作,而且帮助更快地将你的软件/应用程序推向市场,并在保持速度的同时保证质量。
1.测试管理工具
1,TestDirector(大而全)
2,jira(简单好用)
3,Quality Center(复杂,收费)
4,禅道(简单好用)
5,bugzilla(功能简单)
6,svn(代码和文档管理工具)
7,vss类似svn
8,git,同svn,但是多分支管理比svn好
9,Note(大而全,费用太贵)
10,CQ(ClearQuest-IBM产品-大而全)
2.接口测试工具
1,Jmeter(开源)
2,postman
3,SoapUI
推荐使用 jmeter 和 postman
jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。
Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。
3.性能测试工具
1,loadrunner,大而全,要学精通还是有点难度,重量级工具
2,jmeter 基于java平台的性能开源测试工具,其实也很强大,而且比较好用
3,Web bench 一个简单的web基准指标测试工具
4,Load UI,一款开源的压力测试工具,支持图形化
5,httperf 一款高性能的web性能测试工具
6,Siege 一款开源的压力和指标测试工具
7、Gatling
前两种是比较常用的
4.C/S自动化工具
1,qtp (录制回放和脚本编辑),用到的是vb语言
2,winrunner IBM产品类似qtp
3,autoit 在窗口定位上做到很不错
5.白盒测试工具
1,jtest java语言的单元测试框架
2,JUnit 验证java的工具
3,cppunit 跨平台的c++单元测试框架
4,gtest 跨平台的c++单元测试框架
5,PhpUnit Php
6,BoundsChecker C++,Delphi API和OLE错误检查、指针和泄露错误检查、内存错误检查
7,TrueTime C++,Java,Visual Basic 代码运行效率检查、组件性能的分析
6.代码扫描工具
1,Coverity源代码静态分析工具
2,cppcheck c++静态扫描工具
3,gcover代码覆盖率工具
4,findbugs:基于字节码分析,大量使用数据流分析技术,侧重运行时错误检测,如空指针引用等
5,SonarLint
6,TscanCode
7.持续集成工具
1,jenkins
2,Hudson
8.网络测试工具
1,思博伦 目前流行的一款网络自动化测试商用平台了(而且能够完全顶替loadrunner),基本上能够满足所有的网络产品测试需求了,不过很贵
2,Ixia,也是对网络设备进行性能和压力测试工的平台
3,wireshark 数据包抓取分析和回放测试工具
4,tc 网络丢包和试验模拟工具,非常好用
5,iperf 用来测试tcp和udp的网络质量
6,tcpping工具工作在 TCP 层,通过发送伪造的 TCP SYN 包并侦听来自服务器或中间设备返回的 SYN/ACK 或 RST
9.app自动化工具
1,appium 这个应该算是目前最流行的基于app的自动化测试框架了
2,instruments ios平台下的自动化测试框架,用java语言写的
3,uiautomator安卓自动化测试框架,基本上支持安卓的所有事件操作
4,Monkey 安卓自带的测试工具
5,Monkey Runner Monkey改进版,支持自己编写脚本测试,用Python语言
6,Robotium 一款国外的Android自动化测试框架,用法比较简单
10.web安全测试工具
金融服务和银行业一直是安全漏洞的受害者,因为会破坏了大量敏感的用户数据。然而,金融服务是每个人的必备品。所以在这里我们列出了一些安全测试工具,用于构建一个健壮的应用程序。
1,appscan,算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来。
2,Netsparker Community Edition 这个程序可以检测SQL注入和跨页脚本事件。牛逼的是还能提供解决方案
3,Websecurify 这是个简单易用的开源工具,此程序还有一些人插件支持,可以自动检测网页漏洞。运行后可生成多种格式的检测报告
4,Wapiti 这是一个用Python编写的开源的工具,可以检测网页应用程序,探测网页中存在的注入点。
5,N-Stalker Free Version 此工具可一次检测100个以上的页面,包括跨页脚本的检测。
6,skipfish 这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。
7,Scrawlr HP的一款免费软件,可检测SQL注入漏洞。
8,Watcher: 这个是Fiddler的插件,可在后台静默运行,可检测跨域提交等。。
9,WebScarab 这个实际上是一个代理软件,有很多功能,可以检测XSS跨站脚本漏洞、SQL注入漏洞等。。
10,抓包工具:fiddler
11、burpsuite:暴力破解、抓包工具
总结:
现在大热的敏捷模式,DevOps以及许多现代日常的软件开发方法/概念都在支持测试在整个SDLC过程中的相关性。
软件测试工具是催化剂,将决定市场带给测试的新时代挑战的速度。
善于利用工具,能提高工作效率。但,勿太依赖工具,任何的工具,只可辅助。
还没有评论,来说两句吧...