测试面试基础
项目管理工具:Jira、禅道、Git、SVN
Selenium(录制脚本) 谷歌/火狐浏览器 安装插件:通过模拟人工操作实现自动化测试
测试报告自动化:安装nodejs 安装selenium-ide-runner
Postman 接口测试 常见的有soapUI,Jmeter,fiddler经常用来做接口测试
Fiddler 网络代理工具 抓包工具
一、软件的生命周期
一个软件的生命周期包括 制定计划、需求分析定义、软件设计、程序编码、软件测试、软件运行、软件维护、软件停用、8个阶段
(一)制定计划阶段
1. 计划阶段的工作内容
(1)确定软件开发总目标;
(2)给出软件的功能、性能、可靠性以及接口等方面的设想;
(3)研究完成该项目的可行性,探讨问题解决方案(三峡工程);
(4)对可供开发使用的资源、成本、可取得的效益和开发进度做出评估(还包括风险);(5)指定完成开发任务的实施计划。
2. 举例(以研发计算器为例)
(1)研发一个计算器;
(2)支持加、减、乘、除,所有运算都在一定时间之内完成;
(3)该项目目前不存在任何技术问题;
(4)需要在三个月之内完成所有开发项目和测试工作,并推向市场;
(5)具体计划参见一般项目一级计划。
(二)软件需求分析阶段
1. 需求分析阶段的工作内容
对开发的软件进行详细的定义,由需求分析人员和用户共同讨论决定哪些需求是可以满足的,并且给予确切的描述,写出软件说明书(SRS)。软件研发的类型(产品/项目)不同,需求的来源也不同、用户也不同。
2. 举例(以分析计算器为例)
(1)功能需求:十进制加、减、乘、除;八进制;二进制;十六进制。
(2)性能需求:十进制加法需在1s内完成;十六进制乘法需在3s内完成。
(三)软件设计阶段
设计是软件工程的技术核心,这个阶段需要完成设计说明书。
1. 分类概要设计(HLD):英文缩写High Level Design (顶层设计) 在设计阶段把各项需求转换成相应的体系结构,每一部分是功能明确的模块。详细设计(LLD):英文缩写Low Level Design (底层设计) 对每个模块要完成的工作进行具体的描述。
2. 举例(以设计计算器为例)
(1)概要设计整个软件分成六个模块:界面模块、主控模块、加法模块、减法模块、乘法模块、除法模块等(主控模块调用后四个模块)。加法模块包含五个主函数:加法主函数、十进制主函数、二进制主函数、八进制加法主函数、十六进制加法主函数(加法主函数调用后面四个主函数)。
(2)详细设计加法主函数的主流程图或者伪代码。
二、软件测试的原则
(一)应尽早地和不断地进行软件测试;
(二)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;
(三)程序员应当避免检查自己的程序;
(四)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;
(五)充分注意测试中的群集现象(二八理论:80%的错误出现在20%的模块中);
(六)严格执行测试计划,排除测试的随意性;
(七)应当对每一个测试结果做全面检查;
(八)妥善保存测试计划、测试用例、出错和最终分析报告,为维护提供方便。
(九) 杀虫剂现象:同样的一个测试用例不能执行多次,因为软件会对它产生免疫
三、软件测试的过程
**书面上的流程:**测试计划—测试设计—测试执行—测试总结
我公司的流程:
1. 需求评审。发起人:产品(产品经理);参与人:开发、测试、UI设计人员(视觉人员);目的:了解需求、讨论
2. 编写用例
(1)测试用例的定义:通常讲是对一项测试任务的描述,包含输入数据,操作步骤,预期结果等。
(2)测试用例八大基本要素:测试编号,测试项目,测试标题,重要级别,前置条件,输入数据,操作步骤,预期结果。
(3)用例管理工具:禅道、TestLink、QC、自定义(公司自己开发的),一般我们用Excel写用例
3. 用例评审。发起人:测试人员;参与人:产品、开发、UI;目的:讨论、查漏补缺
4. 提测。通俗的说是告诉测试人员,软件开发完以后可以进行测试。
5. 测试执行。参照测试用例进行执行
6. 冒烟测试:冒烟测试(smoke test)在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的Bug,或者是否会对其它模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为Smoke Test。
7. 系统测试
8. 回归测试:回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
9. 产线验证
10. 测试报告。发送形式:邮件里面说明或word文档
四、Linux常用命令
linux系统中列出文件清单命令有:ls命令,cat命令,more命令,less命令,head命令,grep命令,fgrep命令和egrep命令。
以下是详细介绍:
1、列出文件清单命令,ls。ls命令能够列出当前目录下的所有内容。ls 命令的执行方式为:# ls [-选项] [文件名或者目录名]
2、cat命令,功能:在标准输出上显示文件。语法:cat [-vTEuAte] 文件;
3、more命令,功能:在终端屏幕按屏显示文本文件。语法: more [-pcdls] 文件;
4、less命令,less命令的功能几乎和more命令一样,也是用来按页显示文件,不同之处在于less命令在显示文件时允许用户既可以向前又可以向后翻阅文件。
5、head命令,功能:显示指定文件的前若干行。缺省设置为显示10行。语法:head [-n] 文件;
6、tail命令,功能:显示指定文件的末尾若干行。缺省设置为显示10行。语法:tail [+ / - num ] [参数] 文件;
7、grep、fgrep和egrep命令,功能:这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。语法:grep [-EFbcihlnvxef] [查找模式] [文件名1,文件名2,……],egrep [选项] [查找模式] [文件名1,文件名2,……],fgrep [选项] [查找模式] [文件名1,文件名2,……]。
Linux查看日志命令有多种:tail,head,cat,tac,more
cd 切换目录
ls 查看文件与目录
grep常用于分析一行的信息
find查找
cp复制
mv移动
rm删除
ps将某个时间点的进程运行情况选取下来并输出
kill向某个工作或者是某个
PID传送一个信号
tar文件打包
file用于判断接在file命令后的文件的基本数据,如:file filename->file ./test cat用于查看文本文件的内容
vim文本编辑
chmod改变文件的权限
chown改变文件的所有者
gcc把C语言的源程序文件,编译成可执行程序
1.常用命令:tail -n 10 test.log 查询日志尾部最后10行的日志
tail -n +10 test.log 查询10行之后的所有日志
head -n 10 test.log 查询日志文件中的头10行日志
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志
2.按关键字查找
cat -n test.log |grep "debug"或grep "debug" -n access.log 得到debug所在行是102行
按行号看:cat -n test.log |tail -n +92|head -n 20
选择关键字所在的中间一行. 然后查看这个关键字前10行和后10行的日志
tail -n +92:92行之后的日志 head -n 20:在前面的查询结果里再查前20条记录
3.通过时间查找 查这个时间字符串是否存在 grep “2017-06-21 10:00” test.log
查询这段时间内的日志 sed -n '/2017-06-21 09:25:55/,/2017-06-21 14:25:55/p' access.log(这两个日期必须是日志中打印出来的日志,否则无效)
4.日志内容特别多,打印在屏幕上不方便查看
(1)cat -n test.log |grep "debug" |more 分页打印
(2)cat -n test.log |grep "debug" >debug.txt 可以保存到debug.txt文件中,到时可以拉下这个文件分析
五、测试基础
测试流程:看需求分析文档->设计测试计划->编写测试用例->测试执行->测试结果分析->测试调优->输出测试报告
测试方法:
按测试目的:功能测试、界面测试、性能测试、安全性测试、易用用测试、兼容性测试
按测试设计方法:黑盒测试、白盒测试、灰盒测试
按阶段分类:单元测试、集成测试、系统测试、验收测试
什么是黑盒测试?
黑盒测试又称为功能测试、数据驱动测试或基于规格说明的测试。黑盒测试相对于白盒测试而言,并不关心被测对象的内部实现,而是针对被测对象提供的外部功能与规格出发来设计测试用例进行测试。
黑盒测试的常用方法是什么?
等价类划分、边界值分析、错误推测、因果图、判定表、正交分析、功能图等。
什么是白盒测试?
白盒测试是根据被测程序的内部结构设计测试用例的一种测试方法。也称结构测试、逻辑驱动测试或基于程序本身的测试。测试者了解待测试程序的内部结构、算法等信息,这是从程序设计者的角度对程序进行的测试。
白盒测试的常用方法是什么?
采用白盒测试方法,业界比较成熟的方法有:程序控制流分析、数据流分析、逻辑覆盖、域测试、符号测试、路径测试、测试插装、程序变异等。其中最常用的是逻辑覆盖,逻辑覆盖测试是程序结构测试最常用的测试方法,常用的逻辑覆盖测试方法包括:
语句覆盖:设计若干测试用例,运行被测程序,使得每一个可执行语句至少执行一次;
判定覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少执行一次;
条件覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次;
判定-条件覆盖:设计足够的测试用例,使得判断中的每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次;
路径覆盖:设计的测试用例要求覆盖程序所有可能的路径。
我们开发的代码要保证语句100%覆盖,尽量做到判定100%覆盖。
测试用例(举例):
登录页面
软件缺陷测试及等级划分:
A类--严重错误,**以下各种错误:
1、由于程序所引起的死机,非法退出
2、死循环
3、数据库发生死锁
4、因错误操作导致的程序中断
5、功能错误
6、与数据库链接错误
7、数据库通讯错误
B类--较严重错误,**以下错误:
1、程序错误
2、程序接口错误
3、数据库的表、业务规则、缺省值未加完整性等约束条件
C类--一般性错误,**以下各种错误:
1、操作界面错误(**数据窗口内列名定义、含义是否一致)
2、打印内容、格式错误
3、简单的输入显示未放在前台进行控制
4、删除操作未给出提示
5、数据库表中有过多的空字段
D类--较小错误,**以下各种错误:
1、界面不规范
2、辅助说明描述不清楚
3、输入输出不规范
4、长操作未给用户提示
5、提示窗口文字未采用行业术语
6、可输入区域和只读区域没有明显的区分标志
E类--测试建议
六、缺陷管理
(一)软件缺陷严重性和优先级严重级
(1)严重:系统崩溃、数据丢失、数据损坏
(2)较严重:操作性错误、错误结果、遗漏功能
(3)一般:小问题、错别字、UI布局、罕见故障
(4)建议:不影响使用的瑕疵或更好的实现
优先级
(1)最高优先级:立即修复,停止进一步测试
(2)次高优先级:在产品发布之前必须修复
(3)中等优先级:如果时间允许应该修复
(4)最低等优先级:可能会修复,不修复也能发布
一般严重性和优先级的划分用数字1~4表示,有的小数字表示的级别最高,而有的用大数字表示级别高。另外严重级和优先级的划分并不唯一,可适当修改。
3. 缺陷等级划分
(二)缺陷跟踪管理
为了正确跟踪每个软件缺陷的处理过程,通常将软件测试发现的每个错误作为一条条记录输入指定的错误跟踪管理系统。
bug管理工具:RTC、jira、禅道、QC、Bugzilla等。
作为一个缺陷跟踪管理系统,需要正确的记录错误信息和错误处理信息的全部内容。
1.Bug记录信息
测试软件名称、测试版本号、测试人名称、测试用例、标题、测试软件和硬件配置环境、发现软件错误的类型、错误严重等级、详细步骤、必要的附图、发生错误的模块…
2. Bug处理信息
处理者姓名、处理时间、处理步骤、缺陷记录的当前状态
七、性能测试
https://mp.weixin.qq.com/s?src=11×tamp=1648692688&ver=3709&signature=8FwOlkmyDsWIdk-X7YwceywE2SOdPCzWS6im7Di2naEKSX3Vy9GVDXv3CNBYqtD676BQN*oKF3jy13wshYwK6rJaMNWInS6HC9Q6mf4VUk*eL37DV4*IERdSdXBASWAj&new=1
二八原则: https://www.cnblogs.com/brainchan/p/10978025.html
在性能测试中通常使用二八原则来量化业务需求。
二八原则:指80%的业务量在20%的时间里完成。
例:如某个公司1000个员工,在周五下午3点-5点有90%的员工登陆公司周报系统
则:业务量=1000个,时间=2x60x60=7200秒
根据二八原则来计算3点到5点的TPS=(90%*业务量*80%)/(20%*时间)=0.9*1000*0.8/(0.2*7200)=0.5个/s
注:二八原则计算的结果并非在线并发用户数,是系统要达到的处理能力(吞吐量)
性能测试首先是基于功能测试的,必须了解其功能需求才能开展性能测试。
如何进行性能测试?
一个被测系统,我们需要分3部分来分析:
入口:需要怎么发送请求,施压方应该施加多大的压力,用什么方法施压;
被测系统:系统怎么应对单个请求,系统业务流程是怎么样的,系统网元节点、数据流向等,整体性能需求有没有,需要考察哪些指标,怎么监控;
出口:接收数据有哪些,怎么获取和比对;
是不是感觉就和功能测试差不了多少?是的,就是先分析单个用户的功能流程以及系统的数据流向(包括后台的数据流向)结构图,然后再考虑大量的用户操作。
开展性能测试的步骤?
一般系统的性能测试步骤大体如下:
1.确认测试目标;
2.分析被测系统业务需求;
3.分析被测系统的系统结构;
4.分析被测系统的性能测试点;
5.设计测试方案、检测方案和测试案例;
6.选择测试工具;
7.测试开发;
8.测试执行;
9.测试结果分析;
10.测试调优、测试验证、测试分析;
11.输出测试报告;
八、接口测试
Postman做接口测试 增删改查
Postman:负责接口测试的。后端开发和测试都用,开发人员在解卡之前先在本地测一遍,再解卡。我们测试用的时候,主要针对于,有些接口是不对外暴露的,因此需要对这个接口使用postman进行测试。
postman接口测试
*postman进行接口测试的必要条件:
1.请求地址(url)
2.请求协议:http,webservice
3.请求方式:get/post,resful
4.请求头
5.参数:表单提交,请求体提交
*postman发送post请求总结
*post请求的参数是在body中传递,有多种传值方式,需要根据头部参数的Content-Type的值来确定选择哪种方式传值。
*Content-Type取值与body传值方式对应关系
Postman测试流程:
1. 找开发人员要接口文档(就是个文件,包含接口的url地址、请求方式、请求参数的格式、返回值)。
2. 开始测试
get:一般用来做查询
post:一般用来做新增
put:修改
delete:删除
九、自动化测试
Selenium