全栈软件测试工程师宝典连载(3)

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 全栈软件测试工程师宝典连载(3)

1.7 软件分析方法


软件分析方法主要有:6W2H法则、CPIE模型、SBTM模型、HTSM模型、ACC模型、MFQ模型和PPDCS模型。在这节介绍6W2H法则、CPIE模型、SBTM模型、HTSM模型、ACC模型。对于MFQ模型和PPDCS模型有兴趣者,可以查看《海盗派测试分析:MFQ&PPDCS》一书[26]


1.7.1 6W2H法则

6W2H法也叫八何分析法、6W2H标准化决策或评价模型,常常被运用到企业战略的决策和制定计划以及对工作的规划与分析,当然也可以运用在软件测试分析中。它能提高工作效率,让工作更加科学有效,同时,对于设定有效的目标、个人行为决策、职业生涯规划等都具有一定的实际意义。6W2H法见图1-9所示。

image.png

                         

1-9 6W2H


1.目标(Which)

通过对Which的思考需要确认哪些是可以做的?而哪些又是不可以做的?即产品的整体开发范围。


2.原因(Why )

通过对Why的思考明确客户为什么要这么做?以及这样做是否正确?


3.对象(What)

通过对What的思考确定要开发那些功能,达到什么样的非功能指标。也就是说产品的具体需求。


4.场所(Where)

通过对Where的思考确定在哪里实施研发,客户处、公司内还是进行外包。


5.时间和程序(When)

通过对When的思考决定何提交产品,如果是迭代开发,确定每隔多长时间提交一个版本。


6.组织或人(Who)

通过对Who的思考决定这个产品的干系人有多少,包括客户代表、项目经理、产品经理、高级经理、开发人员、测试人员、运维人员等。


7.如何做(How to do

通过对How to do的思考决定采取什么样的模式开发,瀑布还是敏捷?自动化测试覆盖率计划多少?是否采用DevOps


8.价值(How much)

通过对How much的思考主要考虑资金上的问题。


1.7.2 CPIE模型

      根据测试专家Erik Petersen对于探索式测试的理解,抽象出测试的思维模型 CPIECollationPrioritizationInvestigationExperimentation),如图1-10所示。该测试分析模型包含迭代的4个阶段:整理、排序、调查和实验。

image.png

1-10 CPIE模型


