测开实习面试题

最近真是水逆,一家又一家的凉凉。把题记录一下,积攒一点人品。

测试部分

登录界面的测试用例:

功能测试

  1. 输入框的功能:

输入合法的用户名和密码可以成功进入

输入合法的用户名和不正确的密码,不可以进入

输入不合法的用户名和正确的密码,不可以进入

输入不合法的用户名和不正确的密码,不可以进入
其中:不合法的用户名包括:不正确的用户名,使用了特殊字符,空的用户名,字符数量大于用户名的限制,系统的保留字段 不合法的密码包括:空密码,错误的密码,密码长度超过或小于规范,特殊字符,系统保留字段

  1. 记住用户名的功能
  2. 界面的链接:对于界面有链接,比如忘记密码等,要测试界面上的链接都正常给出,并能跳转到相应的链接
  3. 输入框是否支持复制粘贴
  4. 密码框是否隐藏密码
  5. 输入密码时,大写字母开启,是否有提示
  6. 验证码输入错误是否能进入
  7. 验证码是否过于扭曲和难识别,刷新按钮是否好用,刷新之后是否更新一个验证码 验证登录的次数是否有限制

界面测试

  1. 界面是否美观,是否让人感到舒适
  2. 界面中的文字是否简洁,没有错别字
  3. 两个testbox和一个按钮是否对齐,大小宽度是否合适

性能测试

  1. 打开登录界面需要多久
  2. 成功登录跳转到新界面,花费多少时间

安全测试

  1. 用户密码后台存储是否加密

  2. 用户密码在网络传输过程中是否加密

  3. 密码是否具有有效期,密码有效期到期后,是否提示需要修改密码

  4. 不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面

  5. 密码输入框是否不支持复制粘贴

  6. 密码输入框内输入的密码是否都可以在页面源码模式下被查看

  7. 用户名和密码输入框分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面

  8. 用户名和密码输入框分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改

  9. 连续多次登录失败的情况下,系统是否会阻止后续的尝试以应对暴力破解

  10. 同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期

  11. 同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性

  12. 是否可以记住密码,记住的密码保存是否加密,记住的密码是否有有效期,过了有效期后是否清空密码

  13. 是否支持第三方登录

  14. 密码的强弱性,复杂度校验

  15. 异地登录校验、更换设备登录校验、登陆信息异常是否考虑账户冻结停用、是否允许第三方平台存储密码

  16. 是否可以使用登录的api发送登录请求,并绕开验证码校验

  17. 是否可以用抓包工具抓到的请求包直接登录

  18. 截取到的token等信息,是否可以在其他终端上直接使用,绕开登录,token过期时间校验

  19. 登录错误后的提示是否存在安全隐患

原文链接

兼容性测试

  1. 不同的浏览器是否能正常显示,功能正常
  2. 不同的系统下是否能正常工作,如Windows、Mac
  3. 移动设备商是否能正常工作,比如iPhone 11、Android
  4. 不同的语言环境下,是否能正常工作

水杯测试用例编写

在这里插入图片描述

百度页面测试用例

软件生命周期

软件生命周期指的是软件从开始到最终被废弃所经历的各个阶段。在不同的阶段里,有不同的组织人员执行不同的任务,需要消耗不同的资源。
生命周期常见的模型:瀑布型、V模型、W模型
阶段:需求分析—>软件设计—>程序编码—>软件测试—>运行维护

编写测试用例的方法

  1. 等价类划分法
    使用场合:有输入的地方,如:输入框
    测试思想:在大量数据中划分范围(等价类),然后从没法范围内挑选代表数据,这个数据要能反映这个范围内数据的测试结果

  2. 边界值分析法
    使用场合:有输入的地方
    测试思想:边界值是最容易出错的地方

  3. 场景法
    使用场合:业务比较复杂的软件系统,测试人员把杂技当成最终用户,尽可能真实的模拟用户在使用此软件的操作场景
    测试思想:场景法是模拟用户操作软件时的各种情景,主要用于测试软件的业务逻辑和流程。当拿到一个测试任务是,我们并不先关注某个文本框的等价类等是否满足要求,而是先关注它的主要功能和业务流程是否正确实现,这就需要场景法来完成测试。当业务流程测试没有问题,也就是软件的主要功能没有问题时,我们再去关注控件的等价类、边界值等细节测试。(先整体后细节)

发现一个登陆界面密码的bug,怎么描述给开发人员

描述bug步骤:
发现问题的版本
问题出现的环境
错误重现的步骤
预期行为的描述
错误行为的描述
其他,例如故障的种类等
不要将bug放在一起提交

如果你提出一个bug,但开发人员不认为是个bug怎么办

1、先检查自身,是否bug描述不清楚:如果能高质量的录入bug,就沟通了一大半了
2、站在用户角度考虑问题
3、bug定级要有理有据,不仅参考bug级别,还有考虑bug是否会影响到流程等
4、提升自身的技术和业务水平,不光要提出问题,也能给出解决方案

