1、测试分类

1.1功能测试(黑盒测试)

开始都是测试他的业务逻辑是否能实现,以及他的功能是否可以正常运行,功能测试就是只考虑接口或者GUI(用户图形界面)功能是否可以实现业务逻辑,这个过程得先看需求文档(PRD),熟悉业务逻辑,知道操作的是哪一张表,改变的是哪一个字段或者记录

1.2结构测试(白盒测试)

结构测试的主要目的是发现软件程序编码过程中的错误。软件程序在运算顺序、逻辑判断以及运行路径上的错误很难发现,在实际的软件程序代码编写上,没有程序员能够保证代码编写结构不出现任何错误,即使是水平很高的程序员也不能保证。所以白盒测试就是传入一些脏数据,去看接口对这些传入的脏数据的处理,是否不影响功能的实现,以及返回给界面的信息是否符合理想,下图很形象的展示了测试的苦逼生活以及如何测试

c 功能测试架构 功能测试和结构测试_c 功能测试架构


工作上大家都做的都是灰盒测试,包括黑盒白盒,共同测试

1.3性能测试

一般是当产品做出来的时候,即将上线会做性能测试,测试产品在高并发的时候,响应的时间,以及数据是否正常等,如果响应过于迟缓,要做sql优化、异步优化、以及各种设计模式优化,一般性能测试会用到的软件是jmeter(需要java的jdk环境才能安装),一般会设置并发数为50、200、1000来做性能测试,主要看错误率以及最长响应时间,上述三种的错误率分别对应5%、10%、20%,最长响应时间分别对应50ms、100ms、200ms

2、如何测试(测试的顺序)

  1. 先做新增测试
  2. 在做逻辑删除测试
  3. 再做查询测试
  4. 然后将逻辑删除变为未删除
  5. 在做查询操作
  6. 在做更新操作
  7. 最后查询操作

不论是接口测试还是页面测试都要根据提示信息传参数,一开始什么都不传,直接访问接口或者点击提交按钮,然后如果返回数据成功或者页面没报错,就要去数据库中查询该接口或者按钮操作的是数据库中的哪一张表,看数据库中的记录是否是跟着业务逻辑发生期望的改变

3、如何生成测试数据

3.1基本数据

如果传参数的类型是字符要考虑:null、""、“字符”、alert(‘ddd’)…
如果传参数的类型是数字要考虑:0、-1、1、“hhh”…
还有很多类型的举例,数组、

3.2随机生成测试数据

测试过过程中,为了更加准确的模拟用户,所以测试数据不能固定,如果手动输入测试用例,又太麻烦,所以可以根据python中fake模块,随机生成自己的测试用例,常见的需要的测试字段我已经写在代码中了

from faker import Faker

# fake = Faker()
fake = Faker("zh_CN")
# fake = Faker("en_US")  # 默认为英文数据
print(dir(fake))  # 自省机制查看类的内部有哪些方法
print(hasattr(fake, 'random_letter'))  # 自省机制,查看fake类是否有某种特定的方法
print(fake.user_agent())  # 生成一个随机请求头
print(fake.name())  # 生成一个随机名字
print(fake.phone_number())  # 生成一个随机电话号码
print(fake.country())  # 生成一个随机国家
print(fake.province())  # 生成一个随机省或者市(上海市)
print(fake.address())  # 生成一个随机的详细地址
print(fake.ssn())  # 生成一个随机的身份证号
print(fake.company())  # 生成一个随机的公司名(长)
print(fake.job())  # 生成一个随机的职位
print(fake.name_female())  # 生成一个随机的女性全名
print(fake.name_male())  # 生成一个随机的男性全名
print(fake.email())  # 生成一个随机的邮箱
print(fake.url())  # 生成一个随机的url
print(fake.random_int(min=1, max=2))  # 生成一个随机的随机数字,默认0~9999,可以通过设置min,max来设置
print(fake.pystr())  # 生成一个随机的字符串
print(fake.paragraph())  # 生成一个随机的段落
print(fake.sentence())  # 生成随机的一句话
print(fake.text())  # 生成随机的一篇文章
print(fake.password(length=8, special_chars=True, digits=True, upper_case=True,
                    lower_case=True))  # 随机生成密码[length密码长度,special_chars是否能使用特殊字符,digits是否包含数字,upper_case,是否包含大写字母,lower_case:是否包含小写字母]
print(fake.past_date())  # 生成随机的一个UUID
print(fake.date())  # 生成随机的时间(1970年1月1日至今)

4、测试心得

必须得会的软件有postman、jmeter,如果想要做自动化测试得学python+selenium(gui自动化测试)、python+webdriver+adb(app自动化测试),测试除了做功能、性能测试外还得考虑页面的美观度、以及功能模块的布局等等

4.1接口自动化测试

根据生成的随机数据使用requests模块访问接口,连接数据库验证数据是否操作成功,学习自动化测试肯定够,但是工作上由于一些存入数据库加密,以及多接口操作同一张表中的字段、造成验证过程麻烦,我目前只能做一些固定字段的接口自动化测试,验证固定字段比较容易实现、不去根据随机传入的参数做校验、接口自动化还望各位大佬多多指点

4.2ui以及app自动化测试

  1. selenium直接做web自动化测试,定位控件完成输入、长按、点击等操作,从而实现自动化点击显示详情
  2. adb+webdriver+python做app自动化测试,也是定位控件完成输入、长按、点击等操作,从而实现自动化点击显示详情