测试开发岗-高频知识整理【校招】
写在前面
常用自动化测试工具
手机兼容性测试(机型选择)
测试基础理论
https://blog.csdn.net/lim13760114815/article/details/88396681软件测试开发流程:
软件测试方法(★★★★★)
CI/CD理解(★★★★★)
接口文档(★★★)
单元测试(★★★)
如何设计一个好的测试用例:(★★★)
针对某一个产品写测试用例:(★★★★★)
测试水杯(★)
测试一个输入框(计数)(★★)
- 功能性
- 易用性
- 可靠性
- 性能
- 安全
- 兼容性
- “banana”:3(一个合法的英文字)。
- “A” 和“a”:1(一个简单有正常结果的合法输入)。
- “”:0(一个简单的结果为0的合法输入)。
- Null:0(简单的错误输入)。
- “AA” 和“aa”:2(个数大于1并且所有字符都为a/A的输入)。
- “b”:0(一个简单的非空合法输入,结果为0)。
- “aba”:2(目标字符出现在开头和结尾,以寻找循环边界错误)。
- “bab”:1(目标字符出现在中间)。
- space/tabs:N(空白字符与N个a的混合)。
- 不包含a的长字符串:N(N大于0)。
- 包含a的长字符串:N(N是a的倍数,试试龙妈的名字)。
- 质疑界面的外观、调色板和对比度(这与相关应用风格一致么?)
- 文本框太小了,建议加长以便显示更长的输入字符串
- 这个应用能否在同一台服务器上运行多个实例,多个用户同时使用是否会有问题。
- 是否会根据用户的输入自动匹配内容?
- 建议使用真实的数据,如从词典或书中选择输入内容。
- 提出疑问:“输入的数据是否会被保存”,输入字符串可能包含地址或其他身份信息。
- 输入HTML和JavaScrip,看是否会破坏页面渲染。
- 尝试复制/粘贴字符串。
- 提出疑问:“计算足够快么?在大并发下使用”。
- 提出疑问:“用户怎么找到该页面?”
- 提出疑问:“有快捷键的设置么?比如输完字符后敲入回车键而不是点击提交按钮”
- 意识到计算会通过URL-encodedHTTP GET请求传递到服务器,字符串可能会在网络传输时被截断,因此,无法保证支持多长的URL。
- 建议将此功能参数化,为什么只对字母a计算呢?
- 考虑计算其它语言中的a(α,Alpha)。
- 考虑到该应用是否应该国际化。
- 考虑到输入法全角输入和半角输入是否相同。
- 考虑编写脚本或者手工采样来探知字符串长度的上限,然后确保在此区间内功能正常。
- 考虑背后的实现和代码。也许已经有一个计数器遍历该字符串。
- 提出疑问:“HTTP POST方法和参数会被黑掉码?也许有安全漏洞?”
- 用脚本创建各种有趣的排列组合和字符串特性,如长度、a的个数等,自动生成测试输入和验证。
针对“用户登录”设计测试用例(★★★)
微信红包测试用例(★★★★★)
微信朋友圈测试用例(★★★★★)
智力题
- 1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?(被问过)
- 现在有9个球,其中有1个球相对轻一点。你手里只有一个天平,称2次,怎样找出那个轻的球?(被问过)
- 25匹马赛跑,共有5个赛道,最少赛多少次可以找出前三名、前五名?(被问得太多)
- 64匹马赛跑,8个赛道的问题。
- 一个瓶子,有三种颜色糖果,问多少次,能确保拿到两个颜色一致的糖果。
- 70克盐,20克砝码,一个天平,称出5克盐。
- 两个杯子倒水:一个7升,一个3升,如何在一个杯子倒出5升?(被广州一家公司问过,公司名字我记不太清了,当时说了两种方法)
- 两根分布不均匀的蜡烛,每根燃烧的时间是一个小时,问怎样算出15分钟的时间?(秋招时上海美团三面有问,一开始没思路,面试官一直在引导)
测开岗高频算法题:
- 三个数字的最大乘积
- 有两个很长很很长的字符串,但是字符都是数字,实现这俩字符串的加法,输出为一个字符串。如str1="1231213347845713824718237489123748343246217489132", str2="623478573127438912743892017489132748172341324132"
- 两数之和 标签:哈希表 (★★★)
- str1能不能最多交换两次字符变成str2,并设计测试用例。
- 和为s的连续正数序列 标签:暴力、双指针
- 有效括号 标签:栈 (★★★★)
- 数组中重复的数字 标签:哈希表 (★★★★★)
- 7的倍数或者包含7打印"-",其余的打印数字,每行不超过5个数字
- 从1到100000000中取出一个数(自己申明一个变量,比如num = 2333),写代码找出取出的是哪个数。 标签:二分查找
- 一个数在有序数组里出现的次数。标签:二分
- 字符串转整数,并写测试用例。 标签:数学,有很多非数字类型需要考虑,还有数字越界的情况需要考虑,比较考察测试思维 (★★★★★)
- 连续子数组的最大和 标签:分治、DP (★★★★)
- 在字符串中找出没有重复字符的最长的连续子串,并返回子串及长度,譬如“aaabcdcbcbbb" 最长子串为abcd,长度为4
- 判断链表是否有环 标签:双指针
- 两个栈实现一个队列 (★★)
- 最长不含重复字符的子字符串 标签:双指针、滑动窗口 (★★★★★)
数据库:
- 数据库:三张表food(id,name), materials(id, price), xxx(food_id, materials_id, quality) 给food_id,求成本
- 数据库:表中有学生,课程,分数,求平均分最高的学生
- 给定成绩表中的id、name、subject、score、stu_id,计算每个人的总成绩并排名(要求显示字段:姓名,总成绩)
- mysql语句统计表中男女生人数
- SQL多表联结
- 数据库:查找平均分>60分的学生姓名 -- 采用嵌套查询
- left join , right join, inner join的区别
- SQL语句:三张表学生表,成绩表,课程表查询学生A的语文成绩
- Sql--查询每门课程都大于60分的学生姓名
- MYSQL对学生成绩列表进行分组求和并对成绩从高到低排序
- sql语句查询课程1的成绩比课程2 的成绩高的学号
- 联表查询 学生表(学生id,姓名,性别,分数)student(s_id,name,sex,score),班级表(班级id,班级名称)class(c_id,c_name),学生班级表(班级id,学生id)student_class(c_id,s_id) ,(1)查询一班得分在80分以上的学生 (2)查询所有班级的名称,和所有班中女生人数和女生的平均分
Linux知识点(★★★★)
绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
答案:
绝对路径: 如/etc/init.d
当前目录和上层目录: ./ ../
主目录: ~/
切换目录: cd
问题二:(★★★★★)
怎么查看当前进程?怎么执行退出?怎么查看当前路径?
答案:
查看当前进程: ps
执行退出: exit
查看当前路径: pwd
问题三:
怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
答案:
清屏: clear
退出当前命令: ctrl+c 彻底退出
执行睡眠 : ctrl+z 挂起当前进程fg 恢复后台
查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名
查看指定帮助: 如 man adduser 这个很全 而且有例子; adduser --help 这个告诉你一些常用参数; info adduesr;
问题四:(★★★★★)
Ls 命令执行什么功能? 可以带哪些参数,有什么区别?
答案:
ls 执行的功能: 列出指定目录中的目录,以及文件
哪些参数以及区别: a 所有文件l 详细信息,包括大小字节数,可读可写可执行的权限等
问题五:
建立软链接(快捷方式),以及硬链接的命令。
答案:
软链接: ln -s slink source
硬链接: ln link source
问题六:(★★★★)
目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
答案:
创建目录: mkdir
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件
复制文件: cp 7. 文件权限修改用什么命令?格式是怎么样的?
文件权限修改: chmod
格式如下:
chmodu+xfile给file的属主增加执行权限chmodu+xfile给file的属主增加执行权限 chmod 751 file 给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmodu=rwx,g=rx,o=xfile上例的另一种形式chmodu=rwx,g=rx,o=xfile上例的另一种形式 chmod =r file 为所有用户分配读权限
chmod444file同上例chmod444file同上例 chmod a-wx,a+r file同上例
$ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属主分配读的权限
问题八:(★★★★★)
查看文件内容有哪些命令可以使用?
答案:
vi 文件名 #编辑方式查看,可修改
cat 文件名 #显示全部文件内容
more 文件名 #分页显示文件内容
less 文件名 #与 more 相似,更好的是可以往前翻页
tail 文件名 #仅查看尾部,还可以指定行数
head 文件名 #仅查看头部,还可以指定行数
问题九:
随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
答案:
写文件命令:vi
向屏幕输出带空格的字符串:echo hello world
问题十:
终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
答案:
终端 /dev/tty
黑洞文件 /dev/null
问题十一:(★★★★)
移动文件用哪个命令?改名用哪个命令?
答案:
mv mv
问题十二:(★★★★)
复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?
答案:
cp cp -r ????
问题十三:(★★★★)
删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?
答案:
rm rm -r rmdir
问题十四:
Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
答案:
“?”可替代单个字符。
“*”可替代任意多个字符。
方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]
问题十五:(★★★★★)
用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
答案:
wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。
问题十六:(★★★★★)
Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
答案:
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
grep [stringSTRING] filename grep [^string] filename
问题十七:(★★★★★)
Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
答案:
(1)、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。
(2)、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。
“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
(3)、就绪状态:在 run_queue 队列里的状态
(4)、运行状态:在 run_queue 队列里的状态
(5)、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起
(6)、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉
(7)、退出状态
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核 2.6 开始无效)
X 死掉的进程
问题十八:
怎么使一个命令在后台运行?
答案:
一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)
问题十九:(★★★★★)
利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
答案:
ps -ef (system v 输出)
ps -aux bsd 格式输出
ps -ef | grep pid
问题二十:
哪个命令专门用来查看后台任务?
答案:
job -l
问题二十一:
把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
答案:
把后台任务调到前台执行 fg
把停下的后台任务在后台执行起来 bg
问题二十二:(★★★)
终止进程用什么命令? 带什么参数?
答案:
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
kill-9 pid
问题二十三:
怎么查看系统支持的所有信号?
答案:
kill -l
问题二十四:
搜索文件用什么命令? 格式是怎么样的?
答案:
find <指定目录> <指定条件> <指定动作>
whereis 加参数与文件名
locate 只加文件名
find 直接搜索磁盘,较慢。
find / -name "string*"
问题二十五:
查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
答案:
查找自己所在的终端信息:who am i
查看当前谁在使用该主机:who
问题二十六:
使用什么命令查看用过的命令列表?
答案:
history # 查看历史命令 保留1000个历史命令,超出会将最老的删除
!951 # 可以根据查得命名编号直接在其前个感叹号执行这个编号对应的命令
问题二十七:(★★★★★)
使用什么命令查看磁盘使用空间? 空闲空间呢?
答案:
df -hl
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot
问题二十八:(★★★★★)
使用什么命令查看网络是否连通?
答案:
netstat
问题二十九:(★★★★★)
使用什么命令查看 ip 地址及接口信息?
答案:
ifconfig
问题三十:
查看各类环境变量用什么命令?
答案:
查看所有 env
查看某个,如 home: env $HOME
问题三十一:
通过什么命令指定命令提示符?
答案:
\u:显示当前用户账号
\h:显示当前主机名
\W:只显示当前路径最后一个目录
\w:显示当前绝对路径(当前用户目录会以~代替)
$PWD:显示当前全路径
$:显示命令行’$'或者’#'符号
#:下达的第几个命令
\d:代表日期,格式为week day month date,例如:"MonAug1"
\t:显示时间为24小时格式,如:HH:MM:SS
\T:显示时间为12小时格式
\A:显示时间为24小时格式:HH:MM
\v:BASH的版本信息 如export PS1=’[\u@\h\w#]$‘
问题三十二:
查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
答案:
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文件。
-b 只查找二进制文件。
-B<目录> 只在设置的目录下查找二进制文件。 -f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M<目录> 只在设置的目录下查找说明文件。 -s 只查找原始代码文件。
-S<目录> 只在设置的目录下查找原始代码文件。 -u 查找不包含指定类型的文件。
which 指令会在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n 参数相同,但此处的包括了文件的路径。 -w 指定输出时栏位的宽度。
-V 显示版本信息
问题三十三:
通过什么命令查找执行命令?
答案:
which 只能查可执行文件
whereis 只能查二进制文件、说明文档,源文件等
问题三十四:
怎么对命令进行取别名?
答案:
alias la='ls -a'
问题三十五:
du 和 df 的定义,以及区别?
答案:
du 显示目录或文件的大小
df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。
(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配图并考虑 Meta Data。
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
问题三十六:(★★★★★)
awk 详解。
答案:
awk '{pattern + action}' {filenames}
#cat /etc/passwd |awk -F ':' '{print 1"\t"1"\t"7}' //-F 的意思是以':'分隔 root /bin/bash
daemon /bin/sh 搜索/etc/passwd 有 root 关键字的所有行
#awk -F: '/root/' /etc/passwd root❌0:0:root:/root:/bin/bash
问题三十七:
当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
答案:
可以使用bind命令,bind可以很方便地在shell中实现宏或按键的绑定。
在进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。
比如获取F12的字符序列获取方法如下:先按下Ctrl+V,然后按下F12 .我们就可以得到F12的字符序列 ^[[24~。
接着使用bind进行绑定。
[root@localhost ~]# bind ‘”\e[24~":"date"'
注意:相同的按键在不同的终端或终端模拟器下可能会产生不同的字符序列。
【附】也可以使用showkey -a命令查看按键对应的字符序列。
问题三十八:
如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?
答案:
使用命令compgen -c,可以打印出所有支持的命令列表。
[root@localhost ~]$ compgen -c
l.
ll
ls
which
if
then
else
elif
fi
case
esac
for
select
while
until
do
done
…
问题三十九:
如果你的助手想要打印出当前的目录栈,你会建议他怎么做?
答案:
使用Linux 命令dirs可以将当前的目录栈打印出来。
[root@localhost ~]# dirs
/usr/share/X11
【附】:目录栈通过pushd popd 来操作。
问题四十:
你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
答案:
使用linux命令 ’disown -r ’可以将所有正在运行的进程移除。
问题四十一:
bash shell 中的hash 命令有什么作用?
答案:
linux命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。
[root@localhost ~]# hash
hits command
2 /bin/ls
2 /bin/su
问题四十二:
哪一个bash内置命令能够进行数***算。
答案:
bash shell 的内置命令let 可以进行整型数的数***算。
#! /bin/bash
…
…
let c=a+b
…
…
问题四十三:(★★★★★)
怎样一页一页地查看一个大文件的内容呢?
答案:
通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个需要.
[root@localhost ~]# cat file_name.txt | more
问题四十四:
数据字典属于哪一个用户的?
答案:
数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动创建的
问题四十五:
怎样查看一个linux命令的概要与用法?假设你在/bin目录中偶然看到一个你从没见过的的命令,怎样才能知道它的作用和用法呢?
答案:
使用命令whatis 可以先出显示出这个命令的用法简要,比如,你可以使用whatis zcat 去查看‘zcat’的介绍以及使用简要。
[root@localhost ~]# whatis zcat
zcat [gzip] – compress or expand files
问题四十六:
使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?
答案: