Python测试开发进阶路线,零基础入门到精通,收藏这篇就够了

2022年度“功能测试转测试开发容易吗?”最新版测试开发学习路线,从基础到项目实战, “软件测试,功能测试转测试开发容易吗?” 一、从这个问题,我能读出一些信息如下: 1、不知道您从事测试工作多久了,可以看出您特别羡慕测试开发工程师; 2、 您可能一直从事功能测试工作,工作模式或大环境下,被中了草,想学习测试开发相关的知识; 3、疫情下,机械单一的工作(功能测试工作),被替代性强,有些担心,想增加核心竞争力,拿到更好的薪资! 阅读详情

Python测试开发进阶路线

1. 掌握Python基础知识

数据类型

  • 整数类型:123, -456, 0

  • 浮点数类型:3.14, 1.23e-5

  • 字符串类型:'hello', "world", '''多行字符串'''

  • 列表类型:[1, 2, 3], ['a', 'b', 'c']

  • 元组类型:(1, 2, 3), ('a', 'b', 'c')

  • 字典类型:{'name': 'Tom', 'age': 18}

  • 集合类型:{'apple', 'banana', 'orange'}

控制流语句

  • if语句
if 条件:
    # 条件成立执行的代码
else:
    # 条件不成立执行的代码

  • for循环
for 变量 in 可迭代对象:
    # 循环体中执行的代码

  • while循环
while 条件:
    # 循环体中执行的代码

  • break语句
while 条件:
    if 满足条件:
        break

  • continue语句
for 变量 in 可迭代对象:
    if 满足条件:
        continue
    # 循环体中执行的代码

函数和模块

  • 函数

    def add(a, b):
        return a + b
    
    result = add(1, 2)
    print(result)  # 输出3
    
    
  • 模块

    # 创建一个名为my_module.py的文件
    def greeting(name):
        print("Hello, " + name)
    
    # 在另一个文件中使用模块
    import my_module
    
    my_module.greeting("Alice")  # 输出Hello, Alice
    
    

面向对象编程- 面向对象编程

  1. 创建类和对象

    class Dog:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def sit(self):
            print(f"{self.name} is now sitting.")
    
    my_dog = Dog('Willie', 6)
    print(f"My dog's name is {my_dog.name}.")
    print(f"My dog is {my_dog.age} years old.")
    my_dog.sit()
    
    
  2. 继承和多态

    class Animal:
        def __init__(self, name):
            self.name = name
    
        def make_sound(self):
            pass
    
    class Dog(Animal):
        def make_sound(self):
            return "woof"
    
    class Cat(Animal):
        def make_sound(self):
            return "meow"
    
    def animal_sound(animal):
        print(animal.make_sound())
    
    dog = Dog("Rufus")
    cat = Cat("Mittens")
    
    animal_sound(dog)
    animal_sound(cat)
    
    
  3. 封装和属性

    class Person:
        def __init__(self, name, age):
            self._name = name
            self._age = age
    
        def get_name(self):
            return self._name
    
        def set_name(self, name):
            self._name = name
    
        def get_age(self):
            return self._age
    
        def set_age(self, age):
            self._age = age
    
    person = Person("Bob", 25)
    print(person.get_name())
    person.set_name("Robert")
    print(person.get_name())
    print(person.get_age())
    person.set_age(30)
    print(person.get_age())
    
    
  4. 魔术方法

    class Vector:
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
        def __add__(self, other):
            return Vector(self.x + other.x, self.y + other.y)
    
        def __sub__(self, other):
            return Vector(self.x - other.x, self.y - other.y)
    
        def __mul__(self, other):
            return Vector(self.x * other.x, self.y * other.y)
    
        def __str__(self):
            return f"({self.x}, {self.y})"
    
    v1 = Vector(1, 2)
    v2 = Vector(3, 4)
    
    print(v1 + v2)
    print(v1 - v2)
    print(v1 * v2)
    
    

2. 掌握自动化测试框架

熟悉unittest框架

  • 使用unittest编写一个简单的测试用例:

    import unittest
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # check that s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(2)
    
    if __name__ == '__main__':
        unittest.main()
    
    
  • 使用unittest的setUp和tearDown方法:

    import unittest
    
    class SomeTest(unittest.TestCase):
    
        def setUp(self):
            # 在每个测试方法之前执行
            pass
    
        def tearDown(self):
            # 在每个测试方法之后执行
            pass
    
        def test_first(self):
            # 测试用例
            pass
    
        def test_second(self):
            # 测试用例
            pass
    
    if __name__ == '__main__':
        unittest.main()
    
    
  • 使用unittest的TestSuite组织测试用例:

    import unittest
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # check that s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(2)
    
    class TestMyStuff(unittest.TestCase):
    
        def test_stuff(self):
            # 测试用例
            pass
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()
        suite.addTest(TestStringMethods())
        suite.addTest(TestMyStuff())
        unittest.TextTestRunner().run(suite)
    
    
  • 使用unittest的mock模块进行单元测试:

    from unittest.mock import MagicMock
    
    class ProductionClass:
        def method(self):
            self.something(1, 2, 3)
    
        def something(self, a, b, c):
            pass
    
    def test_method():
        real = ProductionClass()
        real.something = MagicMock()
        real.method()
        real.something.assert_called_once_with(1, 2, 3)
    
    
  • 使用unittest的HTMLTestRunner生成测试报告:

    import unittest
    import HTMLTestRunner
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # check that s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(2)
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()
        suite.addTest(TestStringMethods())
        with open('report.html', 'w') as f:
            runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='Test Report', description='This is a test report')
            runner.run(suite)
    
    

