这部分的知识还是比较关键的。俗话讲书到用时方恨少,全方位了解是比较重要的。
下面的这部内容是按照阶段划分进行描述的,根据上文的PPT内容进行内容的填充,如果有不明白的地方,可以先保留,读下来,之后可以在文章下说明,我会给出解答。
单元测试:
定义:模块测试,是针对软件设计的最小单位进行正确性检验的测试工作。
目的:在于检验每个程序的基本组成单元是否正确实现详细设计中的模块功能、性能、接口和设计约束等要求,发现各模块内部的可能存在的错误。
通过标准:程序通过所有单元测试的用例,语句的覆盖率达到100%,分支的覆盖率达到85%。
方法:主要用白盒测试方法,包括静态和动态测试。
桩模块(stub):指模拟被测模块所调用的模块。
驱动模块(drive):指模拟被测模块的上级模块,用来接收测试数据,启动被测模块并输出结果。
常见测试工具:
PureCoverage(C/C++/Java/.Net,Windows/UNIX)
RTRT(C/C++/Java/Adea,嵌入式系统)
C++Test(C/C++,Windows/UNIX)
Discover(Delphi,WIndows)
集成测试:
定义:组装测试,把将通过测试的单元模块组装成系统或子系统,再进行测试,是单元测试的下一个阶段。
目的:重点测试不同模块的接口部分(如函数间的参数传递是否正确)。常是单元和集成同步进行,在单元测试中先测试几个函数的自身功能,然后再集成测试一下这几个函数的接口(即参数传递)。使之逐步集成为符合概要设计要求的程序部件或整个系统。
内容:
集成功能测试
接口测试
全局数据结构测试
资源测试
任务优先级冲突测试
性能和稳定性测试
方法:
非递增式集成测试:先对每个模块进行单元测试,然后将所有模块集成起来一次测试。
优点:测试过程基本不需要设计开发测试工具
缺点:对于复杂系统,当出现问题时故障定位困难,和系统测试接近,难以体现和发挥集成测试优势。
增量式集成测试:就是逐渐集成,由小到大,边集成边测试,测试完一部分再连接一部分。
优点:测试层次清晰,出现问题能够快速定位
缺点:需要开发测试驱动和桩
系统测试:
定义:系统测试是将整个软件系统、计算机硬件、外设、网络等其它元素结合在一起,进行信息系统的各种集成测试和确认测试。
内容:
对功能、性能以及软件所运行的软硬件环境进行测试。
测试手段:冒烟测试、全面测试、回归测试
冒烟测试:
定义:
是在刚刚编译出来后,软件编译人员需要进行基本性能确认测试。
举例:
是否可以正确安装/卸载,主要功能是否实现,是否存在严重死机或数据严重丢失等bug。
全面测试:
定义:参考测试用例进行的安装测试,功能测试、可靠性测试、安全性测试、时间及空间性能测试、易用性测试、可移植性测试、文档测试等。
回归测试:
定义:指修改了旧代码后,重新进行测试以确认原来问题已修改成功,并且没有引入新的错误或导致其它代码产生错误。
验收测试:
定义:在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。
分类:
α测试、β测试、r测试
α测试:
指的是由用户、测试人员、开发人员等参与的在开发环境下模拟实际操作环境运行程序系统的测试,目的是评价软件产品的功能、可用性、可靠性、性能和支持,系统的界面的特色。
β测试:
指的是内测后的公测,即完全交给最终用户在实际操作环境中测试。
r测试:此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。或第三方测试。
下面的划分是按照是否运行程序(或执行角度)进行描述的:
静态测试:
定义:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构过程、接口等来检查程序的正确性。
内容:
(1)代码测试
(2)界面测试
(3)文档测试
界面测试:主要测试软件的实际界面与需求中的说明是否相符;
文档测试:主要测试用户市场手册和需求说明是否真正符合用户的实际需求;
形式:
代码—审查:开发组内部进行的,采用讲解、提问并使用代码模板进行的查找错误的活动。
技术—评审:是有若干开发人员、项目经理、测试人员、用户或领域专家等组成一个会审小组,通过阅读、讨论和争议,对工作制品进行静态分析的过程。
(1)需求评审(2)设计评审(3)代码审查
代码—走查:
常用方法:
调用流程图法:从语义的角度考察程序的控制路线。
数据流分析图法:检查分析变量的定义和引用情况;
动态测试:
定义:
是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
基本要素:
1、被测程序
2、测试数据(测试用例)
下文是按照内容划分进行描述的:
功能测试:
适合性:检验系统是否提供了满足需求的功能,以及系统所提供的功能对需求的适合程度的测试工作。
准确性:检验系统处理数据是否准确,以及处理数据的精度是否符合需求的测试工作。
互操作性:检查系统的相关功能与其它特定系统之间交互能力的测试工作。
安全性:检验系统的安全性、防止对系统及数据非授权的故意或意外访问、防止重要数据丢失等方面的测试工作。
功能的依从性:检验软件产品的功能是否遵循有关的标准、约定、法规等测试工作
可靠性测试:
成熟性测试:检验软件系统故障导致失效的可能程度的测试工作。
容错性测试:检验软件系统在出现故障或违反指定接的情况下,是否能维持规定的性能水平的测试工作。
易恢复性测试:检验软件失效后,重建其直接受影响的数据,以及为达此目的多需的时间和相关工作的属性。
易用性测试:
易理解性测试:检查用户为认识系统的逻辑概念以及系统的应用所实施的相关工作的软件属性。
易学习性测试:检查用户为学习软件的输入、输出、计算、控制等应用所实施相关工作的属性。
易操作性测试:检查系统中用户为操作和运行控制所付出努力有关的软件测试工作。
性能测试:
定义:
1、测试软件的计算机系统的时间消耗及资源利用的特性。
2、分为性能测试(狭义)、压力测试(强度测试)、负载测试、并发测试、配置测试。
示例:访问12306网站,正常打开页面时间,春运前支持访问人数。
可移植性测试:
定义:测试软件是否可以被成功移植到指定的硬件或软件平台上。
示例:在ios手机上开发的app,随着用户使用量增大,用户有在ipad上使用的需求,测试在ipad上功能。
文档测试:
定义:文档完整性、文档正确性、文档一致性与文档易理解性检查。
兼容性测试:
定义:
1、特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行测试。
2、硬件兼容性测试、软件兼容性测试、数据兼容性测试。
安全性测试:
定义:
1、用户登陆信息的验证
2、系统是否有超时的限制
3、当使用安全套接字时,还要测试加密是否正确,检查信息的完整性
4、为了保证web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪
5、还有其它一些与安全相关的操作
特点:
1、服务安全领域非常复杂,相关知识特别多
2、网站测试工程师需要做的是按各方(技术总监、项目总经理、网络管理员、网站开发人员和测试工程师)所讨论制定出来的网站安全说明书来进行测试。
本地化/国际化测试:
1、软件国际化(internationalzation,缩写为i18N)就是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,能够在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法。
2、软件本地化(localization,缩写为L10N)是将一个软件产品按照特定国家/地区或语言市场的需要进行加工,使之满足特定市场上的用户对语言和文化的特殊要求的软件生产活动。
示例:windows系统改成中文版本,需要进行本地化测试。
安装卸载测试:
定义:正常情况和异常情况的不同条件下都能进行安装、卸载、升级
示例:手机app,升级新版本,需要考虑是强制升级还是选择升级,如果是强制升级需要限制用户操作,用户任何操作都无法进行,只有升级完才能进行相应功能操作,如果是选择升级,关闭升级提示,取消升级,可以在原版本进行正常功能操作。
大数据测试:
特点:
1、集群规模大
2、数据量大
3、业务应用多样性
4、稳定性
5、容灾性要求高
挑战:
代码几百万行
集群规模
数据多样性
业务应用场景
现网复杂容灾场景,稳定性
数据计算结果正常性
现网引流:保障现有业务服务可用,直接使用现网数据快速测试
现网压测:突破测试集群规模限制
异常注入:原子化解决异常测试困难
场景自动化:从用例角度建设用例量大,建设和维护量大
A/B测试:
1、页面或流程设计两个版本,同时随机的让一定比例抽样客户访问,然后比较这各个版本的实际效果(转化率),最后选择效果最好的版本正式发布给全部客户。
2、测试工具:云眼(eyeofcloud.com),ABTester,Optimizer;
文章会慢慢更新的,有兴趣的小伙伴可以加861268173这个qq群,群里也会分享慢慢分享一些专业的知识,会做问题的解答。适合想要进入此专业的小伙伴,相信你能收获到很多实际的帮助。














网友评论