image.png
软件测试领域首先令人头大的是繁多的测试名词概念和多种角度的分类,1、增加了理解难度,2、提高了交流成本。
测试名词借鉴引申而来:以α测试、β测试、γ测试为例,微信支付的测试环境993、995也被人称之为β测试环境,γ测试环境,这种叫法由来已久,以至于现在也说不清楚为啥这么称呼,我猜测是通过传统软件发行版本引申过来的:
α(alpha) 内部测试版
α版,此版本表示该软件仅仅是一个初步完成品,通常只在软件开发者内部交流,也有很少一部分发布给专业测试人员。一般而言,该版本软件的 bug 较多,普通用户最好不要安装。
β(beta)外部测试版
该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过大规模的发布测试来进一步消除。这一版本通常由软件公司免费发布,用户可从相关的站点下载。通过一些专业爱好者的测试,将结果反馈给开发者,开发者们再进行有针对性的修改。该版本也不适合一般用户安装。
γ(gamma)版
该版本已经相当成熟了,与即将发行的正式版相差无几,如果用户实在等不及了,尽可以装上一试。
冒烟测试smoke testing也是借鉴而来,这一术语源自硬件行业。对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。类似的还有金丝雀测试,可见测试名词的复杂性。
这从另外一个角度来讲,测试领域还在持续的发展中,为了能够更好的保障软件质量,各种新的测试理念、测试技术层出不穷,测试概念名词繁多。
image.png测试方法原意是进行软件测试时采用的方法,方法或者方法论本身是一个比较宏大的概念,涵盖的范围比较广,所以只要是测试,都是测试方法里面的一部分,但测试领域里的测试方法普遍都等价于“黑、白、灰”,测试方法这个名词可区分为广义测试方法,狭义测试方法:
广义测试方法:对测试进行测试的一种方法论的概念,可以从多个角度来区分测试方法,比如SUT的内部构造(黑白灰),对SUT的不同请求方式(基于经验的、基于契约的、基于过去实际请求的)、还有可以按照SUT的反应来分类(明确断言、统计断言)等等
狭义测试方法:从是否关心软件内部结构和具体实现的角度划分,测试方法主要有白盒测试和黑盒测试。 白盒测试方法主要有代码检査法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
image.png
测试分类四象图,是敏捷软件测试里比重流行的一个分类。这张图本身并不能告诉测试人员如何进行测试,而是一个框架性的指导,通过多维度信息,将测试概念分门别类:
1)垂直维度:体现了测试的层次:面向技术和面向业务,其实就是SUT的内部构造和SUT对外提供的功能,内部过程不正确,功能一定不正确,功能正常,也无法等价SUT内部正常
2)水平维度:体现了测试的目的:测试驱动构建质量和测试评价产品质量,通过这两个目标,可以做软件质量目标质量分解
3)斜对角维度:Q1Q3的对角,指出了Q1更容易实现自动化测试,Q3用手工测试效果更好,比如和客户演示的时候;Q2Q4的对角,体现了测试分析的重要性,Q2面向业务驱动构建质量,这个时候面向需求做分析,可采用RBE/ATDD/BDD等测试左移技术来实施,Q4面向SUT内部技术实现评价产品质量而做的相关分析,比如安全层面的一些技术分析
image.pngimage.png
image.png
功能适应性(functional suitability):软件所实现的功能达到其设计规范和满足用户需求的程度,强调正确性、完备性、适合性等。
效率(efficiency):在指定条件下,软件对操作所表现出的时间特性(如响应速度)以及实现某种功能有效利用计算机资源(包括内存大小、CPU 占用时间等)的程度,局部资源占用高通常是性能瓶颈存在;系统可承受的并发用户数、连接数量等,需要考虑系统的可伸缩性。
兼容性(compatibility),涉及共存和互操作性,共存要求软件能给与系统平台、子系统、第三方软件等兼容,同时针对国际化和本地化进行合适的处理。 互操作性要求系统功能之间的有效对接,涉及 API 和文件格式等。
易用性(usability):对于一个软件,用户学习、操作、准备输入和理解输出所做努力的程度,如安装简单方便、容易使用、界面友好,并能适用于不同特点的用户,包括对残疾人、有缺陷的人能提供产品使用的有效途径或手段(即可达性)。
可靠性(reliability):在规定的时间和条件下,软件所能维持其正常的功能操作、性能水平的程度/概率,如成熟性越高,可靠性就越高;用平均失效前时间(Mean Time ToFailure,MTTF)或平均故障间隔时间(Mean Time Between Failures,MTBF)来衡量可靠性。
安全性(security):要求其数据传输和存储等方面能确保其安全,包括对用户身份的认证、对数据进行加密和完整性校验,所有关键性的操作都有记录(log),能够审查不同用户角色所做的操作。它涉及保密性、完整性、不可抗抵赖性、可审核性、真实性。
可维护性(maintainability):当一个软件投入运行应用后,需求发生变化、环境改变或软件发生错误时,进行相应修改所做努力的程度。它涉及模块化、可复用性、易分析性、易修改性、易测试性等
可移植性(portability):软件从一个计算机系统或环境移植到另一个系统或环境的容易程度,或者是一个系统和外部条件共同工作的容易程度。它涉及适应性、可安装性、可替换性。
image.png image.png image.png
网友评论