掌握pytest框架

  • 学习pytest框架的基本概念和使用方法

  • 掌握pytest的fixture机制,实现测试用例的前置和后置处理

  • 熟悉pytest的参数化测试功能,提高测试用例的复用性和可维护性

  • 学习pytest的插件机制,扩展pytest的功能和定制化测试流程

  • 使用pytest-html插件生成测试报告,方便测试结果的查看和分析

  • 使用pytest-xdist插件实现测试用例的并发执行,提高测试效率

熟悉Robot Framework- 熟悉Robot Framework

  • 使用Robot Framework编写一个简单的测试用例

  • 使用Robot Framework编写一个包含关键字、变量、循环等高级特性的测试用例

  • 使用Robot Framework集成Selenium进行Web自动化测试

  • 使用Robot Framework集成Appium进行移动端自动化测试

  • 使用Robot Framework集成接口测试工具进行接口自动化测试

  • 使用Robot Framework集成数据库进行数据验证测试

  • 使用Robot Framework集成Jenkins进行持续集成测试

3. 掌握Web自动化测试

熟悉Selenium WebDriver

  • 使用Selenium WebDriver进行简单的页面操作,如打开网页、输入文本、点击按钮等

  • 使用Selenium WebDriver进行元素定位,如通过id、name、class name、tag name、link text、partial link text和xpath等方式定位元素

  • 使用Selenium WebDriver进行常见的页面操作,如下拉框、弹窗、多窗口等操作

  • 使用Selenium WebDriver进行常见的断言,如判断元素是否存在、元素文本是否正确、元素属性是否正确等

  • 使用Selenium WebDriver进行常见的等待,如显示等待、隐式等待等

  • 使用Selenium WebDriver进行简单的测试用例编写和执行

  • 使用Selenium WebDriver进行数据驱动测试,如使用Excel或CSV文件进行测试数据的读取和使用

  • 使用Selenium WebDriver进行测试报告的生成和展示

  • 使用Selenium WebDriver进行多浏览器测试,如Chrome、Firefox、IE、Edge等

  • 使用Selenium WebDriver进行分布式测试,如使用Selenium Grid进行多机器并发测试

  • 使用Selenium WebDriver进行框架搭建,如Page Object模式的实现

  • 使用Selenium WebDriver进行自动化测试的最佳实践和常见问题解决方案

  • 使用Selenium WebDriver进行性能测试,如使用Selenium WebDriver结合JMeter进行负载测试

  • 使用Selenium WebDriver进行安全测试,如使用Selenium WebDriver进行常见的Web安全测试,如XSS、CSRF、SQL注入等

  • 使用Selenium WebDriver进行移动端自动化测试,如使用Appium进行Android和iOS自动化测试

  • 使用Selenium WebDriver进行桌面端自动化测试,如使用WinAppDriver进行Windows桌面应用自动化测试

  • 表格:Selenium WebDriver常见API及用法

掌握Page Object模式

  • Page Object模式实例:

    页面类名
    登录页LoginPage
    首页HomePage
    购物车页CartPage
    class LoginPage:
        def __init__(self, driver):
            self.driver = driver
            self.username_input = driver.find_element_by_id("username")
            self.password_input = driver.find_element_by_id("password")
            self.login_button = driver.find_element_by_id("login-button")
            
        def login(self, username, password):
            self.username_input.send_keys(username)
            self.password_input.send_keys(password)
            self.login_button.click()
            
    class HomePage:
        def __init__(self, driver):
            self.driver = driver
            self.username_label = driver.find_element_by_id("username-label")
            self.logout_button = driver.find_element_by_id("logout-button")
            
        def get_username(self):
            return self.username_label.text
            
        def logout(self):
            self.logout_button.click()
            
    class CartPage:
        def __init__(self, driver):
            self.driver = driver
            self.cart_items = driver.find_elements_by_class_name("cart-item")
            
        def get_cart_items(self):
            return [item.text for item in self.cart_items]
    
    

熟悉Web自动化测试框架,如:Pytest-HTML、HTMLTestRunner- 熟悉Pytest-HTML框架

熟悉HTMLTestRunner框架

4. 掌握接口自动化测试

熟悉HTTP协议

  • 熟悉HTTP请求方法,如GET、POST、PUT、DELETE等

  • 熟悉HTTP请求头和响应头的常见字段,如Content-Type、Authorization等

  • 熟悉HTTP状态码的含义,如200、404、500等

  • 熟悉HTTP常见安全机制,如SSL、TLS等

  • 掌握使用Python编写HTTP请求和解析HTTP响应的方法

  • 掌握使用Python编写接口自动化测试用例和测试报告的方法

  • 掌握使用Python编写接口自动化测试框架的方法(如unittest、pytest、requests等)

掌握Requests库

  • 使用Requests库发送GET请求并获取响应内容:
import requests

response = requests.get('http://example.com')
print(response.text)

  • 使用Requests库发送POST请求并获取响应内容:
import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://example.com', data=data)
print(response.text)

  • 使用Requests库发送带Headers的请求并获取响应内容:
import requests

headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('http://example.com', headers=headers)
print(response.text)

  • 使用Requests库发送带Cookies的请求并获取响应内容:
import requests

cookies = {'session_id': '123456'}
response = requests.get('http://example.com', cookies=cookies)
print(response.text)

  • 使用Requests库发送带文件的请求并获取响应内容:
import requests

files = {'file': open('example.txt', 'rb')}
response = requests.post('http://example.com', files=files)
print(response.text)

  • 使用Requests库发送带SSL证书的请求并获取响应内容:
import requests

response = requests.get('https://example.com', verify='example.crt')
print(response.text)

  • 使用Requests库发送带代理的请求并获取响应内容:
import requests

