软件测试如何实现月薪2万?

news2024/11/24 15:18:17

其实我一直在强调,钱的多少和技能是息息相关的,所以你要赚更多钱,就得付出更多努力,去不断提升自己的技能和见识。

因为最近在群里有一些同学,之前没做过自动化测试,但是限于领导要求,或者自己想提升了,开始研究自动化测试,最近记忆比较深的低级的几个问题是:

1、编写一个python的类将 __init__写成_init_苦于问题一直解决不了;

2、想新建一个包,经常将package建成folder;

3、appium脚本中启动的activity或者包名经常写不出来;

4、将包名命名为selenium导致无法引入对应相应库。

5、写个selenium脚本执行不成功抛出异常,跑来问,这个怎么又报错了?异常类型都提示NoSuchElementException。

这确实很初级的问题,其实最核心的而是缺乏编程能力、缺乏问题分析能力、缺乏解决问题能力。

一、提升编程能力:

学习python或者java都可以

编程能力是一切的基础,所以基础先打坚固,对于python或者java的学习,可以看我自动化专栏里边的文章,也可以看我的论坛,里边有比较清楚的分类。

二、熟悉分层自动化测试思想:

自动化是分为三个层面的(UI层自动化、接口自动化、单元测试),不是每个层面的自动化都是遥不可及的,以下标示一下这三个层面的难易程度(也叫这个为自动化金字塔):

三个层面的自动化测试

基本上可以肯定的是,单元测试是成本最低的,也是最容易推广,见效最大的,但是很多公司不会投入这块,原因是因为现在大部分公司都是人才短缺,特别是成熟的研发人员。你说投入到项目实际开发工作的人员都嫌不够,怎么可能抽出相关人力去做单元测试。而以目前大部分公司的测试团队人员构成来说,能做单元测试的基本没有(有也被抽去做开发了),这也是大家一致认为单元测试属于开发职责的原因(除了他们自己没人能做了)。

  单元测试如果做不了,那么接口(API或Service)自动化测试能做不?这个只要有一定的技术基础还是能做的,至少有一部分测试人员是能够做接口测试的(话说性能测试就属于一种接口自动化),如果能自主开发或直接引进一套像样的接口自动化工具或框架(工具上来说,市面上也不少),那么就可以开展这部分的工作,我相信大部分公司能做好的自动化测试,应该也是基于这一层的(所以我们建议有条件的话,自动化测试可以先在这一层面展开,当然前提是真有那么多接口或服务需要测试)。接口自动化测试框架应该具有以下功能,根据复杂度和各自需求而定:

1、校验

  这个很好了解,如果没有校验,单纯的执行接口的话,那就谈不上测试了。所以支持对返回值校验是一个必须的功能。

2、数据隔离

  数据隔离就是指具体的请求接口、参数、校验等数据做到与代码相隔离,便于维护,一旦需要调整接口用例、新增接口用例时可很快速的找到位置,隔离的另一个好处就是可复用,框架可以推广给其他团队,使用者可以使用相同的代码,只需要根据要求填写各自用例即可测试起来。

3、数据传递

  做到数据隔离可维护后,数据传递是另外一个更重要的需求。

  数据传递是指接口用例之间可以做到向下传参,例如我们通过创建订单接口创建一个订单,该接口会返回一个订单号,接下来我们要进行调用查询订单的接口,从返回的数据中与创建订单用例中的数据进行校验,此时第二个接口的请求数据是需要从第一个接口用例中的返回中提取的。这样的例子比比皆是,所以支持数据传递是又一个必不可少的功能。

4、动态函数

  实际用例场景中我们可能会有随机生成一个手机号、字符串加密等需求,在数据与代码隔离之后,此时我们就需要代码可以支持做到识别对应关键字时可以执行对应的函数进行填充。例如在数据中填写nowTime()时,具体执行时会被替换成当前时间,填写random(5)时,会被替换成一个五位的随机数等等。

 5、可配置

  有时,我们的需求是用例不单单只能在一个环境上执行,可能需要同一份接口用例可以在QA、预发、线上等多个环境都可以执行。所以框架需要做到可配置,便于切换,调用不同的配置文件可以在不同的环境执行。

 6、日志

  日志包含执行的具体执行接口、请求方式、请求参数、返回值、校验接口、请求时间、耗时等关键信息,日志的好处一来是可以便于在新增用例有问题时快速定位出哪里填写有问题,二来是发现bug时方便向开发反馈提供数据,开发可以从触发时间以及参数等信息快速定位到问题所在。

  7、可视化报告

  用例执行后,就是到了向团队展示结果的时候了,一个可视化的报告可以便于团队成员了解到每次自动化接口用例执行的成功数、失败数等数据。

8、用例驱动

