善于总结或许是对知识积累和理解最好的途径了,阴差阳错的入了测试的行,就想着一心的去做好自己选择的路。
先从测试的概念和基本方法来整理,可以大致的梳理一下思维导图:
那接着就详细的做一下说明:
之前就听说过一句话:“软件测试不能测试你是对的,但可以验证你是没有错的”,所以采用有限的成本,资源,人力去尽大可能的验证一个软件或是说一个产品的合理性和准确性。
1、 黑盒测试:将软件看成一个黑盒子,内部代码对于测试人员是不可见的,着重于根据可见的功能对输入输出的进行测试;
主要设计方法:
优点 | 缺点 |
---|---|
易实施 | 覆盖率低 |
更贴近用户 | 复用率低,成本高 |
关注点:
1、是否有不正确或者遗漏的功能;
2、在接口上,输入输出对应是否准确;
3、是否有数据结构错误和外部信息错误;
4、性能上是否满足需求;
2、白盒测试:程序的设计对于测试人员是可见的,主要是针对于程序的逻辑结构进行测试,主要的逻辑单位包括有:语句、条件、条件组合、分支、路径。
优点 | 缺点 |
---|---|
测试人员可以更好的理解程序原理 | 成本高 |
可以检测到每条分支和路径 | 无法验证遗漏功能和数据结构 |
可以检查出代码中的错误 | 不能验证需求 |
主要的测试方法:
1、代码检测法;
2、静态结构分析法;
3、静态质量度量法;
4、逻辑覆盖法;
5、基本路径测试法;
测试的手段还有:
灰盒测试:结合黑盒测试和白盒测试,对代码和功能同时进行检测。
静态测试:顾名思义,测试无需执行程序,通过评审软件文档或代码进行测试。
动态测试:通过动态运行程序,对程序的运行效率、准确性和健壮性进行测试。
手工测试:从用户视角,进行深度测试和主观判断测试,主流的手工测试包括:众包测试和探索式测试。手工测试易于发现缺陷,而且容易实施,且具备很大的创造性和灵活性。
自动化测试:使用工具对程序进行批量测试,主要方法包括单元测试、接口测试、性能测试等,由于是使用第三方工具进行检测,所以具备高速高效高复用的优点,同时覆盖率可以做到很高,准确率高,较为可靠。
常见的传统的测试模式有瀑布模式、V模型、W模型、X模型、H模型,其中X模型支持迭代,不断对新版本进行重复性测试。
敏捷测试(Agile Test):顾名思义,打破传统测试模式的输出依赖前一阶段输入的模式,代表敏捷测试精神的敏捷宣言可以概括为:
*个体和交互 重于 过程和工具
可用的软件 重于 完备的文档
客户协作 重于 合同谈判
响应变化 重于 遵循计划*
基于脚本的测试–SBT(Script-based Testing):
SBT是基于脚本的测试,要依赖于测试用例进行测试,同时与ET(Exploratory Testing)进行交替使用。
SBT | ET |
---|---|
系统性强,容易管理和控制 | 自由灵活,与ST互补 |
设计在先,执行在后 | 设计与执行并行 |
验证自己的思路,可预见性 | 与系统不断交互,容易发现新的缺陷 |
探索式测试覆盖率不高,通常是对某一模块或者流程分支进行局部探索式测试:
检测的方向主要有以下五个:
1、输入:包括接收输入的内容、顺序,产生输出,接收数据,进行运算;
2、状态:有临时状态(运行时有效,阶段有效等)和永久状态(数据库保存,文件保存等);
3、代码路径:主要是对代码进行覆盖,主要采用白盒测试方法进行测试;
4、用户数据:采用真实的用户数据,对系统进行测试,采集真实的反馈结果;
5、执行环境:主要包括程序使用的操作系统、系统组网的网络拓扑结构,系统的配置参数,运行时的硬件设备等;
基于风险的测试–RBT(Risk-based Testing)
主要是对于质量风险(功能缺失、数据转化)的管理,辅助于风险管理相关文档,其中风险级别=风险可能性*风险严重度;
功能测试:对功能进行测试。
主要可以从以下几个方面入手:
1、功能错误和遗漏;
2、界面问题;
3、性能错误;
4、数据及访问错误;
5、初始化及终止错误;
管理工具:
商用的主要有:QTP winrunner、SilkTest、Rational robot;
开源的:selenium、watir、Sikuli;
性能测试:对程序性能进行检测,包括程序的健壮性,稳定性,正确性等,主要的性能测试包括负载测试、压力测试、稳定性测试等。
性能指标可以从以下几个方面进行参考:
1、并发用户数(VU);
2、每秒事务数(TPS);
3、系统响应时间;
4、设备性能;
工具:
LoadRunner、Silkperformer、Jmeter、WebLoad、Apache Bench、LoadUI
静态性能评估标准:主流的是网站性能工具YSlow,是Yahoo公司发布的基于特定标准对网站页面进行分析,并对网站进行A-F的评级。
应用性能管理:APM(Application Performation Management)可以对软件进行实时监控、性能管理、故障管理。
PS:性能测试工程师对于技术要求比较全面,同时需求量会比较大,之后小姐姐会陆续更新关于性能测试以及性能测试工具使用的博客,希望小朋友们可以持续关注。
安全测试:与之相对应的是渗透测试(模拟对软件系统的恶意攻击行为)
- | 安全测试 | 渗透测试 |
---|---|---|
测试方法 | 守 | 攻 |
测试范围 | 面 | 点 |
难易程度 | 难 | 易 |
安全测试标准:OWASP(Open Web Application Security Project)
OWASP被视为web应用安全领域的权威参考,每年会公布全球十大安全漏洞OWASP Top 10作为参考和警示标准。
安全测试工具:
名称 | 作用范围 |
---|---|
Appscan | web项目 |
Webinspect | web项目 |
Nessus | 服务器,主机类 |
Nmap | 扫描主机,查看开放端口 |
MetaSploit | 测试框架 |
WebScarab | 基于代理截持 |
Fortify | 白盒测试,基于源码进行静态分析 |
W3AF | web扫描,开源的 |
兼容性测试:
主要从以下四个方面进行分析:
1、软件本身的兼容性;
2、不同平台下的兼容性;
3、软件对于硬件设备的兼容性;
4、软件的互操作性;
文档测试:
对于文档的完整性、正确性、一致性、易理解性、易浏览性、可靠性(软硬件)进行测试。
本地化测试:自身认为是最为人性化的测试之一了
内容主要包括以下几个方面:
部署测试:
包括在不同的网络拓扑结构下,在不同软硬件环境中的测试,还有一些特殊情况包括网络中断,存储空间不足的一些自动化处理,需要一些基础数据的准备。
回归测试:对测试结果进行迭代,防止新的bug被引入,一般采用自动化方式在关键模块进行。
Monkey测试:搞怪测试,最为著名的是安卓公司的随机触发测试。
A/B测试:为页面的某些功能提供两个版本,最终产品将采用用户点击多的模式进行发布。主要的工具有Google Analytics Content Experiments、Visual WebSite Optimizer.