自动化测试能完全代替手工测试么

自动化测试不能代替手工测试,因为并不是所有的功能自动化测试都可以实现,它的效率也不高,而手工测试能通过人为的逻辑判断效验当前的步骤是否正确,同时用例的执行具有一定步骤跳跃性,能够清楚知道逻辑,细致定位问题。
两者的区别是:

1、测试效率不同

完成同等数目的测试,启动自动化速度更快,手工测试则需要消费更多的时间。但是自动化测试的脚本开发比用例开发耗时长,包括编写脚本、调试脚本、维护脚本,而手工测试虽然也要对测试用例进行撰写、评审、修订,由于用例编写更多为自然语言,时间上会少。

2、资源利用率不同

自动化测试在设备、仪表资源能够7*24小时利用,这点上手工测试没有可比性。

3、执行可靠性不同
自动化测试中可靠的按脚本执行,后续定位、复现有明确的配置路径可循,而手工测试往往会因为自己的判断导致测试出错,并且在测出来的问题上有一部分是不能复现的。但是自动化的稳定来源于其死板,而人的智慧体现在思维的跳跃,跳跃的思维也会导致后期不易定位。

4、覆盖率不同

在同等时间内,启动自动化测试能够覆盖更多的功能,而手工测试只能覆盖小部分功能。但是自动化测试适合回归测试,开发中的功能不划算。对于开发中功能,需求或者实现的更改,都会导致自动化脚本的变更,开发中的功能更适合手工测试。

http、IP 、TCP分别在哪一层

  1. http在应用层
  2. IP在网络层
  3. tcp在传输层

代码部分

浅复制和深复制的区别

浅复制仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。
深复制在计算机中开辟了一块新的内存地址用于存放复制的对象。

打印九九乘法表

for i in range(1, 9 + 1):
    for j in range(1, i + 1):
        print("%d*%d=%d" % (j, i, i * j), end="  ")
        # print(f'{j}x{i}={i*j}',end=" ")
    print(" ")

字符串去重

string = "aabbcdeesjnaskss"
StrNew = ""
for char in string:
    if not char in StrNew:
        StrNew += char
    else:
        continue
print(StrNew)

python实现某目录下将多个文件夹内的文件复制到一个文件夹中

import os
import shutil


def CreateDir(path):
    isExits = os.path.exists(path)
    if not isExits:
        os.makedirs(path)
        print("创建目录成功")
    else:
        print("已存在,不用创建")


def CopyFile(filepath, newPath):
    # 获取当前路径下的文件名,返回List
    fileNames = os.listdir(filepath)
    for file in fileNames:
        # 将文件名加入到当前路径后面
        newDir = filepath + '/' + file
        # 如果是文件
        if os.path.isfile(newDir):
            print(newDir)
            newFile = newPath + "/" + file
            shutil.copyfile(newDir, newFile)
        # 如果不是文件
        else:
            CopyFile(newDir, newPath)


if __name__ == "__main__":
    path = input("请输入需要复制的文件夹:")
    newpath = input("请输入目标文件夹:")
    CreateDir(newpath)
    CopyFile(path, newpath)

给定字符串"ssssddddeee",打印"s4d4e3"

String = "ssssddddeee"
NewStr = ""
for char in String:
    if not char in NewStr:
        NewStr += char
        NewStr += str(String.count(char))
    else:
        continue
print(NewStr)

对于数组data,满足|data[i]-data[i+1]|=1,此时从data中索引某个值,返回第一个出现该值的索引位置?比如说:data=[1,2,3,4,3,2,3,4,5,4]这样,索引第一个出现的3所在的位置

"""
先去data[0],看data[0]和目标值(target)的差(delta)的绝对值是多少,然后下一个索引到data[0+delta],再看data[0+delta]和target的差的绝对值(delta)是多少
"""
data = [1, 2, 3, 2, 3, 4, 5, 4]
targe = 5
i = 0
while data[i] != targe:
    delta = abs(data[i] - targe)
    i += delta
print(i)

链表判断有环,并且找出交叉点的位置

集合反转

迭代器,装饰器

内存溢出和内存泄漏的区别

元组能实现的,能用列表实现么

Linux部分

查看内存命令

cat /proc/meminfo
或者
free -m

查看CPU

cat /proc/cpuinfo

防火墙

查看防火墙状态:systemctl status firewalld
关闭防火墙:systemctl stop firewalld.service
开启防火墙:systemctl start firewalld.service

创建文件

vi + 文件名
touch + 文件名

创建文件夹

mkdir + 文件名

查看进程

ps

查看文件前几行或者后几行

head -n 5 fimename # 查看前五行
tail -n 5 filename # 查看后五行
cat filename | tail -n 5 | head -n 10 # 查看5~10行
cat filena # 查看完整文件
head -n 10 /etc/profile >>/home/test # 将内容输出到/home/test文件中

查看IP地址

ifconfig
或者
ip a s

MySQL去重
selsect distinct 字段 from 表名

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值