(1)用例的驱动模式,涉及到怎么存放测试数据,怎么描述用例,又如何复用;

  (2)考虑到效率的话还要支持并发;

  (3)当然测试报告不能光记录成功和失败,还有用例执行耗时、接口调用耗时、场景的通过率等各项数值的统计。

  说完单元测试、接口测试的自动化,我们现在来说说UI层自动化测试,这也是一直很火并且也是自动化概念先入为主的一块,毕竟市面上有不少成熟的自动化工具,如QTP、Selenium等。这块自动化一定是会有测试团队参与的,就算自动化框架是由开发来完成,那么具体测试工作也是由Tester全程参与的。UI层自动化测试真的不容易推行,无论有多么完善的自动化框架,在这一块维护的成本也是非常高的,特别是懂开发的人不懂测试,懂测试的人不懂开发,这一矛盾现象所带来的内部消耗就不少,再加上项目需求和UI层都在频繁变动,而且Web UI技术越来越复杂和多元化(UI层自动化需要基于对象识别技术),这些都导致很多公司不愿意投入这一块。即使这样,做为一个有上进心的测试人员,我们也是需要多想想这一块,毕竟这是离我们测试最近的一块“技术沃土”了(之一)。

  现在我们来重点来谈下Web UI自动化测试(目前的系统大都通过Web UI来展示),一般成熟一点的自动化工具方案大体是这样:

1.开发语言:Python或Java;

2.开源测试框架:Selenium WebDriver;

3.Web元素定位:Xpath + cssSelector + findElement或findElements方法;

  具体实施细节来讲重点是针对Web UI自动化测试的特点,将各层包装,分而治之的思想,各自相互独立,职责定义清楚,下面简要说明下:

  1、测试用例业务流操作实现及测试数据分离管理;

  2、页面元素定位及页面元素的操作分离;

  3、可视化的日志查询系统;

  4、跨浏览器支持如:IE,Firefox,Chrome;

  5、可视化的的测试报告,可以具体查询到日志/截图等;

  6、实现了通过Excel的数据驱动管理;

  7、邮件发送管理,可以自定义具体时间及接受者等;

  以上是一般Web UI自动化测试的一些实践要求,当然也是相对简易的,复杂的就是实现平台化管理,每天测试工程师,只需要选择具体项目、所测的测试用例集,然后执行,输出测试报告,邮件自动发送到相关开发/测试,框架的开发维护上也能够持续集成。

那么对于每一层一般都有那些技术方案呢?

UI层:

1、python+selenium+unittest、python+appium+unittest;

2、java+selenium+testng、java+appium+testng;

接口层:

python+requests;java+httpclient或者restassured

底层:

玩静态代码扫描吧,java方向有findbugs、pmd、checkstyle、fireline、godeyes、infer

oc方向oclint、infer

web方向:csslint、jslint等

这些过程似乎不是那么快速高效,但是效果会很好,如想快速入门,报培训班是不错的选择,但还得靠自己多花时间,多学习,多总结。

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

 全套资料获取方式:点击下方小卡片自行领取即可

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/776781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剑指offer21.调整数组顺序使得奇数位于偶数前面 57.和为s的两个数字 58.反转单词顺序

暴力二次遍历&#xff08;时间复杂度空间复杂度都是n&#xff09; class Solution { public:vector<int> exchange(vector<int>& nums) {vector<int> result(nums.size());int left0;for(int i0;i<nums.size();i){if(nums[i]%21) result[left]nums[i…

深拷贝浅拷贝有什么区别?怎么实现深拷贝?

目录 一、浅拷贝二、深拷贝三、两者区别&#xff1f; 一、浅拷贝 浅拷贝&#xff0c;指的是创建新的数据&#xff0c;这个数据有着原始数据属性值的一份精确拷贝。 如果属性是基本类型&#xff0c;拷贝的就是基本类型的值。如果属性是引用类型&#xff0c;拷贝的就是内存地址 …

理解Vuex

Vuex是什么 专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue插件&#xff0c;对Vue应用中多个组件的共享状态进行集中式的管理&#xff08;读/写&#xff09;&#xff0c;也是一种组件间通信的方式&#xff0c;且适用于任意组件间通信 Vuex Github地址 …

走向具身智能丨美格高算力AI模组 以端侧智慧连接人和家庭

“贾维斯&#xff0c;我需要你的帮助。”这是钢铁侠Tony Stark在电影中向他的人工智能助手Jarvis寻求支持的场景。《钢铁侠》中的贾维斯不仅令观众着迷&#xff0c;也点燃了人们对于智能助手的想象力。正如电影《她》中所描绘的那样&#xff0c;智能助手还可以与人类建立真实的…

dolphinscheduler伪分布式安装

1、上传安装包 2、安装 #解压 重命名 [rootdatacollection conf]# cd /opt/modules/ [rootdatacollection modules]# tar -zxf apache-dolphinscheduler-2.0.6-bin.tar.gz -C /opt/installs/ [rootdatacollection modules]# cd ../installs/ [rootdatacollection installs]# m…

这8种算法——程序员必会

一个程序员一生中可能会邂逅各种各样的算法&#xff0c;但总有那么几种&#xff0c;是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓&#xff01;”算法吧~ 算法一&#xff1a;快速排序法 快速排序法是对冒泡排序的一种改进&#xff0c…