1.整理(Collation

尽可能多的去收集关于被测产品的信息,从而更好地理解被测产品。


2.排序(Prioritization

按照风险等级(风险等级=危害程度×发生概率),确定所有测试任务的优先等级,从而安排测试的顺序。


3.调查(Investigation

对即将执行的测试任务进行进一步的分析并确定测试的输入和预期输出。


4.实验(Experimentation

实际地去测试,验证预测是否正确,检查在整理阶段获取到的信息是否正确。根据实验结果,测试人员将收集更多的信息,并重新调整测试任务的优先级。


1.7.3 SBTM模型

SBTM模型又名基于测程的测试,主要针对于探索式测试领域,见图1-11所示。

image.png

1-11 SBTM模型

在这里

•测试分析,设计,执行属于一个测程(Session),一个测程(Session)一般在0.5小时到3小时。如果小于0.5小时进入不了状态,联系工作超过3个小时,容易疲劳,这两个数据是得到心理学家验证的。

•测程(Session)完毕根据测试结果来总结经验。

•根据测程(Session)的反馈信息进一步学习相关业务知识,测试知识及其他知识。

•根据测试结果及其学习情况计划下一个测程(Session)策略。


1.7.4 HTSM模型

启发式测试策略模型(The Heuristic Test Strategy ModelHTSM)是由测试专家JamesBach设计总结的。HTSM是设计测试策略的模型,也可以指导选取测试策略、进行测试用例设计、确定测试的范围以及了解项目背景。在测试人员进行测试用例设计时,通过HTSM可以随时提醒应该如何思考,应该考虑哪些方面。另外也可以帮助总结测试经验,使得每一位测试人员都可以借鉴,也都可以参考。HTSM模型请参考图1-12所示。

image.png

1-12 SBTM模型


      包括项目环境、产品元素、测试技术和质量标准。


1.项目环境

就是指项目的背景,可利用的资源,限制的条件等所有可以帮助或者限制的因素。在介入测试的阶段或进行测试分析、测试计划阶段是非常有帮助的。

•使命(Mission)。

•项目信息(Information)。

•与开发的关系(DeveloperRelations)。

•测试团队(TestTeam)。

•设备和工具(Equipment& Tools)。

•进度安排(Schedule)。

•测试模块(TestItems)。

•交付物(Deliverables)。


2. 产品元素

产品元素就是计划要测试的内容。测试人员必须保证覆盖所有的产品元素,而且不仅仅是可以看到的部分。

Structure结构

Function功能

Data数据

Interfaces接口

Platform平台

Operations操作

Time时间


3. 测试技术

测试技术就是进行测试的策略,常用的测试技术有下面九种。

Function Testing功能测试

Claims Testing需求测试

Flow Testing 流程测试

Domain Testing领域测试

Scenario Testing场景测试

Stress Testing压力测试

Automatic Checking自动化测试

Risk Testing安全测试

User Testing用户测试


4.质量标准

质量标准是测试人员判断一个系统是否测试通过的准则。在测试过程中或测试完成可以通过这些标准验证系统是否符合质量要求。

Installability可安装性

Performance性能

Compatibility兼容性

Scalability伸缩性

Security安全性

Charisma吸引力

Usability易用性

Reliability可靠性

Capability功能性


1.7.5 ACC模型

    ACC(AttributesComponents Compatibilities)是谷歌提出的开发模型。这里的ACC分别指属性(Attribute)、部件(Component)以及能力(Capability)。

•属性(Attribute)是系统的形容词,代表产品的品质和特色,是区别于竞争对手的关键。

用词需要简单、精确、变化和短小。

•部件(Component)是系统的名词,是在属性被识别之后确定的。

•能力(Capability)是系统的动词,是系统在用户指令下完成的动作。


案例1-1 某电子商务网站ACC模型。

•属性(Attribute):便利、安全、直观、友好。

•部件(Component)(为了达到这个特质需要具有)登录、注册、搜索…模块。

•能力(Capability)。

Ø增加商品到购物车:购物车(部件)在满足直观(属性)的一个能力。

Ø在线支付已购的商品:商品(部件)在满足便利和安全(属性)的一个能力。

Ø


1.8 软件测试设计方法


1.8.1 基于传统的测试设计方法

基于传统的测试测试设计方法包括:等价类/边界值、决策树、决策表、用况、状态图、正交法。详细内容请参考作者写的《软件测试技术实战设计、工具及管理》[1]的第2章。


1.8.2 基于质量的测试设计方法

ISO25102006包括产品质量模型(见图1-13所示)和使用质量模型(见图1-14所示)


image.png

1-13 ISO2510 2006产品质量模型


image.png

1-14 ISO2510 2006使用质量模型


详细内容请参考作者写的《软件测试技术实战设计、工具及管理》[1]的第1章。。


1.8.3 基于经验的测试设计方法

基于经验的测试方法现在最流行的方法是探索式测试,详细内容请参考第1.2.2节和作者写的《软件测试技术实战设计、工具及管理》[1]的第4章以及参考文献[5][6]


1.9 项目的质量三角形


1-15是软件项目三角形。

image.png

1-15  软件项目三角形


下面做如下假设。

假设质量(Q)与范围(S)不变,时间(T)减少的情形下,必须雇佣高水平的人员或者先进的技术,即增大产品的成本(C)。同理,质量(Q)与范围不变,时间(T)增加的情形下,可以减少成本(C)。

假设质量(Q)与时间(T)不变,范围(S)增加的情形下,也必须增大成本(C)。同理,质量(Q)与时间(T)不变,范围(S)减少的情形下,可以减少成本(C)。

假设质量(Q)与成本(C)不变,时间(T)减少的情形下,范围(S)必须减少。同理,质量(Q)与成本(C)不变,时间(T)增加的情形下,可以加大范围(S)。


于是可以得到如下公式:

Q = TC/S

也就是说质量消耗单位模块的时间和金钱的乘积。从这里可以看出,完成一个功能,需要达到一定的质量,必须消耗有效的时间或者增加产品的成本投入。

的。

1.10  本章总结

1.10.1  介绍内容

•软件测试的定义

•软件测试术语

Ø场景测试法

Ø探索式测试

Ø快速测试

Ø基于模型的测试

Ø语境驱动学派

Ø肥皂剧测试

ØDevOps

•软件工程模型

Ø瀑布模型及其衍生模型

u瀑布模型

u快速原型法

u迭代模型和螺旋模型

Ø敏捷开发

uScrum

uXP

•软件测试模型

ØV模型

ØW模型

ØX模型

Ø敏捷测试模型

•软件测试方法

•软件测试步骤

•软件测试分析方法

Ø6W2H法则

ØCPIE模型介绍

ØKAET模型

ØSBTM模型介绍

ØHTMS模型介绍

ØACC模型介绍

软件测试设计方法

Ø基于传统的测试设计方法

Ø基于质量的测试设计方法

Ø基于经验的测试设计方法


•项目的质量三角形

1.10.2  案例

案例

所在章节

案例1-1 某电子商务网站ACC模型。

1.7.5 ACC模型


—————————————————————————————————


软件安全测试

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps 和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps与Jenkins 2.0之Jenkins

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

Selenium自动化测试

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能测试第1季:性能测试基础知识

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能测试第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能测试第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能测试第4季:监控与调优

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入门

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鸟顾老师漫谈软件测试

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 算法
新时代软件测试工程师的挑战与机遇
随着科技的飞速发展,软件测试在当今信息化社会中扮演着举足轻重的角色。本文将探讨新时代软件测试工程师所面临的挑战和机遇,分析其发展趋势及应对策略,旨在为广大软件测试从业人员提供启示和指导。
|
测试技术 数据库
腾讯游戏测试工程师的经验心得分享
腾讯游戏测试工程师的经验心得分享
451 0
|
2月前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
3月前
|
Java 测试技术 程序员
「测试线排查的一些经验-上篇」&& 后端工程师
「测试线排查的一些经验-上篇」&& 后端工程师
28 1
|
2月前
|
人工智能 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
|
2月前
|
安全 大数据 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
|
2月前
|
SQL 安全 网络协议
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
|
5月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
90 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
5月前
|
运维 测试技术
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
测试与开发问题之测试开发工程师与软件开发工程师和测试工程师如何区别
|
5月前
|
监控 安全 测试技术
测试与开发问题之为什么测试开发工程师需要有安全生产意识,文档编写能力对于测试开发工程师的重要性如何理解
测试与开发问题之为什么测试开发工程师需要有安全生产意识,文档编写能力对于测试开发工程师的重要性如何理解