软件测试基础概念
本节内容
软件基础知识测试概念
软件测试流程
测试用例设计方法
一、软件基础知识测试基础概念 |
1、软件基础:概念程序相关文档,一整套解决方案。相关文档,功能需求,软件设计,项目计划。文档意义:方便对软件进行使用维护
2、自动化测试:界面、接口、性能、CI;界面:Seninum、appium,monkey;
脚本框架:python、java、····;性能:jmeter掌握;CI会
3、软件基础知识:硬件驱动,驱动精灵 介于操作系统跟硬件之间;2、操作系统有PC端(wind7、XP银行、MAC)、服务器端(winds server界面、linux各种变种开元)、移动端(Andrid华为、鸿蒙);3、应用软件;
4、应用层是测试的主要工作;
程序设计语言:能被计算识别的语言;程序设计语言分为机器语言、汇编语言、高级语言。机器语言是危急值代码,也叫机器码;汇编语言是科编程的器件语言;高级语言是像c++、java、python等语言,高级语言通过编译器翻译成绩计算机可识别的二进制语言;
5、编译程序的过程:编译器将高级程序语言>源程序>机器语言格式的目标程序
6、DB数据库:按照一定数据结构来组织、存储和管理数据的仓库。有增删改查功能
7、什么是计算机程序:计算机识别只是计算机每步动作,经过编译可解读被运行编译脚本程序,运行钱编译一遍,运行时才编译成机器语言
8、OSI七层模型(网络通信基础理论模型):应用层 表示层 会话层 传输层(寻址信息) 网络层 数据链路层 物理层 。发送信息是封装,接收信息就是解封装
9、Manual testing/Automated testing 程序设计过程:
>需求文档的分析排查;
>计划;
>设计;
>用例编写;
>用例执行
>缺陷提交
>报告
>项目管理
>质量管理;
自动化测试包括(界面测试、接口测试、性能测试、CI持续集成测试);
10、Black box texting/white box testing黑盒测试:手工和自动化都属于黑盒测试;白盒测试:了解程序内部实现逻辑实现,跑程序一般是开发单元测试会用到,也可以编写程序调试
11、Debug 调试/Test plan 测试计划/Test strategy 测试策略/Test strategy 测试方案/Test case 测试用例/BUG 缺陷/Defect 缺陷/Test report 测试报告;
>调试:打断点,单独调试,为了证明软件的正确性;
>测试计划:描述测试活动范围、方法、资源和进度文档。测试计划可以有效预防风 险,保障项目的顺利进行
>测试用例:具体执行测试的操作说明,执行手册,主要是用测试具体的精华;基于需求对应用程序的某个功能点执行一系列测试过程步骤,并给出期望结果;
>缺陷:超越不满足客户需求的软件行为,我们称之为显性需求,缺失的异常处理,不符合用户的操作习惯,称之为隐性需求
>测试报告:包测试的过程和结果整理成文档,分写问题和缺陷,纠正质量问题,为验收和交付打下基础;
>测试计划:项目管理文档,一般用于系统测试或者性能测试,描述了测试的范围、方法、时间、人员、和退出机制
>测试策略:测试的方法,环境规划、测试工具的设计和选择,用例的设计思路,可以是测试计划一部分,也可以细化成一个独立文档。形成独立的文档后叫测试方案。test strategy,技术实施文档,测试策略文档化以后就是测试方案
>测试方案技术
角度 | 测试计划 | 测试方案 |
组织方式 | 管理文件 | 技术文件 |
目的不同 | 强调做什么 | 强调怎么做 |
具体要求不同 | 组织架构、工作任务分配、工作量估计、人力物力分配、进度安排、风险评估 | 测试需求细化、测试组网图的设计、自动化测试框架设计,测试数据dummy、测试用例设计、设计原则 |
12、Testing environment 测试环境:环境=软件+硬件+数据+网络;不同的岗位需要的环境也不一样;
13、Deployment 部署,搭建:通过具体操作使环境得以跑通;
14、Sprint、Iteration、Phase 迭代;一个阶段或者一个模块迭代速度比较快,2到四周一个迭代,对一个迭代测试进行总结;(例如小学、初中、高中)
15、 Version 版本:类似官方正式对外发布的版本;产品正式对外发布的版本
16、Build 内部版本:类似于内部测试定目标,一周基本就完成一个build;(例如小学一年接、二年级)
17、Functional testing 功能测试:功能测试可以是手动的也可以是自动化的,对各功能通过测试用例逐项测试;
18、User interface testing 用户UI界面测试:UI测试测试用户界面功能模块是否合理,风格是否统一,操作是否便捷,界面中文字是否正确,命名是否统一,页面是否美观】、文字图片是否合理
19、exception testing 异常测试:改变测试条件或超出边界值,看结果是否可以接受
20、unit testing 单元测试:
21:integration testing 集成测试:
22、UAT (user acceptance test)用户验收测试
23、international testing 国际化测试:使人群发生变化、考虑国籍、文化、背景
24、performance testing 性能测试:很多用户同时操作软件的一个功能,看软件是否稳定,主要测软件的稳定性跟抗性
25:Priority [praɪˈɒrəti]优先、severity [sɪ'verəti]严重;测试等级可以划分为致命、严重、一般、轻微
26、quality assurance [əˈʃʊərəns] 简称QA质量检测
27、smoking testing 冒烟测试:用基本用例先跑一边主体功能,先跑一边,不行就打回重做;
28、Health check 健康检查:
29、regression testing [rɪˈɡreʃn]回归测试;在最后一个版本归档之前,将之前的用例都测一遍;
30、software life cycle 全生命周期:需求分析>计划>设计>编码>测试>交付(大概)
31、static testing 静态测试;通过黑盒测试不去看后边的代码实现都称为静态测试
32、Dynamic testing [daɪˈnæmɪk]动态测试:通过跑所有程序、跑代码的测试方法
33、structrued query language (SQL)关系数据结构语言关系数据库语言可通用
34、modale 模块:对词条部分内容进行格式化整理
35、test scenario [səˈnɑːriəʊ]测试场景;测试场景包含很多的测试用例,如何测、测什么
36、check point 检查点;检查点只是一个数据库事件,他的存在意义在一减少奔溃恢复的时间
37、test matrix [ˈmeɪtrɪks]测试矩阵;先个人测单任务,成功后与小组整合,大阶段后必须测
38、test coverage 测试覆盖程度;对需求覆盖程度(通过评审会议不断改进
39、review 审查 regression 回归;
40、screen shot 截图
41、Attachment 添加附件;测试发现bug需要截图并上传附件
42、软件的本质:是人类思维的程序化体现
43、编程:解决将人的思维、方法用程序画的语言编成代码,通过编译使计算机理解,最终使计算机按指令解决问题的过程
44、软件开发:从版本计划、需求分析、软件设计、代码编写、调试一系列过程
45、软件研发:不止是软件开发。从接到用户需求>需求澄清>版本计划>需求分析>软件设计>UI设计>测试计划>测试设计>代码编写>测试执行>最终验收过程。最少的也得有需求>设计>开发>测试
46、requirement 需求;来源与客户由BA、SE进行整理归纳,描述系统该做什么的文档,SRS需求规格说明书;
47、需求分析澄清:学习需求,确定系统的运行环境,建立逻辑模型,确定系统的功能和性能要求;
48、需求变更:用户的需求总是在变化的;
49、流程图:以特定的图形符号+说明,表示算法图
50、architecture design 架构设计;①概要设计:建立总体结构、划分功能模块、定义接口;②详细设计:各模块具体实现算法,确定各模块详细接口
51、coding 程序编码;编写程序源代码,进行调试
52、deployment 部署;将程序配置安装到网络硬件中,使之能被用户使用
53、environment 环境;程序运行依赖的网络硬件服务、DB等的总称
54、接口:就是一些列已经经过编译的可被调用的函数库
55、软件开发的模式:瀑布模式,参照46;
56、迭代:分阶段交付,但内部依然遵循瀑布模式
57、agile 敏捷;快速迭代,四大价值十二大方法
58、scrum [skrʌm]敏捷的一种典型的管理实践,最流行最有效的敏捷项目管理理念与方法
59、软件测试术语:SRS 软件需求说明书;HLD概要设计说明书,程序系统设计语言;LLD详细说明书;BD概要设计;DD详细设计,设计每个模块实现算法,所需局部结构;FD结构设计
60、软件研发的相关角色:PM项目经理;Architect架构师;developer Dev开发人员;test manager TM测试经理;Tester TE测试人员;BA/SE需求分析师;UE用户体验师
61、API(application programming intreface)应用程序接口;良好的接口设计可以降低系统各部分的相互依赖,提高组织单元的内聚性,降低组成单元的耦合程度,从而提高系统的可维护性和可扩展性
62、测试应具备的技能:>快速学习需求;>测试基础扎实;>测试工具使用;>代码编写能力
63、软件测试常见的误区:>只是对程序的测试;>只在开发完成后测试;>软件质量只是测试责任;>软件发布后缺陷是测试人员的错误(有测试的部分责任但并不都是,评审环节为什么没有发现,UAT为什么没有发现,没有十全十美的测试);>软件测试对测试人员的技能要求不高;>软件测试与开发无关(需要保证测试、BA、开发对需求的理解一致,开发自测保证质量,缺陷需要跟开发人员沟通确认)
64、BA、SE\跟开发、测试需要碰需求;进行需求串讲,反串讲、互相澄清需求,达到需求对齐
65、软件测试是软件研发的一部分,不止找出错误的活动更是研发环节质量活动的总称,包括软件研发过程改进和软件质量评定;
66、软件测试的价值:质量检测、质量改进、质量鉴定、质量督导
67、DIT 过程开发的集成测试
68、LLT 手工用例执行 low level testing /hight level testing;开发单元测试,白盒常见的有UT和IT,LLT是开发阶段对系统进行尽早尽快的验证(unit testing,iteration testing)
69、HLT 一般都是黑盒测试;整个版本的测试,测试对象是完整的产品,而不是模块,通常使用黑盒测试,常见的系统测试和自动化验收测试,两个工具:持续集成和在自动化执行工具
70:持续集成工具主要完成代码的静态检查,自动编译、快速反馈、自动化发布;自动化执行工具:测试用例管理,HLT测试环境配置,以及自动化测试执行
71、功能测试:大部分的手工测试、界面自动化测试、接口自动化测试;
72、非功能测试(性能测试):>狭义的性能测试,达到需求中要求负载时各性能指标是否达标;>广义的性能测试:负载、压力、容量、稳定性的统称。容量:确定系统的瓶颈,系统正常运行的并发数;①稳定:确定系统在一定并发下能否长时间工作;②易用性:程序和文档的易理解新、易学性、易操作性;③兼容性:硬件兼兼容(mobile/PC兼容),软件兼容(操作系统和浏览器)、数据兼容(低版本向上兼容);④安全性:验证系统的保护机制能否对系统的功能、数据进行充分的保护;>容量、稳定需测兼容性稳定性实验
二、软件测试流程 |
1、软件测试流程:需求分析>测试计划>测试设计>测试环境搭建>测试执行>缺陷提交>缺陷修复>测试报告
2、分工。 测试人员:需求分析、测试用例编写、测试环境搭建;普通测试人员:测试用例执行,缺陷提交;测试负责人:负责整个测试环节的跟踪、实施、管理。负责测试计划的编写并知会相关人员
3、特别说明:以上流程未包含全部的测试过程,根据实际情况 还会有测试计划评审、用例评审、测试培训、软件发布后有严重问题时,还需后续维护测试。以上环节不是独立联系,工作千变万化,各个环节重叠在一起在所难免。文档测试可能会贯穿于一以上各个环节中。测试人员在软件研发过程中,不但要保证软件的质量,同时也要保证过程中产生的各种文档的质量
4、requirement analysis əˈnæləsɪs]需求分析。软件测试重要的环节,对需求的理解直接影响测试工作的开展,需求分析是我们理解软件功能,澄清需求疑问,明确测试点的过程。一般而言,需求分析包括软件功能需求分析、测试环境需求分析,测试资源需求分析。依据(SRS)软件需求规格说明书,同时参考开发人员的设计文档、
需求评审
5、测试计划(test plan)
一般由黑负责人来编写,依据项目开发计划和测试需求分析结果而制定,一般包括:>测试背景,a、软件项目介绍;b、项目涉及人员;>测试依据a、软件需求规格说明说;b、项目开发文档c、其他如软件设计文档;>测试资源a、测试设备需求b、测试人员需求c、测试环境需求d、其他;>测试策略a、才去测试方法b、搭建哪些测试环境c、采用哪些测试工具以及测试管理工具;>测试事项a、测试设计:场景分析、拆分测试点b、测试开发,测试用例编写,测试脚本开发c、测试执行,根据测试计划执行某个阶段的测试用例,并进行缺陷的提交跟踪;>其他,测试计划包括测试计划的编写日期作者等信息,计划越详细越好。
6、敏捷讲求的拥抱变化,计划就是为了更快的适应变化,为了更好的控制变化;
7、测试设计:包括测试场景设计,测试点拆分以及测试用例或脚开发等工作,也可以吧测试用例编写和测试脚本开发独立出来,称为测试开发,好的测试用例对测试会有很好的指导作用。测试人员:测试用例编写,测试用例编写完成把并进行用例评审,测试用例编写完成并进行用例评审需求人员开发人员参与评审。用例缺陷修正完成,测试设计完成
8、测试环境搭建。不同产品对测试环境要求不同,根据需求去设计并搭建环境基于不同的网络结构去搭建环境,不同的操作系的测试环境
9、测试执行。测试考虑一个量和度的问题,也是测试范围和测试粒度问题,比如一个版本需要测试哪些方面?每个方面要测试到什么程度?管理的角度,在有限的时间内,在人员有限甚至短缺的情况下考虑如何分工,如何合理的利用资源来开展测试。>测试人员测试执行的不到位、敷衍了事该如何解决;>测试效率问题,怎样提高测试效率?>根据不同的版本只做敖燕测试还是系统全面测试?>测试中遇到一些偶然性随机问题该怎么处理。总之,,测试过程中会遇到很多复杂问题,距问题具体解决。
10、缺陷提交。两个方面由谁提交和缺陷描述。一般而言,缺陷都是谁测谁提交,当然有些公司为了保证所提交缺陷的质量,还会唉提交前进行缺陷的评估,以确保所提的缺陷准确性,实际上提交bug可以根据实际情况进行补充
11、缺陷修复。缺陷提交后,转交开发进行修复,修复完成后再转交测试进行缺陷回归
12、CS client server 两种架构,需要PC端
BS brouser server 两种架构,一个网址搞定
13、Web测试,针对网页测试
14、client 测试,测试客户端
15、mobile 测试,mobile本身,mobile上的web、app
16、边界值:输入定义域的边缘以及边缘两端的取值,测试程序的输出是否正确
17、等价类:所有输入可分成不同类的子集,每个子集选取典型数据,分为有效和无效的等价类
18、黑盒:不考虑程序内部实现,按照需求对程序的功能、性能、接口进行测试;
19:、smoking:冒烟测试用基本用例先验证一遍,healthcheck健康检查或者,BVT基本功能验证
20、regression:回归测试。版本大的回归问题单bug/defect
21、E-2-E end to end testing 端到端的测试:对整个业务流程进行端到端的测试(全流程)
22、alpha testing 阿尔法测试,由用户在开发测试环境下进行测试
23、beta testing 生产环境测试:阿尔法测试之后,由最终用户在真实的环境中进行测试
24、SRS 需求规格说明书 software requirement specification。用来描述待开发系统的功能目标和非功能目标的文档。来源::需求来源与客户对系统的预期;作用:整个研发过程的依据,为开发测试提供设计的基本思路,明确开发、测试方向
25、UE 用户体验 UI 用户界面
26、BA Business Analys 需求分析工程师
二、测试用例设计方法 |
1、等价类:类目、属性通过评审避免遗漏;通过等价抽样具有代表性。定义:解决如何选择适当的数据自己来代表整个数据集的问题,通过等价类降低测试的数目去实现合理的覆盖;
2、边界值:合法定义域之外异常测试,之内正确输入,边界值一般用来确定功能的正确性;定义:对输入或输出额边界
3、判定表:帮做决定,提出无效条件,筛选有效条件,降低用例的冗余度。定义:考虑输入域间的相互作用关系,判定表是分析和表达若干输入条件下,被测试对象根据输入条件不同响应的工具,
4、流程分析法:画业务流程图,确定测试路径选取测试数据,构造测试用例,一般都是开发画好
5、正交实验法:有三种画法迪瓦罗、科学覆盖测试。抽样具有代表性条件
>:兼容性测试任务分配(举例华为、小米、opp、vivo)画表
>:表单测试:(只列异常,正常的只有一条)基于一个功能页面n多输入框,测试条件多样情况下使用,(举例一个注册功能,有多种条件输入,每种输入都会有不同的输入条件)
>:交易测试 transaction,(只罗列正确的条件,异常测试不考虑)软件中交易是前台,动作传递后台,后台运行后给出一个反馈,这个过程交易只有一部分可以用交易测试。举例京东交易考虑成本,TPS美妙中交易的数量,基于模型额测试
正交都是列表后通过科学的方式选出2个或两个以上的用例,降低成本、提高效率。也可以将正交写成的列表在运行时自动化的形式自动生成测试用例;
6、初探租车原始需求文档,查资料、罗列竞品、得到自己的理解、再去跟BA和客户交流;初读银行智能排队系统SRS
selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。‘
7、Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。Appium是跨平台的,可以针对不同的平台用一套api来编写测试用例。
8、 Monkey 11大操作事件Monkey所执行的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。Monkey通过这11大事件来模拟用户的常规操作,对手机App进行稳定性测试。
9、CI 又叫Conditional Independence(持续集成测试CI测试也成为持续集成测试,是自动化测试的一种;其过程包括编译代码、准备数据库、执行测试、分析代码、创建安装和部署内容以及生成文档等几个内容。
10、Jmeter 性能测试工具是Apache组织开发的基于Java的压力测试工具。可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
DB 数据哭的简称 Date Base
11、script 脚本,一条条的文字命令,这些文字命令,脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。脚本可以存为后缀名为.cfg的文件放在cstrike文件夹下,执行时在控制台输入:exec(脚本文件名).cfg即可。