1.如果元素定位不到,你是怎么分析的?
- 元素没有加载完成
- Frame中
- 元素不可用,不可读,不可见
- 动态属性,动态的div层
前提:需要定位的属性或者元素唯一
2.定位八大方法是哪几个?
id name class_name path css tag_name link_text partall_link_text
3.xpath定位各种方法
4.def setUp(self) -> None: None作用
这是type hint 指示出返回类型 类似于其他语言里的 void xxx()
5.隐式等待
def setUp(self) -> None:
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(10) # 隐式等待
self.driver.get("http://localhost/")
6.单元测试,系统测试,集成测试,验收测试
按测试阶段划分
- 单元测试:一块一块的(比如就测试一个输入框,就是一个单元)
- 集成测试:又叫组装测试,就是在单元测试基础上,将所有模块进行有序递增的测试(输入框写完点击搜索,就是两个功能组装起来,有序递增测试)
- 系统测试:将整个软件系统看成一个整体进行测试,前提是需求分析说明书
- 验收测试:检验是否符合用户要求
7.黑盒测试,白盒测试,灰盒测试
按是否查看源代码
黑盒:不用管内部结构饿内部特性,只关心输入和输出结果
白盒:看里面代码
灰盒:两者都有
8.按是否运行
静态和动态
9.按是否自动化
手工和自动化
10. 软件测试策略
- 冒烟测试:对基本功能测试,保证基本功能和流程走通
- 回归测试:对之前的bug再次验证
- 随机测试:对软件的重要功能进行测试,也包括之前测试的时候没有测到位的地方
- 探索性测试:同时设计测试和执行测试
11.软件测试模型
- 瀑布模型:需求分析-概要设计-详细设计-编码-测试-维护
只需要关注当前阶段。适合大型项目 比如银行,保险。特点文档较多。
- V模型:还是和瀑布模型一样不响应需求特点(只需要关注当前阶段,文档多)
- W模型(双V模型)
开发V:需求分析-概要设计-详细设计编码-集成-实施-交付
测试V:验收测试设计-系统测试设计-集成测试设计-单元测试设计-单元测试-集成测试-系统测试-验收测试
特点:测试伴随软件开发全过程
优点:早参与,早发现,早解决
缺点:技术和管理比较高
12.缺陷的定义
不满足用户的需求,实际结果和预期结果不一致
软件缺陷的核心内容:
13.HLD,LLD,SRS是什么?
HLD:概要设计文档(High level Document)
LLD:详细设计说明书
SRS:需求规格说明书(Software RequirementsSpecification)
14.如何测试微信朋友圈的点赞功能
https://blog.youkuaiyun.com/ETalien_/article/details/90182983?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.not_use_machine_learn_pai
15.请问如果用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个问题
https://blog.youkuaiyun.com/qq_38028975/article/details/102490055
16.[经典面试题]完美洗牌算法
https://developer.aliyun.com/article/3575
17.封装
封装就是加了__ 俩下划线。别的类里面不能访问
18.多态
不同的对象,调用相同的父类方法,产生不同的结果
前提:不同的子类来自同一个父类,子类覆盖父类的方法
class duotai:
def food(self):
print("父亲吃肉")
def eat(self):
self.food()
class cat(duotai):
def eat(self):
print("儿子吃肉")
class dog(duotai):
def eat(self):
print("儿子喝酒")
e = cat()
e.eat()
d = dog()
d.eat()
d.food()
# 儿子吃肉
# 儿子喝酒
# 父亲吃肉
19.接口测试-http协议
接口测试- http协议
20.软件测试的目的
发现程序中的错误,并且为了更好的验证系统的功能和性能是否和需求吻合,测试不能表明软件中没有错误,他只能代表软件中有错误。
21.python @classmethod作用
就像是java里面的static一样,可以通过类名直接调用,相当于一个静态方法。它的作用就是有点像静态类,比静态类不一样的就是它可以传进来一个当前类作为第一个参数。
@classmethod
def get_date(cls,data_as_string):
#这里第一个参数是cls, 表示调用当前的类名
year,month,day=map(int,string_date.split('-'))
date1=cls(year,month,day)
#返回的是一个初始化后的类
return date1
22.普通软件生命周期
问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段