Jmeter测试脚本编写详解(配详图)

一、简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资源&#xff0c;例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数…

ORACLE数据库scott没有相关权限

1. 首先登陆具有DBA权限的用户 1.1 打开cmd 1.2 输入以下命令 sqlplus / as sysdab上述命令中的 / as sysdba 表示使用操作系统认证登录&#xff0c;同时指定DBA权限 1.3 回车执行命令&#xff0c;系统或将提示输入密码&#xff08;没有则直接跳过&#xff09; 1.4 密码正…

AndroidStudio-实现登录界面(数据存储在SQLite)

要求&#xff1a;每种错误信息采用Toast进行提示 &#xff08;1&#xff09;未注册的用户不能进行登录&#xff1b; &#xff08;2&#xff09;用户名和密码不能为空&#xff1b; &#xff08;3&#xff09;用户名不能重复&#xff1b; 一、创建新工程 点击next 修改名字 &…

JQuery 实现点击按钮添加及删除 input 框

前言 用于记录开发中常用到的&#xff0c;快捷开发 需求新增功能 比如说&#xff0c;我台设备可以设置一个或多个秘钥&#xff0c;有时候我配置一个秘钥时&#xff0c;就不需要多个输入框&#xff0c;当我想配置多个秘钥时&#xff0c;就需要添加多个输入框。 实现 HTML …

Adobe打印机另存pdf出错生成log文件,打印失败

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 用adobe打印机转pdf出错生成log文件,打印失败&#xff0c;log文件内容如下&#xff1a; %%[ ProductName: Distiller ]%% FZXBSJW--GB1-0 not found, using Courier. %%[ Error: typecheck; Offendi…

Mac安装MySQL详细教程

1、MySQL安装包下载 还没下载的话请前往官网下载 我们可以看到这里有两个不同架构的dmg的安装包&#xff0c;如果不知道自己电脑是ARM还是X86的话可以打开终端输入&#xff1a;uname -a 或者 uname -a | awk -F " " {print $(NF-1)} 来查看如下图&#xff1a; 这里显…

v-cloak和v-once和v-pre指令

v-cloak指令&#xff08;没有值&#xff09;&#xff1a; 1.本质是一个特殊属性&#xff0c;Vue实例创建完毕并接管容器后&#xff0c;会删掉v-cloak属性。 2.使用css配合v-cloak可以解决网速慢时页面展示出{{xxx}}的问题 v-once: v-once指令&#xff1a; 1.v-once所在节点在初…

基于linux下的高并发服务器开发(第一章)- Linux开发环境搭建

​​​​​​基于linux下的高并发服务器开发&#xff08;第一章&#xff09;-Linux环境开发搭建1.1_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/131681333?spm1001.2014.3001.5501 解决Ubuntu 虚拟机没…

高数笔记01:函数、极限、连续

图源&#xff1a;文心一言 本文是我学习高等数学第一章的一些笔记和心得&#xff0c;主要介绍了函数、极限、连续这三个基本概念&#xff0c;以及它们的性质和很基础的计算技巧。希望可以与考研路上的小伙伴一起努力上岸~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料…

Python自动化测试之cookie绕过登录(保持登录状态)

前言 在编写接口自动化测试用例或其他脚本的过程中&#xff0c;经常会遇到需要绕过用户名/密码或验证码登录&#xff0c;去请求接口的情况&#xff0c;一是因为有时验证码会比较复杂&#xff0c;比如有些图形验证码&#xff0c;难以通过接口的方式去处理&#xff1b;再者&…

系统学习Halcon视觉软件指南

要系统学习Halcon视觉软件&#xff0c;您可以按照以下步骤进行&#xff1a; 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 学习基本概念&#xff1a;了解Halcon的基本概念和术语&#xff0c;例如图像处理、特征提取、图像匹配等。可以查阅Halcon的官方…

Web开发的富文本编辑器CKEditor介绍,Django有库ckeditor_uploader对它进行支持,django-ckeditor安装方法及使用注意事项

当需要在网页应用程序中提供富文本编辑功能时&#xff0c;CKEditor是一个流行的选择。CKEditor是一个开源的JavaScript富文本编辑器&#xff0c;它提供了强大的功能和用户友好的界面&#xff0c;使用户可以轻松创建和编辑格式化的文本内容。 以下是CKEditor的一些主要特性&…

MySQL进阶:函数

​ 在MySQL中&#xff0c;为了提高代码重用性和隐藏实现细节&#xff0c;MySQL提供了很多函数。函数可以理解为别人封装好的模板代码。 一、聚合函数 ​ 在MySQL中&#xff0c;聚合函数主要由&#xff1a;count、sum、min、max、avg组成&#xff0c;这些函数前面已经提过&…

std::stox类型

std::stod 函数原型 double stod (const string& str, size_t* idx 0); double stod (const wstring& str, size_t* idx 0);函数功能 将std::string字符串转化为双精度类型 函数参数 str 待转换的字符串 idx 如果idx的指针不为空&#xff0c;则该函数会将idx的…