proxies = {'http': 'http://example-proxy.com', 'https': 'http://example-proxy.com'}
response = requests.get('http://example.com', proxies=proxies)
print(response.text)

熟悉接口自动化测试框架,如:HttpRunner、unittest- 熟悉HttpRunner框架,能够编写简单的接口自动化测试用例:

import requests
from httprunner import HttpRunner, Config, Step, RunRequest

class TestHttpbin(HttpRunner):
    config = Config("httpbin接口测试")

    teststeps = [
        Step(
            RunRequest("get请求", "get", "https://httpbin.org/get", 
                        headers={"User-Agent": "HttpRunner"},
                        response_json={"headers": {"User-Agent": "HttpRunner"}})
        ),
        Step(
            RunRequest("post请求", "post", "https://httpbin.org/post", 
                        headers={"User-Agent": "HttpRunner"},
                        data={"key": "value"},
                        response_json={"headers": {"User-Agent": "HttpRunner"}, "form": {"key": "value"}})
        )
    ]

  • 熟悉unittest框架,能够编写简单的接口自动化测试用例:```
    import unittest
    import requests

    class TestHttpbin(unittest.TestCase):
    def test_get(self):
    response = requests.get(“https://httpbin.org/get”, headers={“User-Agent”: “unittest”})
    self.assertEqual(response.status_code, 200)
    self.assertEqual(response.json()[“headers”][“User-Agent”], “unittest”)

    def test_post(self):
        response = requests.post("https://httpbin.org/post", headers={"User-Agent": "unittest"}, data={"key": "value"})
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()["headers"]["User-Agent"], "unittest")
        self.assertEqual(response.json()["form"]["key"], "value")
    
    
    
    

5. 掌握性能测试

熟悉性能测试原理

  • 熟悉性能测试的基本概念和原理

  • 掌握性能测试的常用工具和框架,例如JMeter、LoadRunner、Python性能测试框架等

  • 能够编写性能测试脚本并进行性能测试

  • 能够分析性能测试结果并提出优化建议

  • 了解性能测试的常见误区和注意事项

  • 实践:使用JMeter进行接口性能测试,并分析测试结果。

掌握Locust框架

  • 使用Locust框架编写性能测试脚本

  • 配置Locust文件,定义用户行为、任务流程、负载等

  • 运行Locust测试,查看测试结果

  • 分析测试结果,优化系统性能

熟悉Jmeter工具- 使用Jmeter工具进行基本的性能测试,例如模拟多用户并发访问

  • 使用Jmeter进行分布式性能测试,例如模拟多个服务器同时接受请求

  • 使用Jmeter进行负载测试,例如模拟高并发情况下服务器的响应能力

  • 使用Jmeter进行压力测试,例如模拟服务器长时间高负荷运行的情况

  • 使用Jmeter进行断言测试,例如验证接口返回数据是否符合预期

  • 使用Jmeter进行参数化测试,例如通过CSV文件传递参数进行测试

  • 使用Jmeter进行监控测试,例如对服务器资源进行监控并生成报告

  • 使用Jmeter进行API测试,例如对RESTful API进行测试

  • 使用Jmeter进行WebSocket测试,例如对WebSocket协议进行测试

  • 使用Jmeter进行FTP测试,例如对FTP协议进行测试

  • 使用Jmeter进行SMTP测试,例如对SMTP协议进行测试

  • 使用Jmeter进行数据库测试,例如对数据库进行读写性能测试

  • 使用Jmeter进行分布式测试,例如多个Jmeter节点协同进行测试

  • 使用Jmeter进行性能测试数据分析,例如对测试结果进行统计和分析

  • 使用Jmeter进行性能测试报告生成,例如生成HTML格式的测试报告

  • 使用Jmeter进行性能测试脚本编写,例如编写Jmeter脚本实现指定的性能测试场景。

6. 掌握持续集成与持续交付

熟悉Jenkins

  • 熟悉Jenkins的安装和配置

  • 熟悉Jenkins的插件安装和使用

  • 熟悉Jenkins的任务配置和构建流程

  • 能够使用Jenkins进行持续集成和持续交付的实践

  • 熟悉Jenkins的常见问题排查和解决方法

掌握Git版本控制工具

  • 掌握Git版本控制工具

    • 熟悉Git基本操作,包括commit、push、pull、merge等

    • 掌握Git分支管理,包括创建、合并、删除分支等操作

    • 熟悉Git工作流程,包括Fork、Pull Request等

    • 熟悉Git代码Review流程,包括代码Review工具的使用和Review标准的制定

    • 了解Git的高级用法,包括rebase、cherry-pick等

    • 了解Git的原理和内部机制,包括Git对象、Git索引、Git引用等

    • 掌握Git的使用场景,包括个人开发、团队协作、开源项目等

    • 了解Git的扩展和工具,包括Git LFS、Git Submodule、GitLab等。

熟悉Docker容器技术- 熟悉Docker容器技术

  • 能够使用Dockerfile构建镜像并运行容器

  • 能够使用Docker Compose编排容器

  • 能够使用Docker Hub或私有仓库管理镜像

  • 能够在持续集成和持续交付中应用Docker技术,实现快速部署和回滚。

7. 掌握测试数据管理

熟悉数据库基础知识

  • 掌握SQL语句的基本语法

  • 熟悉关系型数据库的基本概念

  • 掌握使用Python操作数据库的方法

  • 熟悉数据库的增删改查等操作

  • 掌握使用ORM框架进行数据库操作

  • 熟悉数据库事务的概念和使用方法

  • 了解数据库的性能优化方法

  • 掌握使用Mock库进行数据库测试

  • 熟悉使用表格存储测试数据的方法

掌握SQL语言

  • 熟悉SQL语言基础语法,能够编写基本的SQL查询语句。

  • 掌握SQL语言的高级应用,如联合查询、子查询、分组查询、排序等。

  • 熟悉SQL语言的数据操作语句,如插入、删除、更新等。

  • 熟悉SQL语言的数据约束语句,如主键、外键、唯一性约束等。

  • 掌握SQL语言的事务处理,能够编写事务处理代码。

  • 熟悉SQL语言的视图、存储过程、触发器等高级应用。

  • 熟悉SQL语言在测试数据管理中的应用,能够编写复杂的测试数据查询、更新、删除等SQL语句。

熟悉数据生成工具,如:Faker、Mock- 熟悉Faker数据生成工具,可以使用Faker生成各种类型的随机数据,如姓名、地址、电话号码、电子邮件等。

from faker import Faker

fake = Faker()
print(fake.name())  # 随机生成一个姓名
print(fake.address())  # 随机生成一个地址
print(fake.phone_number())  # 随机生成一个电话号码
print(fake.email())  # 随机生成一个电子邮件

  • 熟悉Mock数据生成工具,可以使用Mock生成各种类型的虚拟数据,如数字、字符串、日期等。

    from unittest.mock import Mock
    
    mock = Mock()
    mock.return_value = 100  # 设置Mock对象的返回值为100
    print(mock())  # 输出100
    mock.return_value = 'hello'
    print(mock())  # 输出'hello'
    mock.return_value = datetime.datetime(2022, 1, 1)
    print(mock())  # 输出2022-01-01 00:00:00
    
    
  • 掌握使用测试数据管理工具,如DataFactory等,可以更加方便地管理和生成测试数据。可以使用DataFactory定义数据模板,然后生成符合模板的测试数据。

    from datafactory import DataFactory
    
    # 定义数据模板
    data_template = {
        'name': 'string',
        'age': 'integer',
        'email': 'email',
        'address': {
            'city': 'string',
            'street': 'string',
            'zipcode': 'string'
        }
    }
    
    # 生成测试数据
    data = DataFactory.generate(data_template)
    print(data)
    
    

    输出结果:

    {
        'name': 'Zoey',
        'age': 28,
        'email': 'zoey@example.com',
        'address': {
            'city': 'New York',
            'street': 'Main Street',
            'zipcode': '10001'
        }
    }
    
    

8. 掌握测试报告与日志

熟悉测试报告生成工具,如:Pytest-HTML、HTMLTestRunner

  • 熟悉Pytest-HTML测试报告生成工具,能够使用Pytest-HTML生成测试报告,并且能够对测试报告进行定制化配置。

  • 熟悉HTMLTestRunner测试报告生成工具,能够使用HTMLTestRunner生成测试报告,并且能够对测试报告进行定制化配置。

掌握日志记录与分析

  • 掌握日志记录与分析:

    • 使用Python logging模块记录日志

    • 配置日志输出格式和级别

    • 使用ELK等工具对日志进行分析和可视化展示

    • 使用pytest-html等工具生成测试报告并进行定制化配置

熟悉ELK日志分析工具- 熟悉ELK日志分析工具

  • 学习ELK日志分析工具的基本概念和使用方法

  • 使用ELK日志分析工具分析测试过程中产生的日志,查找问题和异常

  • 根据ELK日志分析结果,生成测试报告并且提出改进建议

9. 掌握安全测试

熟悉安全测试基础知识

  • 掌握常见的安全漏洞类型,如SQL注入、XSS攻击、CSRF攻击等

  • 了解OWASP Top 10安全漏洞清单

  • 熟悉Web安全测试工具的使用,如Burp Suite、OWASP ZAP等

  • 掌握安全测试的流程和方法,如黑盒测试、白盒测试、灰盒测试等

  • 熟悉安全测试报告的编写和分析,了解如何提供有效的修复建议

  • 了解常见的安全防护措施,如验证码、加密传输、安全认证等

  • 掌握安全测试在CI/CD流程中的应用,如如何在自动化测试中集成安全测试

  • 了解移动应用安全测试的基础知识,如安全沙箱、反编译等

  • 掌握常见的移动应用安全漏洞类型,如数据泄露、权限绕过、代码注入等

  • 熟悉移动应用安全测试工具的使用,如MobSF、AndroBugs等

掌握OWASP测试工具

  • OWASP ZAP:使用ZAP进行Web应用程序漏洞扫描和安全测试。

  • OWASP Dependency-Check:使用Dependency-Check扫描应用程序依赖项中的已知漏洞。

  • OWASP WebScarab:使用WebScarab进行Web应用程序安全测试和漏洞扫描。

  • OWASP SQLMap:使用SQLMap进行SQL注入漏洞扫描和测试。

  • OWASP DirBuster:使用DirBuster进行Web应用程序目录和文件扫描。

  • OWASP Mantra:基于Firefox的安全测试平台,提供多种安全测试工具和插件。

  • OWASP Broken Web Applications:一套专门为安全测试而设计的漏洞应用程序,用于练习和测试安全测试技能。

熟悉Web安全测试框架,如:WebGoat、DVWA- 熟悉WebGoat安全测试框架,能够使用该框架进行常见的Web安全测试,如SQL注入、XSS等。

  • 熟悉DVWA安全测试框架,能够使用该框架进行常见的Web安全测试,如文件上传、文件包含等。

10. 掌握移动端自动化测试

熟悉Appium框架

  • 安装Appium框架

  • 配置Appium环境

  • 学习Appium API

  • 编写Appium测试用例

  • 实现Appium自动化测试报告

  • 使用Appium实现UI自动化测试

  • 使用Appium实现性能测试

  • 使用Appium实现安全测试

  • 使用Appium实现兼容性测试

  • 使用Appium实现压力测试

  • 使用Appium实现数据驱动测试

  • 使用Appium实现测试数据管理

  • 使用Appium实现测试用例管理

  • 使用Appium实现测试结果管理

  • 使用Appium实现测试过程管理

  • 使用Appium实现测试自动化集成

  • 使用Appium实现持续集成和持续交付

  • 使用Appium实现测试自动化运维

  • 使用Appium实现测试自动化监控

  • 使用Appium实现测试自动化优化

  • 使用Appium实现测试自动化开发

掌握移动端自动化测试原理

  • 掌握移动端自动化测试原理:

    • 移动端自动化测试的基本原理

    • 移动端自动化测试框架的选择和使用

    • 移动端自动化测试工具的使用和配置

    • 移动端自动化测试用例的设计和执行

    • 移动端自动化测试结果的分析和报告

熟悉移动端自动化测试工具,如:MonkeyRunner、UI Automator- 熟悉MonkeyRunner工具的使用

MonkeyRunner是Android自带的一款测试工具,可以用来进行Android应用程序的自动化测试。它可以在设备或模拟器上运行Python脚本,模拟用户操作,比如点击、滑动、输入等,从而进行自动化测试。

  • 熟悉UI Automator工具的使用

    UI Automator是Google提供的一款用于Android应用自动化测试的工具,它可以模拟用户的操作,比如点击、滑动、输入等,从而对应用进行自动化测试。UI Automator可以跨应用、跨进程进行测试,可以获取应用的界面元素,比如TextView、Button等,还可以获取应用的截图。

这两年,IT行业面临经济周期波动与AI产业结构调整的双重压力,确实有很多运维与网络工程师因企业缩编或技术迭代而暂时失业。

很多人都在提运维网工失业后就只能去跑滴滴送外卖了,但我想分享的是,对于运维人员来说,即便失业以后仍然有很多副业可以尝试。

网工/运维/测试副业方向

运维网工,千万不要再错过这些副业机会!

第一个是知识付费类副业:输出经验打造个人IP

在线教育平台讲师

操作路径:在慕课网、极客时间等平台开设《CCNA实战》《Linux运维从入门到精通》等课程,或与培训机构合作录制专题课。
收益模式:课程销售分成、企业内训。

技术博客与公众号运营

操作路径:撰写网络协议解析、故障排查案例、设备评测等深度文章,通过公众号广告、付费专栏及企业合作变现。
收益关键:每周更新2-3篇原创,结合SEO优化与社群运营。

第二个是技术类副业:深耕专业领域变现

企业网络设备配置与优化服务

操作路径:为中小型企业提供路由器、交换机、防火墙等设备的配置调试、性能优化及故障排查服务。可通过本地IT服务公司合作或自建线上接单平台获客。
收益模式:按项目收费或签订年度维护合同。

远程IT基础设施代维

操作路径:通过承接服务器监控、日志分析、备份恢复等远程代维任务。适合熟悉Zabbix、ELK等技术栈的工程师。
收益模式:按工时计费或包月服务。

网络安全顾问与渗透测试

操作路径:利用OWASP Top 10漏洞分析、Nmap/BurpSuite等工具,为企业提供漏洞扫描、渗透测试及安全加固方案。需考取CISP等认证提升资质。
收益模式:单次渗透测试报告收费;长期安全顾问年费。

比如不久前跟我一起聊天的一个粉丝,他自己之前是大四实习的时候做的运维,发现运维7*24小时待命受不了,就准备转网安,学了差不多2个月,然后开始挖漏洞,光是补天的漏洞奖励也有个四五千,他说自己每个月的房租和饭钱就够了。

为什么我会推荐你网安是运维和网工测试人员的绝佳副业&转型方向?

1.你的经验是巨大优势: 你比任何人都懂系统、网络和架构。漏洞挖掘、内网渗透、应急响应,这些核心安全能力本质上是“攻击视角下的运维”。你的运维背景不是从零开始,而是降维打击。

2.越老越吃香,规避年龄危机: 安全行业极度依赖经验。你的排查思路、风险意识和对复杂系统的理解能力,会随着项目积累而愈发珍贵,真正做到“姜还是老的辣”。

3.职业选择极其灵活: 你可以加入企业成为安全专家,可以兼职“挖洞“获取丰厚奖金,甚至可以成为自由顾问。这种多样性为你提供了前所未有的抗风险能力。

4.市场需求爆发,前景广阔: 在国家级政策的推动下,从一线城市到二三线地区,安全人才缺口正在急剧扩大。现在布局,正是抢占未来先机的黄金时刻。

网工运维测试转行学习网络安全路线

在这里插入图片描述

(一)第一阶段:网络安全筑基

1. 阶段目标

你已经有运维经验了,所以操作系统、网络协议这些你不是零基础。但要学安全,得重新过一遍——只不过这次我们是带着“安全视角”去学。

2. 学习内容

**操作系统强化:**你需要重点学习 Windows、Linux 操作系统安全配置,对比运维工作中常规配置与安全配置的差异,深化系统安全认知(比如说日志审计配置,为应急响应日志分析打基础)。

**网络协议深化:**结合过往网络协议应用经验,聚焦 TCP/IP 协议簇中的安全漏洞及防护机制,如 ARP 欺骗、TCP 三次握手漏洞等(为 SRC 漏扫中协议层漏洞识别铺垫)。

**Web 与数据库基础:**补充 Web 架构、HTTP 协议及 MySQL、SQL Server 等数据库安全相关知识,了解 Web 应用与数据库在网安中的作用。

**编程语言入门:**学习 Python 基础语法,掌握简单脚本编写,为后续 SRC 漏扫自动化脚本开发及应急响应工具使用打基础。

**工具实战:**集中训练抓包工具(Wireshark)、渗透测试工具(Nmap)、漏洞扫描工具(Nessus 基础版)的使用,结合模拟场景练习工具应用(掌握基础扫描逻辑,为 SRC 漏扫工具进阶做准备)。

(二)第二阶段:漏洞挖掘与 SRC 漏扫实战

1. 阶段目标

这阶段是真正开始“动手”了。信息收集、漏洞分析、工具联动,一样不能少。

熟练运用漏洞挖掘及 SRC 漏扫工具,具备独立挖掘常见漏洞及 SRC 平台漏扫实战能力,尝试通过 SRC 挖洞搞钱,不管是低危漏洞还是高危漏洞,先挖到一个。

2. 学习内容

信息收集实战:结合运维中对网络拓扑、设备信息的了解,强化基本信息收集、网络空间搜索引擎(Shodan、ZoomEye)、域名及端口信息收集技巧,针对企业级网络场景开展信息收集练习(为 SRC 漏扫目标筛选提供支撑)。

漏洞原理与分析:深入学习 SQL 注入、CSRF、文件上传等常见漏洞的原理、危害及利用方法,结合运维工作中遇到的类似问题进行关联分析(明确 SRC 漏扫重点漏洞类型)。

工具进阶与 SRC 漏扫应用:

  • 系统学习 SQLMap、BurpSuite、AWVS 等工具的高级功能,开展工具联用实战训练;

  • 专项学习 SRC 漏扫流程:包括 SRC 平台规则解读(如漏洞提交规范、奖励机制)、漏扫目标范围界定、漏扫策略制定(全量扫描 vs 定向扫描)、漏扫结果验证与复现;

  • 实战训练:使用 AWVS+BurpSuite 组合开展 SRC 平台目标漏扫,练习 “扫描 - 验证 - 漏洞报告撰写 - 平台提交” 全流程。
    SRC 实战演练:选择合适的 SRC 平台(如补天、CNVD)进行漏洞挖掘与漏扫实战,积累实战经验,尝试获取挖洞收益。

恭喜你,如果学到这里,你基本可以下班搞搞副业创收了,并且具备渗透测试工程师必备的「渗透技巧」、「溯源能力」,让你在黑客盛行的年代别背锅,工作实现升职加薪的同时也能开创副业创收!

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:全网最全的网络安全资料包需要保存下方图片,微信扫码即可前往获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

(三)第三阶段:渗透测试技能学习

1. 阶段目标

全面掌握渗透测试理论与实战技能,能够独立完成渗透测试项目,编写规范的渗透测试报告,具备渗透测试工程师岗位能力,为护网红蓝对抗及应急响应提供技术支撑。

2. 学习内容

渗透测试核心理论:系统学习渗透测试流程、方法论及法律法规知识,明确渗透测试边界与规范(与红蓝对抗攻击边界要求一致)。

实战技能训练:开展漏洞扫描、漏洞利用、电商系统渗透测试、内网渗透、权限提升(Windows、Linux)、代码审计等实战训练,结合运维中熟悉的系统环境设计测试场景(强化红蓝对抗攻击端技术能力)。

工具开发实践:基于 Python 编程基础,学习渗透测试工具开发技巧,开发简单的自动化测试脚本(可拓展用于 SRC 漏扫自动化及应急响应辅助工具)。

报告编写指导:学习渗透测试报告的结构与编写规范,完成多个不同场景的渗透测试报告撰写练习(与 SRC 漏洞报告、应急响应报告撰写逻辑互通)。

(四)第四阶段:企业级安全攻防(含红蓝对抗)、应急响应

1. 阶段目标

掌握企业级安全攻防、护网红蓝对抗及应急响应核心技能,考取网安行业相关证书。

2. 学习内容

护网红蓝对抗专项:

  • 红蓝对抗基础:学习护网行动背景、红蓝对抗规则(攻击范围、禁止行为)、红蓝双方角色职责(红队:模拟攻击;蓝队:防御检测与应急处置);

  • 红队实战技能:强化内网渗透、横向移动、权限维持、免杀攻击等高级技巧,模拟护网中常见攻击场景;

  • 蓝队实战技能:学习安全设备(防火墙、IDS/IPS、WAF)联动防御配置、安全监控平台(SOC)使用、攻击行为研判与溯源方法;

  • 模拟护网演练:参与团队式红蓝对抗演练,完整体验 “攻击 - 检测 - 防御 - 处置” 全流程。
    应急响应专项:

  • 应急响应流程:学习应急响应 6 步流程(准备 - 检测 - 遏制 - 根除 - 恢复 - 总结),掌握各环节核心任务;

  • 实战技能:开展操作系统入侵响应(如病毒木马清除、异常进程终止)、数据泄露应急处置、漏洞应急修补等实战训练;

  • 工具应用:学习应急响应工具(如 Autoruns、Process Monitor、病毒分析工具)的使用,提升处置效率;

  • 案例复盘:分析真实网络安全事件应急响应案例(如勒索病毒事件),总结处置经验。
    其他企业级攻防技能:学习社工与钓鱼、CTF 夺旗赛解析等内容,结合运维中企业安全防护需求深化理解。

证书备考:针对网安行业相关证书考试内容(含红蓝对抗、应急响应考点)进行专项复习,参加模拟考试,查漏补缺。

运维网工测试转行网络攻防知识库分享

网络安全这行,不是会几个工具就能搞定的。你得有体系,懂原理,能实战。尤其是从运维转过来的,别浪费你原来的经验——你比纯新人强多了。

但也要沉得住气,别学了两天Web安全就觉得自己是黑客了。内网、域渗透、代码审计、应急响应,要学的还多着呢。

如果你真的想转,按这个路子一步步走,没问题。如果你只是好奇,我劝你再想想——这行要持续学习,挺累的,但也是真有意思。

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1、网络安全意识
在这里插入图片描述

2、Linux操作系统
在这里插入图片描述

3、WEB架构基础与HTTP协议
图片

4、Web渗透测试
在这里插入图片描述

5、渗透测试案例分享
图片

6、渗透测试实战技巧
图片

7、攻防对战实战
图片

8、CTF之MISC实战讲解
图片

关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2023最全软件测试学习路线图(从入门到精通) 第五阶段:Python开发技术学习,自动化测试,那就势不可挡的需要开发语言,我们更偏向于推荐使用python语言,所以在有了开发语言的技能之后,Web自动化测试也将不再是难事。对于想入行学软件测试的新手来说,首先就需要一个高效的学习线路图,还要有全套的学习资料,两者结合才能有最好的学习效果。第三阶段:WEB栈测试技术,了解了web前端的本质,再进行web前端测试就更得心应手了。第七阶段:自动化测试技术,主要学习接口自动化测试技术和性能测试技术。第六阶段:WEB栈自动化测试技术,主要学习自动化测试框架搭建。 阅读详情

相关推荐

python测试开发课程_小蜗分享:Python测试开发全套学习路线

该楼层疑似违规已被系统折叠隐藏此楼查看此楼第一阶段:专业基础课程阶段目标:1. 熟练掌握IT核心技术:编程,数据库,操作系统,版本控制2. 能够熟练运用所学技术搭建各类服务器环境3. 深入理解软件研发过程各种疑难杂症及处理手段4. 掌握Python编程技术并熟练运用Python进行程序设计知识点:1、Web页面元素,布局,CSS样式,盒模型,JavaScript程序设计,函数,基础算法,正则表达...

weixin_28848739的博客 894

测试开发学习路线(非常详细)零基础入门到精通,收藏这篇就够了

大家好,我是洋子,一名测试开发工程师在测试行业,我们一般都听说过这3种岗位:测试工程师(功能测试),自动化测试工程师,测试开发工程师。目前在互联网大厂,基本都只招测试开发工程师,意味着做软件测试也需要具备代码能力对于测试开发这种近几年才在国内火起来的岗位,在市场上基本没有可供参考的学习路线,很多非计算机科班的同学想转行做软件测试拿高薪,却不知道怎么学习于是我花了快一个月的时间,整理出了测试开发的学习路线,供大家学习参考。

leah126的博客 4818

从Palantir到AI时代:Forward Deployed Engineer模式的深度解析

《从Palantir到AI时代:FDE模式的创新与挑战》摘要:Palantir开创的前置部署工程师(FDE)模式正在成为AI创业公司的标配。该模式通过现场工程师深入了解客户需求,填补产品与实际应用间的鸿沟,颠覆了传统SaaS规模化路径。核心优势在于将定制化服务转化为产品发现机制,特别适合高度异质化的AI市场。成功关键在于平衡定制与标准化,通过合同价值增长、产品杠杆效应等独特指标衡量成效。FDE人才需要兼具领域洞察力与快速原型能力。这一模式表明,在AI等新兴领域,深入客户现场可能比单纯追求技术突破更能创造商业

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 4541

【测试】测试开发学习路线,助你通关大厂

前言 大家好,我是洋子,一名测试开发工程师 在测试行业,我们一般都听说过这3种岗位:测试工程师(功能测试),自动化测试工程师,测试开发工程师。目前在互联网大厂,基本都只招测试开发工程师,意味着做软件测试也需要具备代码能力 对于测试开发这种近几年才在国内火起来的岗位,在市场上基本没有可供参考的学习路线,很多非计算机科班的同学想转行做软件测试拿高薪,却不知道怎么学习 于是我花了快一个月的时间,整理出了测试开发的学习路线,供大家学习参考。本学习路线是结合我自己在百度做测试开发基础上整理出来的,详细列举出测试开发需

欢迎关注【微信公众号】测试开发Guide,从功能测试进阶测试开发 2万+

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析

本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。

weixin_42629815的博客 325

FPGA 高速接口Aurora8B/10B 协议详解与仿真

Aurora 8B/10B 是一种用于高速串行通信的协议,通常用于 FPGA 设计和其他数字通信应用。即一种编码方案,旨在在传输数据时提供可靠性、时钟恢复和错误检测。主要用于在点对点串行链路间移动数据的可扩展轻量级链路层协议,为板对板、芯片对芯片以及一些单向链接提供低成本低资源的解决方案。信号源信号描述ref_clk时钟源GT的外部时钟INIT CLK时钟源全局复位,低电平有效DRP CLK时钟源DRP时钟,动态重配置时钟时钟源用户传输的数据钟及逻辑时钟域。

toonyhe的博客 3999

什么是测试开发工程师?零基础入门到精通,收藏这篇就够了

测试开发工程师 (Software Development Engineer in Test,简称SDET)是指那些既可以称作是开发人员,同时也负责软件开发阶段和测试周期的测试工作的技术人员。一个专业的SDET更关注软件产品的可测性,稳健性和性能。他们还可以在生产软件的设计初期发挥推波助澜或审阅的作用。由于这种混合性质,如今无论是中小企业还是大企业,都有很大的需求。基于这种特殊的角色,让我们来看下具体体现因此,测试软件开发工程师的作用是非常可观的,以及具有挑战性,因为它力求以最大可能的质量交付软件。

Javachichi的博客 1771

生成式引擎优化(GEO)的概念与技术路径

生成式引擎优化(GEO)是针对生成式AI引擎的新型优化策略,旨在提升内容在AI搜索与问答平台中的可见性和可信度。与传统SEO相比,GEO更注重语义理解、知识图谱和多模态生成等技术,通过优化内容的结构化和平台适配性,使品牌信息在生成式AI中更易被采纳和呈现。其核心技术包括语义理解、向量数据库和实时反馈优化等,应用于品牌传播、智能客服和个性化推荐等领域。随着AI技术发展,GEO将向智能化、自动化方向演进,成为内容优化的重要工具。

Baixue5209的博客 1047

13年老鸟整理,测试开发要学什么?测试开发学习路线,一篇概全...

1、测试开发具备的能力测开工程师所开发的工具或者平台,一般都是为了提升业务测试的效率,具体工作场景如下:用Jmeter 这样的压测工具做性能测试还是比较麻烦的,我们可以考虑做性能压测平台,进行一键压测,供测试内部使用非常方便构造测试数据非常麻烦,编写了构造数据脚本,但是还是不太通用,所以可以开发Mock造数据平台,进行配置化构造数据。

分享测试知识 9392

基于simulink的预测电流控制策略的三相逆变器仿真

本文详细介绍了在Simulink中实现基于预测电流控制策略的三相逆变器仿真方法。主要内容包括:准备工作(安装必要软件及工具箱)、构建三相逆变器基础模型、设计预测电流控制器(包含状态空间建模和控制器设计)、实现控制逻辑、添加示波器观察输出、配置仿真参数以及运行仿真分析结果。通过MATLAB代码示例和Simulink模块说明,展示了如何选择最优开关状态来最小化电流误差。该仿真方法为研究快速响应、高精度的逆变器控制提供了实用工具,但需注意实际应用中可能需要的调试工作。

amy_mhd的博客 276

uniapp - 超详细 H5 网页引入百度地图教程,附地图示例 / 获取当前设备定位的省市区、详细地址、经纬度信息 / 用户当前 IP 属地定位地理位置等等(新手小白快速上手,详细配置及使用全流程)

uniapp百度地图,uniapp百度地图ip属地定位,uniapp百度地图获取省市区详细地址经纬度等,uniapp百度地图当前用户设备定位省份市区详细所在地ip属地等详细教程示例,uniapp网页h5引入百度地图详细教程,uniapp h5网站使用百度地图详细教程,uniappH5端如何接入使用百度地图api,uniapp H5网页端百度地图获取地理位置信息,uniapp h5页面引入百度地图,uniapp h5平台百度地图获取城市信息,uniapp百度地图获取经纬度,uniapp 百度地图拿省市区用什么

🏆 前端领域优质创作者 6217

测试开发学习路线

一篇文章了解测试开发

iboyang的博客 2万+

YOLOv11【第三章:高阶应用与落地篇·第7节】多任务联合训练(Multi-Task Learning):检测+分割+关键点三头并进!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 730

Python测试开发的进阶学习路线

欢迎来到本篇文章,我们将为您介绍Python测试开发的进阶学习路线。随着越来越多的开发工作转向Python语言,掌握Python的测试技能已经成为每个开发人员必备的技能之一。这篇文章将帮助您了解Python测试的深入知识,并提供相应的示例来帮助您更好地理解。

kk_lzvvkpj的博客 1317

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python测试开发进阶路线

Python测试开发进阶路线 1. 掌握Python基础知识

伤心的辣条 745

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最强测试开发学习路线:从入门到精通

本文发布新版学习路线,旨在为软件测试从业者提供一个结构化、可操作的指南,帮助大家从基础到高级,逐步构建核心竞争力。无论您是初学者还是经验丰富的测试工程师,这条路都将助您在新形势下脱颖而出。

2501_94261392的博客 1085

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

2024年最新软件测试学习路线图(从入门到精通)

六维全息课程注重综合能力培养,从入学到职后一站式服务测试开发人才。2024年最新软件测试学习路线图,从入门到精通一应俱全。9阶段专业课+11大专项测试项目 适应互联网企业测试开发需求。对于想入行学软件测试的新手来说,首先就需要一个高效的学习线路图,还要有全套的学习资料,两者结合才能有最好的学习效果。今天小千就把史上最详细的软件测试学习路径和最全的学习资料包全部奉上,按照这个路线学习,大神指日可待!第一阶段:基础课程,软件测试环境配置管理,新手小白也能快速入门。

百晓生说测试的博客 9681

python测试开发自学教程-测试开发学习路线图

Python PEP8 编码规范中文版 https://www.cnblogs.com/bymo/p/9567140.html选择等宽编程字体:https://blog.youkuaiyun.com/hsc456/article/details/52125735 默认字体 Menlo、Consolas、Courier New一、路线图测试开发的成长学习路线:http://www.sohu.com/a...

weixin_37988176的博客 924

【测试】最火的测试开发学习路线内容再次大更新,助力通关大厂测开

大家好,我是洋子。今年的秋招就快到啦,很多小伙伴已经开始准备秋招,洋子牺牲了自己周末的休息时间,给大家送一波福利2022年2月份,我在B站更新了一套关于测试开发的学习路线,整合了B站大部分优质学习资源,目前综合排名已经冲到了B站第一(甚至超越了96.2w 播放量的培训机构教学视频),已经有1.5w的小伙伴们观看过我出的学习路线 这期间我也收到了很多小伙伴的私信,以及评论区的留言,咨询我关于学习路线相关的问题,几个比较有代表性的问题(1)有的同学问,学完学习路线上的内容要花多少时间 (2)内容太多了,学不完

欢迎关注【微信公众号】测试开发Guide,从功能测试进阶测试开发 2626
上一篇: 19 用户体验测试/专项测试,零基础入门到精通,收藏这篇就够了
下一篇: 呕心沥血总结的Python自动化测试面试题,零基础入门到精通,收藏这篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值