美文网首页测试基础课
软件测试工程师必掌握的基础要点

软件测试工程师必掌握的基础要点

作者: 气质有毒_ | 来源:发表于2019-03-07 11:32 被阅读51次

    基础技能

    1. 前端开发

    技术知识点:

    HTML:

    标签

    页面标签:head(头部) body(正文) title(页面标题)

    文本标签:font,h1-h6(文本标题从大到小),i (字体倾斜) B(加粗) U(下划线)Strong(加粗)p(段落)br(换行)

    水平线:hr

    图像:image  src(图片来源) alt(图片不能打开时给出提示)

    超链接:a  href(后面接地址)target(页面打开方式)target = blank(重新打开一个页面) target = self(当前页面打开)

    表格:table(表格) tr(行) td(列)

    表单:文本框 :input type =“text”

          密码框:input type =“password”

    按钮:input type = “button”

    单选框:input type =“radio”

    复选框:input type = “CheckBox”

          下拉框:select  option

      文本域:textarea

    其他:ol+li(有序)ul+li(无序)iframe(显示文字)audio(音频)video(视频)marquee(滚动)

    属性

    Font:color(字体颜色)size(字体大小)face(字体类型)

    Image:width(宽)height(高)align(位置)src(图片来源)

    Table:bgcolor(背景色)width(宽)height(高)align(位置)cellspacing(格子间的距离)cellpadding(格子内间距)

    Tr:bgcolor(背景色)width(宽)height(高)align(位置)

    Td:bgcolor(背景色)width(宽)height(高)align(位置)

    Hr:width(宽)height(高)align(位置)

    其他:controls(播放器控制栏) loop(循环方式)autoplay(是否自动播放)

    CSS:

    属性

    文本类:font-size(字体大小)font-family(字体类型)font-weight(字体重量bold表示加粗)font-style(文本风格normal表示正常显示,italic表示斜体)color (颜色)

    位置类:border(边框,三个值:第一个值表示边框线,第二个值表示边框线粗细,第三个是颜色)width(宽)height(高)text-aline (文本水平居中)margin(位置组合属性)  border-spacing(格子间距离) padding(内间距) border-radius(半径设置) line-height(垂直居中,与height一样,且只对单行有效)vertical-align(垂直对齐) float(浮动)position(fixed)(定位)rgba(0,0,0,0-1)(颜色,前三位数是颜色,后面是透明度)。

    背景:background-size(大小)background-color(颜色)background-image(图片)

    选择器

    1. 标签选择器:标签名{css属性}

    2. ID选择器:#id名{css属性}

    3. Class选择器:.class名{css属性}

    4. 组合选择器:(1)父子组合,以空格隔开  #父名  子名 {css 属性}。(2)平级组合,以逗号隔开,  #a名,#b名 {css 属性}。

    5. 伪类选择器:一般用于超链接, # a:link,#a:visited { css属性 } #a:hover,#a:active { css属性  }其中有link(默认时)和visited(访问后)时,这两个放一起,hover(悬浮时)和active(激活时)放一起

    div

    - 盒模型 :margin(外边距)padding(内间距)border(边框)content(内容)

    - 浮动:float(left左浮动 right右浮动)

    - 定位:position(fixed(绝对定位于窗口的某个位置)absolute(绝对定位于某个页面的位置)relative(相对位置))

    - 嵌套:div嵌套div跟表格的tr 里放td一样,外层div 相当于tr,内层div相当于td

    Javascript

    语法:在head里面写script

    输入:prompt(以弹出框的形式输入)

    输出:document.write(“”)(向浏览器窗口输出)

    Alert()(以弹出框的形式输出)  console.Log()(以日志形式输出)

    数据类型:undefined(未定义)null(空)number(数字)string(字符串)Boolean(布尔)

    数据类型转换:parseint()把字符串型转换为整形

    分支结构:if···else···,switch···case···

    循环结构:for(条件){循环体}while(条件){循环体}do{循环体}while(条件)

    数组:var  arr = [“1”,“1”,“1”,“1”,“1”]

    函数:function 函数名(参数){函数体} 调用时:函数名(参数)

    DOM对象:DOM document object model 文档对象模型 ,它是使用JS的方式去操作页面元素,主要是四个方面:增删查改

    新增:创建:var  mydiv=document.createElement(‘div’)

    设置样式 :mydiv.style.height=‘20px’

    添加到页面中:document.write.appendchild(mydiv)

    查找:var  mydiv = document.getElementById(“”)

    删除:mydiv.remove();

    修改:先查找,在设置样式

    事件:

    鼠标事件:onclick(点击事件)onmouseover(鼠标放上去触发)onmouseout(鼠标移走时触发)

    键盘事件:onkeypress 键盘输入时触发 onkeyup 按键松开时触发

    表单事件:onfoucs 光标移动上去时触发 onblur 失去焦点是触发 onchange光标内容改变时触发

    重点难点:

    JavaScript编程逻辑题。

    实际应用:

    Agileone的几个页面。

    官网。

    常见面试题:

    无。

    想办法自己把会的说出来。+5分

    我看你简历上面还会前端开发的东西,介绍一下呗?项目思路?所用技术?

    注意:如果面试官不会,一定不要有鄙视之类的表情和动作和话语。虚心的。

    任务:

    花20分钟把前两周做的任务练习看一下,表达出来。专业词汇

    2. 数据库

    技术知识点:

    DDL:数据定义语言

    1.数据库的基本操作:

    创建数据库 create  database  数据库名称;

    查询指定数据库  show create database 数据库名称;

    查询数据库:show databases;

    删除数据库:drop database 数据库名称;

    修改数据库:alter database 数据库名称 + 修改内容 set  修改后内容

    2.表的基本操作:

    查看数据库中的表:show tables;

    创建表:create  table  表名(字段名1 数据类型,字段名2 数据类型 );

    查看表结构:desc 表名;

    删除表:drop table 表名;

    修改表数据:alter  table  表名 过滤条件

    过滤条件:add  column 字段名 数据类型(添加字段)

      Drop  column 字段名(删除字段)

      Change column 旧字段名 新字段名 旧字段数据类型(修改字段)

      Modify column 字段名 新数据类型(修改数据类型)

      Rename to 新表名

    DML:数据操纵语言

    增加内容: insert into 表名(字段名) values (值)(表名后跟了字段名时,值要与表名后字段名的数据类型对应,不跟字段名时,要添加每一个的值)

    修改内容:

    修改字段某个的值:update 表名 set 字段名 = 新值 where 字段名 = 旧值

    修改字段的所有值:update 表名 set 字段名 = 新值

    修改多个字段的某个值:update 表名 set 字段名1 = 新值1,字段名2= 新值2 where 字段名1 = 旧值1,字段名2=旧值2;

    删除内容:

    删除整个表内容:delete from 表名(只删除数据,不能删除约束)

    删除整个表内容:truncate table 表名(删除数据和约束)

    删除某条内容:delete from 表名 where 条件(条件为要删的那条数据信息)

    DQL:数据查询语言

    基础和高级

    查询所有字段:select * from 表名

    查询某个字段:select 字段名 from 表名

    查询多个字段:select 字段名1,字段名2 from 表名

    查询某一条数据:select * from 表名 where 条件

    去重复查询:select distinct 字段名 from 表名

    查询空值:select * from 表名 where 字段名 is null

    多条件查询:select * from 表名 where 字段名1的值 and 字段名2的值

    分页查询:select * from 表名 limit m,d(m是从几条开始查,d是查询几条)

    模糊查询:select * from 表名 where 字段like “%”(_)(%表示任意字符,下划线表示一个字符)

    排序: select * from 表名 order by 字段名(asc升序 desc 降序)

    分组查询:select 字段名1 from 表名 group by 字段1

    子查询:select * from 表名1 where 字段名1 in(select 字段名2 from 表名2 where 条件)6联合查询:select * from 表名1 union select * from 表名2

    连接查询:

    内连接:select * from 表名1 inner join 表名2 on 连接条件

    外连接:

    左连接:Select * from 表名1 left outer join 表名2 on 连接条件

    右连接:Select * from 表名1 right outer join 表名2 on 连接条件

    范围查询:select * from 表名 where 字段名 between 值1 and 值2

    聚合函数:max()sum()avg()min()count()

    Select max(字段名) from 表名

    DCL:grant revoke commit rollback

    列出关键字和常用语句用法。

    三大范式

    第一范式:无重复的列(列的原子性),每一列都是不可分割的数据项

    第二范式:无重复的行(行的唯一性),满足第一范式,要求实体的属性完全依赖于主键字段

    第三范式:主表与外表(消除传递的依赖),满足第二范式,一个数据表中不包含已在其他表中已包含的非主键字段

    七大约束

    关键字、语法、作用

    主键:primary key   语法:字段 数据类型 primary key  作用:指定某个字段的数据不能重复、为空

    外键:foreign key    语法:constraint FK_表1_表2 foreign key (从表字段) references 表2(主表字段) 作用:保证数据的一致性和完整性(改变主表关联从表字段的数据时,从表数据也跟着改变)

    默认值:default    语法:字段 数据类型 default 值 作用:指定某个字段的默认值

    非空:not null 语法:字段 数据类型 not null  作用:指定某个字段不为空

    唯一:unique 语法:字段 数据类型 unique 作用:指定某个字段的值唯一

    自增长:auto-increment 语法:字段 数据类型 auto-increment 作用:指定某个字段的值每次自动加1

    高级

    视图 view   create view a select * from student, score where ...  虚表

    触发器 trigger  限制约束  多了也不好

    存储过程 procedure  把一些sql语句封装到一个方法中   

    索引 index 相当于书的目录 查询效率

    关键字、语法、作用

    视图是一张虚拟表,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。视图可以从多个复杂的关联表中提取出我们需要的信息,提高查询速度。

    触发器:trigger  语法:create trigger 名字after insert on 表1  foreach  row insert into 表2 values(值)  作用:当操作某张表时,同时能触发一些动作和行为

    存储过程:procedure 语法:CREATE  PROCEDURE  PRO_TEXT ( 参数列表 )    BEGIN   SQL语句  END  调用存储过程:call 存储过程名(参数) 作用:把一些SQL语句封装到一个方法中,提高执行效率。

    索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。作用:可快速访问数据库表中的特定信息。

    重点难点:

    DQL的应用。

    实际应用:

    如何对一个系统设计数据库。

    搭建环境,准备数据。

    常见面试题:

    1.知道哪些约束呢?

    主键,外键,自增长,非空,唯一,默认值,主键指定某个字段的值不能重复,为空;外键保证数据的完整性和一致性;自增长指定某个字段的值每次自动加1;非空指定某个字段的值不能为空;唯一指定某个字段的值不能重复;默认值指定某个字段的默认值。

    2.主键和外键是拿来干嘛的?

    了保证两个表某些数据的一致性。作为外键,它里面的数据必须是在主建中所存在的。举个例子:

    有两个关系:

    student(s#,sname,d#),即学生这个关系有三个属性:学号,姓名,所在系别

    dep(d#,dname),即院系有两个属性:系号、系名

    则s#、d#是主键,也是各自所在关系的唯一候选键,d#是student的外键。

    3.用过查询吗?

    用过,比如条件查询 select * from 表名 where 条件

    模糊查询:select * from 表名 where  字段 like 条件

    分页查询:select * from 表名 limit m,d

    分组查询:select * from 表名 group by 字段1

    排序:select * from 表名 order by 字段名{默认降序desc   升序asc}

    范围查询:select * from 表名 where 字段 between 值1 and 值2

    子查询:一条数据查询的结果用来做另一个数据查询的条件

    4.查询出成绩前三名的学生姓名?

    SELECT STU_NAME FROM SCORE ORDER BY STU_SC DESC LIMIT 3;

    5.一条语句查询男生和女生的平均成绩?

    SELECT STU_SEX,AVG(STU_SC) FROM SCORE GROUP BY STU_SEX;

    6.把成绩小于60分的同学的成绩改为60。

    UPDATE SCORE SET STU_SC = 60 WHERE STU_SC < 60;

    7.你只用过mysql吗?sql server、oracle。

    遵循的同一个sql规范。

    能说出3点区别:

    分页查询时:sql server 使用top关键字

    Mysql 使用limit关键字  Oracle 不支持mysql中limit功能,但他是通过rownum来限制返回的结果集的行数

    字符串拼接:sql server 使用 + ;MySQL使用concat(); Oracle 使用的是||;

    大体上讲,Oracle的数字类型更加简单,大部分情况直接设置number类型就行。而不需要像mysql及sqlserver设置各种数字类型。

    8.你们测试都是用的root账户,安不安全呢?

    是的,因为我们是小型公司,人员比较少,用一个root账号,工作中协调调度都比较方便,如果设置多个管理账户,不利于工作的开展,出现权限问题,要不断的取沟通,浪费了时间,降低工作效率。

    任务:

    花1个小时打开你的navicat,做以前做过的至少5道题,看其他题,把忘记的补一下,问我。

    3. Linux

    技术知识点:

    命令:

    至少4类,20个,中英文

    编辑命令:i 从命令模式进入编辑模式

    ESC 从编辑模式进入命令模式

    :wq 保存并退出

    文件操作命令:

    Vi 生成新文件或者编辑文件 vi a 生成文件a

    Cat 查看文件内容 cat a 查看a的内容

    Cp 复制文件 cp a /b 把a复制到b中

    Mv 剪切文件 mv a /b 把a剪切到b中

    Rm 删除文件 rm a删除文件a

    文件夹操作命令:

    Ls 显示当前目录内容

    Ls-l(ll)显示当前目录详细内容

    Pwd 显示当前所在目录

    Cd  切换到当前用户所有主目录

    Cd a文件夹 切换到文件夹

    Cd / 返回主目录

    Mkdir 创建目录 mkdir a 创建目录a

    Rmdir 删除目录 rmdir a 删除目录a

    权限操作命令:

    Useradd 新增用户 useradd a 新增用户a

    Userdel 删除用户 userdel a 删除用户a

    Passwd 修改密码 passwd a 修改用户a的密码

    Chmod 修改文件或目录条件(r表示可读,w表示可写,x表示可执行) chmod 777 xxx 把xxx文件的权限修改为777

    文件查找命令:

    Find 查找文件  find . -type d -name “***”查找目录为***的文件夹

    find . -type f -name “***”查找目录为***的文件

    Find .-mtime -3(+3)查找当前目录3天前(内)操作过的文件

    Grep 查找文件 通常跟管道一起用  比如 ps -ef | grep bash 查看系统正在运行的进程名包含bash 的进程 管道 :左边的输出作为右边的输入

    系统管理类命令:

    Reboot 重启

    Shutdown 关机

    Ifconfig 查看当前网卡信息

    Ifconfig eth0 192.168.0.55 设置eth0网卡的IP地址

    Ifconfig eth0 up 启用eth0网卡

    Ifconfig eth0 down 禁用eth0 网卡

    Ps 查看当前终端正在运行的进程

    Ps -ef查看系统正在运行的所有进程

    Kill pid 终极进程 pid 为进程号

    重定向 :>覆盖添加  >>累加 比如 a>b 把a文件的内容添加到b中,并覆盖b内容

    A>>B把a文件的内容添加到b中,内容是在B文件内容后面累加

    Df -h查看磁盘大小

    Free -m 查看内存情况

    Top 实时查看系统资源

    Shell脚本:脚本后缀名.sh 调用时也用sh+脚本名调用

    网卡设置脚本内容

    #!/bin/bash

    Set -x

    Para1 = $1

    Para2=$2

    Service iptables stop

    Service network restart

    Ifconfig eth0 192.168.${para1}.${para2}

    Route add default gw 192.168.${para1}.1

    Ping 220.181.57.217

    测试当前能ping通的网段

    #!/bin/bash

    Set -x

    For(i=100,i<130,i++)

    Do

    Result =`ping 192.168.0.${i} -c 2`

    Count=`echo${result} | grep `time=` | wc -l`

    If[${count} -ne 0]

    Then

    Echo 192.168.0.${i}>>succ.log

    Else

      Echo 192.168.0.${i}>>fail.log

    Fi

    done

    Shell脚本就是把Linux的命令放到脚本中,提高执行效率

    测试环境安装:

    哪些部分、各是什么作用、安装配置的步骤、过程中的问题

    安装VMware虚拟机,装Linux ,lrzsz(用于Windows和Linux之间传输文件)

    Gcc(c语言的编译器,因为后续有些软件是C语言写的,需要gcc进行编译安装)

    Zip和unzip(用于压缩和解压);Apache 、MySQL、PHP (Java项目就安装 Tomcat、MySQL、jdk)将项目的网站放到Apache相应的目录下,在使用rz把项目压缩包上传至该目录解压,修改项目的权限为最大,修改Apache里Mod_rewrite的AllowOverride ,再在MySQL中创建项目的数据库,并设置访问权限。退出MySQL和关闭Linux se,进入网站进行安装。

    重点难点:

    命令

    环境搭建

    实际应用:

    搭建测试环境。

    常见面试题:

    线程和进程各自有什么区别和优劣呢?

    进程是资源分配的最小单位,线程是程序执行的最小单位。

    进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。

    线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。

    但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

    1.你熟悉Linux吗?

    用过,Linux主要通过命令操作系统,常用命令中文件类

    Cp mv rm vi cat mkdir rmdir ls pwd cd find grep

    权限类 useradd passwd chmod

    系统类 reboot shutdown ps kill df free top

    重定向 >覆盖追加  >> 累加

    管道 | 左边的输出作为右边的条件

    2.介绍下Linux上搭建的web环境?

    1.配置java环境

    2.下载并安装tomcat

    3.安装mysql并导入sql

    4.项目导入并修改数据库连接配置

    5.启动mysql,启动tomcat。

    3.查询和杀死进程的命令?

    Ps kill

    4.实时查看系统资源

    top

    5.查看磁盘、内存?

     Df  free

    6.测试网络是否连通的?

    Ping baidu.com

    7.介绍下find和grep命令。

    Find 是查找目录下的文件  grep是筛选,对目标内容查找

    8.文件权限命令怎么用?

    Chmod 777文件名

    任务:

    至少2个小时,打开linux,操作常见的命令,查看下自己的环境,能够正常运行apache+mysql,tomcat+mysql。

    4. Java编程

    技术知识点:

    变量和数据类型

    八大基本数据类型:

    Byte型 1字节

    Short型 2字节

    Int型 4字节

    Long型 8字节

    Float 型 4字节

    Double型8字节

    Boolean型 1/8字节

    Char 型2字节

    控制结构

    分支结构:If···else、switch···case

    循环结构:for(表达式){代码块}、 do{代码块}while(表达式)、while(表达式){代码块}

    面向对象

    对象:对象是实实在在的物体;

    类:类是对整个事物的描述的一个集合;

    类是对象的模板,对象是类的具体体现。

    Java的三大特征:封装、继承、多态

    封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。作用:提高代码的复用性和安全性。

    继承:让类与类之间产生关系,子与父的关系。(原因:子类拥有比父类更加强大的功能和属性)好处:提高代码的复用性和维护性。

    多态:事物存在的多种形态。(前提:在继承关系下,有重写和父类引用指向子类对象)好处:提高代码的维护性和可扩展性。

    重写:子类出现父类中方法名和参数列表相同的方法叫做重写。

    重载:同一类中,方法名相同,参数个数、类型、顺序不同的就叫重载

    抽象:abstract修饰的类和方法都是抽象的。包含抽象方法的类是抽象类。

    接口:一些方法特征的集合。只有抽象方法的类就是接口。

    抽象类只能继承,接口只有实现。

    API:

    String是不可变的字符序列,Stringbuffer 、Stringbuilder(字符串缓冲序列)可变字符序列

    其中Stringbuffer是jdk1.0版本出现,线程安全,效率低

    Stringbuilder是jdk1.5版本出现的,线程不安全,效率低

    集合:

    Collection是集合的接口,list和set接口继承Collection接口,list接口特点:有序,有索引和可以存重复值,set接口的特点:无序,无索引,不可以存重复的值。ArrayList、linkedlist、vector实现了list接口。其中ArrayList和vector的底层是数组,查询、修改数据快,增加、删除数据慢。Linkedlist的底层是链表,查询、修改数据慢,增加、删除数据快。Hashset和treeset实现set接口,hashset的底层是哈希算法,treeset的底层是二叉树算法。

    Map是将键映射到值的对象,一个键只能映射一个值,其特点是无序和不可重复。Hashmap和treemap实现map集合,hashmap底层是哈希算法,treemap底层是二叉树算法。

    进程:一个可执行程序就是一个进程

    线程:进程的基本单元,一个进程的每个任务都是一个线程

    线程的生命周期:新建—就行—运行—阻塞(等待、同步、其他)—死亡

    Wait()、sleep()、yield()都是阻塞中的方法。

    并发:CPU短时间内依次执行多件事,给人的感觉是同时执行多件事。

    IO流:字节流和字符流。字节流的父类inputstream和outputstream,字符流的父类是reader和writer。字节流中有fileinputstream(文件字节流,直接操作文件)、bufferedinputstream(缓冲字节流,可以一次读一行)、bytearrayinoutstream(内存数组流,可以向内存中写数据)、objectinputstream(对象流,持久化保存数据)。字符流中有filereader(文件字符流,直接操作文件)、bufferedreader(字符缓冲流,一次读一行)、inputstreamreader(字符转换流,自由转换字符字节流)

    重点难点:

    面向对象 – 封装、多态、抽象、接口

    API -

    实际应用:

    WoniuATM

    Tank

    常见面试题:

    1.看你还会Java,具体会些什么?

    2.面向对象的特征有哪些?

    封装、继承、多态。

    3.什么是构造方法?3W1H

    构造方法就是方法名和类名相同,没有返回值。给对象的数据进行初始化值

    4.重写和重载的区别?

    重写:子类出现父类中方法名和参数列表相同的方法叫做重写。

    重载:同一类中,方法名相同,参数个数、类型、顺序不同的就叫重载

    5.接口和抽象类有什么区别?

    接口的方法只有抽象方法,抽象类的方法可以有普通方法。

    抽象类是被子类继承,接口是被类实现。

    接口与类只有实现,可以单实现,也可以多实现。

    抽象类只有继承,且只能单继承和多层继承。

    6.接口的作用是什么?

    对外提供规则的接口,它是一些方法的声明,在不同的地方实现这些接口,可以实现不同的功能。

    7.集合类、IO类、线程、网络?

    集合:长度可自动扩展,默认长度为10,以1.5倍的速扩展;可以存任何对象,而且只能存对象。

    创建线程:

    1、继承thread类,重写该类的run方法。

    2、实现runnable接口,并重写该接口的run方法。

    Io流:

    1、字节流,文件字节流,缓冲区字节流,对象流,对象数组。

    2、字符流,文件字符流,字符缓冲流,转换流。

    任务:

    花一个小时,把tank的结构、类搞清楚。

    5. 网络协议

    技术知识点:

    OS1七层参考模型是由ISO组织制定的

    TCP\IP四层模型

    5种协议

    Tcp和udp的区别

    Tcp的机制

    HTTP:特点、请求响应、头正文、cookie、session

    1.OS1七层参考模型是由ISO组织制定的

    应用层

    表示层

    会话层

    传输层

    网络层

    数据链路层

    物理层

    2.TCP\IP四层模型

    应用层

    传输层

    网络层

    物理层

    5种协议:TCP、UDP、IP、HTTP、FTP、SMTP

    Tcp和udp的区别

    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

    3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

    传输速度的快与慢,可靠与不可靠,tcp有三次握手、四次挥手,而udp没有

    Tcp的机制

    三次握手、四次挥手

    HTTP特点

    1.支持客户/服务器模式。 

    2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 

    3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 

    4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 

    5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    请求类型

    GET:获取某个资源

    POST:向某个地址提交数据

    请求响应:其中包括头和正文。

    由于http协议是无状态无连接的所有就有了Cookie和Session这种保持用户状态的机制。其本质一样,区别在于Cookie保存在客户端。Session保存在服务器端。

    重点难点:

    HTTP说清楚。

    实际应用:

    用了哪些工具去分析了哪些方面。Httpwatch

    为接口和性能打下基础。

    常见面试题:

    1.说下TCP\IP的四层模型?

    应用层、传输层、网络层、物理层

    2.TCP、UDP、IP、HTTP、FTP、SMTP分别是在哪个层?

    TCP、UDP(传输层),IP(网络层),HTTP、FTP、SMTP(应用层)

    3. Cookie和session的作用和区别?

    Cookie和Session是一种保持用户状态的机制。其本质一样,区别在于Cookie保存在客户端。Session保存在服务器端。

    4.请求的类型有哪些?区别?

    Get:获取资源 post:提交数据 put:向某个特定地址上传其最新内容

    Delete:用于删除请求URL上的某个资源

    5.常见进程的端口号?mysql http https oracle ssh sqlserver

    mysql 3306 http 80 HTTPS 443 ssh 22 ftp 21 sqlserver1433 Oracle1521

    6.使用了哪些工具去分析协议?怎么用的?

    在测试过程中,主要使用httpwatch、fiddler 或者浏览器自带的开发者工具去捕获请求,对请求和响应的头和正文进行分析,用其参数进行接口测试。

    任务:

    花点时间把概念,重点是HTTP的记清楚点。

    测试核心技能

    1. 测试基础

    技术知识点:

    概念:

    质量模型:ISO9000  CMMI  六西格玛

    ISO9000是ISO制定的一个质量标准体系,它制定了管理理念和原则

    CMMI是专门针对软件行业制定的质量体系

    六西格玛是一个全面质量管理体系,不仅仅是质量提高手段

    分类:

    类型:功能、可用、兼容、可靠、安全、性能

    方法:

    黑盒:不考虑代码的逻辑结构和特性,根据需求规格说明书验证程序是否符合它的功能说明。

    灰盒:黑白测试的组合。

    白盒:针对代码的逻辑结构进行测试。

    阶段:单元测试、集成测试、系统测试

    手段:

    静态:不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

    动态:动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能

    手动、自动化

    过程:分析、设计、实现、执行

    用例设计:有哪些、使用策略

    主要是划分等价类,边界值,正交试验法,流程分析法,错误推测法。在E-shop系统中的搜索框使用等价类和边界值进行测试,划分有效等价类和无效等价类。设计测试用例覆盖有效等价类和无效等价类。对下单、加入购物车、确认订单、结算这些功能使用流程分析法和正交试验法进行测试。最后使用错误推测法补充测试用例。

    缺陷:专业名词、属性(项)、生命周期(管理流程)、工具

    属性:创建人、指派人、优先级、严重度、操作步骤、期望结果、实际结果bug类型、操作系统、浏览器、bug标题、所属产品、所属模块、所属项目、影响版本、抄送人、相关需求、

    相关任务

    工具:禅道、bugfree

    周期:new-open-fixed(duplicate(重复),rejected(拒收)design(设计如此),postpone(延期))-close (reopen)

    重点难点:

    项目中设计高质量测试用例

    实际应用:

    用例设计那些题。

    常见面试题:

    1.用例设计方法有哪些?

    主要是划分等价类,边界值,正交试验法,流程分析法,错误推测法。在E-shop系统中的搜索框使用等价类和边界值进行测试,划分有效等价类和无效等价类。设计测试用例覆盖有效等价类和无效等价类。对选择物品、加入购物车、结算这些功能使用流程分析法和正交试验法进行测试。最后使用错误推测法补充测试用例。

    2.你用的缺陷管理(项目管理)工具是什么?怎么用的?

    禅道:在禅道上新建测试用例,并执行测试用例,测试用例执行失败,则转BUG,在BUG提交页面上填写相应信息,指派给PM,由他判断是否是BUG,不是则关闭,是就指派给相应的开发人员。开发人员确认是否是BUG,不是则rejected,是则修改完成后指派给PM,PM指派给相应的测试人员进行测试,通过测试则close缺陷,没通过就rejected给PM再次判断缺陷。

    任务:

    2. 系统测试

    技术知识点:

    smeoa的项目介绍

    项目流程

    分析:分析和提取测试需求、编写测试计划

    设计:设计测试方案、设计测试用例

    实现:搭建测试环境、准备测试数据、实现测试用例

    执行:执行测试用例、缺陷管理、回归测试、测试报告

    重点难点:

    项目流程

    实际应用:

    常见面试题:

    1.你们的smeoa是怎么测试的?

    首先,我们对需求规格说明书进行了分析,并提取测试需求,然后我们组长编写了测试计划,对本次测试进行工作分配,进而我编写了测试方案,测试方案体现了我们的测试策略,描述了当前测试我们需要用到哪些技术、方法和工具,然后我们使用了划分等价类,边界值,正交试验法,流程分析法,错误推测法等方法设计了测试用例,然后进行评审,且再次对测试用例进行优化,等版本发布后我们交叉执行我们的用例,并在执行的过程中优化用例,发现的bug提交到禅道上面交给开发进行处理,最后等我们这个测试阶段完成过后生成一个测试报告,来对我们当前的测试工作进行总结,并做一个思考和改进。

    2.项目的流程是什么?

    首先,我们对需求规格说明书进行了分析,并提取测试需求,然后我们组长编写了测试计划,对本次测试进行工作分配,进而我编写了测试方案,测试方案体现了我们的测试策略,描述了当前测试我们需要用到哪些技术、方法和工具,然后我们使用了划分等价类,边界值,正交试验法,流程分析法,错误推测法等方法设计了测试用例,然后进行评审,且再次对测试用例进行优化,等版本发布后我们交叉执行我们的用例,并在执行的过程中优化用例,发现的bug提交到禅道上面交给开发进行处理,最后等我们这个测试阶段完成过后生成一个测试报告,来对我们当前的测试工作进行总结,并做一个思考和改进。

    3.你们的用例设计流程是什么?

    分析规格需求说明书,提取测试需求,编写测试计划及测试方案,设计测试用例,通过评审再次优化用例。

    4.你们的方案和计划是谁写的,重点是什么?区别是什么?

    测试计划是我们组长写的,我写的测试方案,测试计划是管理型文件,方案是技术型方案,测试计划主要关注:人员、进度、组织、资源、测试范围等。而测试方案主要关注:技术、工具。计划主要介绍做什么的,方案主要是讲怎么测试的。

    5.禅道是什么使用的?

    新建BUG,并指派给PM,由他判断是否是BUG,不是则关闭,是就指派给相应的开发人员。开发人员确认是否是BUG,不是则rejected,是则修改完成后指派给PM,PM指派给相应的测试人员进行测试,通过测试则close缺陷,没通过就rejected给PM再次判断缺陷。

    6.项目人员有多少,怎么分配工作的,测试周期是多久?

    项目有4个人,每人负责2个模块,测试周期为3个月。

    7.测试报告有哪些要点?

    在测试报告中有本次测试中每个成员测试用例数,提交的bug数,对其出现bug的原因进行分析,总结本次的测试结果。对本次测试中表现不好的地方提出改进措施。

    8.你最得意的bug是什么?最难找到的bug是什么?怎么找到的?

    在E—shop系统中,同一个账号在不同的浏览器上登陆成功后能同时在线。做兼容测试的时候忘记在Firefox中忘记退出当前账号,在IE浏览器登陆该账号时并没有给出当前账号已登录的提示,在IE浏览器测试完成后,回到Firefox浏览器中发现当前账号未退出。

    9.XX系统中你测试的模块是什么?怎么测的?

    日报和个人两个模块,我们当时是分析需求规格说明书,提取测试需求,编写测试计划及测试方案,设计测试用例,并对用例进行评审,再次优化用例,版本发布后交叉执行用例,发现的bug提交到禅道交给开发处理,等本阶段测试完成后编写测试报告

    10.如何和开发配合管理缺陷的。

    新建BUG,并指派给PM,由他判断是否是BUG,不是则关闭,是就指派给相应的开发人员。开发人员确认是否是BUG,不是则rejected,是则修改完成后指派给PM,PM指派给相应的测试人员进行测试,通过测试则close缺陷,没通过就rejected再次指派给PM再次判断缺陷。

    任务:

    1. Tinyshop搞上去,或者其他的电商系统。

    操作每个模块的功能

    把核心功能打个草稿设计用例

    准备三个缺陷

    3. UI自动化

    技术知识点:

    UI自动化目的:使用工具或者程序代替人工进行测试,模拟人工难以实现的场景去测试。

    原理:坐标定位:按键精灵。图像匹配:sikuli 特征识别:selenium 、QTP

    适用范围(场景):冒烟测试、回归测试、兼容测试。

    UI自动化工具:sikuli、selenium IDE  RC  WEBDRIVER

    Junit、testng:注解、断言

    数据驱动:实现测试数据和代码的分离,数据的变化会引起代码执行的变化,以数据为基础驱使自动化执行。

    组件化框架:它是用分层的思想实现组件的框架,使代码不受测试类名、方法名的限制更好的实现数据驱动。

    重点难点:

    数据驱动

    组件化框架

    实际应用:

    常见面试题:

    1.自动化测试流程是什么?

    分析:技术和工具的调研

    设计:设计自动化测试的框架

    实现:自动化测试的代码

    执行:搭建自动化运行测试环境、自动化测试的数据、运行测试

    维护:维护自动化测试的用例和脚本

    2.介绍下selenium

    Selenium是一款开源免费的基于特征识别的web自动化测试工具,现在有三个版本,1.0,2.0和3.0 。3.0才出来不久,所有主要还是用前两个版本,Selenium 1.0 包含selenium IDE 、selenium Grid、selenium RC 。Selenium 2.0 版本是在1.0版本上新增了一个selenium Webdriver。selenium RC 是1.0版本的核心,但现在主要用selenium Webdriver,Webdriver和RC相比它的API更加丰富,运行速度更快。

    3. Webdriver常用API

    findElement(查找元素)、sendKeys(输入值)、click(点击)、get(打开网页)、getText(获取文本信息)、clear(清除内容)、by(元素定位)

    4.页面元素定位有哪些?

    By(Id、cssSelector、xpath、linktext、name、classname、tagname),其中有id和name的时候选择id和name,都没有就选xpath

    5. Junit、testng如何结合使用的?

    Junit和testng都是测试的一种框架,这两种框架都是对它的注解和断言进行使用,我们对测试的方法加test注解,在测试方法之前加before注解,测试之后加after注解,在测试的方法中使用asserttrue、assertequals等断言。

    6.什么是数据驱动?怎么设计框架的?结构是怎样的?

    实现测试数据和代码的分离,数据的变化会引起代码执行的变化,以数据为基础驱使自动化执行。框架采用分层的思想,将代码分为工具层(读取Excel文件和解析文件)、动作层(测试中的操作)、测试层(调用动作层,进行断言)、主启动层(启动程序,开始测试)

    7.什么阶段做的UI自动化,覆盖率是多少?

    一般在冒烟测试和回归测试时使用UI自动化,覆盖率为20%~30%

    任务:

    2个小时至少把数据驱动的代码搞清楚,能够写出来。

    4. 协议的接口功能性测试

    技术知识点:

    接口测试的作用:不受前端页面影响,直接对服务器进行彻底的针对测试

    工具:浏览器自带工具,fiddler、httpwatch。

    Java实现的

    创建一个类读取Excel文件,实现发送get、post请求,实现保存cookie和正文的响应类,最后在主启动类中实现解析Excel文件并启动测试。

    重点难点:

    实际应用:

    常见面试题:

    1.接口测试如何开展的?(流程是什么)

    分析:接口(协议)的需求的分析、捕获的工具、接口文档的分析

    设计:测试用例、接口测试的框架

    实现:框架的代码实现、用例实现

    执行:搭建环境、准备数据、执行测试、提交缺陷

    2.你做了哪些接口的测试?

    对E—shop系统的登录,手机商城的选中物品-加入购物车-结算进行了接口测试。

    3.接口测试的意义是什么?

    抛开前端页面的影响,直接对服务器进行彻底的针对性测试

    4.和UI自动化进行对比?

    UI自动化是针对界面的测试,而接口测试是对服务器的测试,其中接口实现的功能不一定在页面能操作。

    5.描述拿到的接口文档。

    接口文档主要由接口名称、描述、URL、调用方式、传入参数、返回值组成

    6.如何使用XX测试工具进行接口测试的?

    使用soapUI工具进行接口测试,创建项目命名,创建测试用例集;.创建一条测试用例,右键add step,选择http request,填写地址、参数、请求类型;添加断言;执行测试。

    任务:

    花1个小时把基于Java的数据驱动的接口自动化理清楚。

    5. 协议的接口性能测试

    技术知识点:

    原理:协议、多线程、真实模拟

    分类:基准、负载、压力、配置、稳定性、容量

    流程:

    分析:性能需求

    设计:性能方案、脚本

    实现:环境、数据、脚本

    执行:执行脚本

    工具:loadrunner、jmeter

    实现脚本

    重点难点:

    实际应用:

    常见面试题:

    1.性能测试的流程?

    分析:性能需求

    设计:性能方案、脚本

    实现:环境、数据、脚本

    执行:执行脚本

    2.压力测试和负载测试的区别是什么?

    压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。

    负载测试:在一定的工作负荷下,给系统造成的负荷及系统响应的时间。

    3. Jmeter你们的脚本是录制就开始执行吗?

    不是,先对脚本进行优化,然后设计场景再进行测试

    4.脚本优化的点有哪些?

    多账户(参数化)、断言(检查点)、操作间隔(思考时间)、集合点、后置处理器(关联)、事务控制器、循环控制器

    5.关注的指标体系是哪些?

    TPS:每秒处理事务数;Rt:响应时间;HPS:每秒处理请求数;服务器资源;线程数

    6.对XX系统的性能测试,最终发现了什么瓶颈吗?得到了什么结论吗?

    Cpu 在多用户同时并发的情况一直处于高负荷运行状态,增加CPU数量后再进行测试。

    7.设计了哪些场景。

    负载测试:每30秒增加20个用户,且在每个用户级下运行5分钟,直至用户数添加完成,并在最大用户数时运行10分钟后每30秒减少20个用户,且在每个用户级下运行5分钟,直到没有用户运行时结束

    压力测试:100个用户同时登录,长时间运行后用户数直接掉0。

    任务:

    回顾Jmeter,看书。

    相关文章

      网友评论

        本文标题:软件测试工程师必掌握的基础要点

        本文链接:https://www.haomeiwen.com/subject/eiffyqtx.html