高效测试新策略:推动RD自测,实现QA免测

2322 篇文章 2 订阅
2188 篇文章 14 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.4k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

小B是某业务方向的QA(Quality Assurance Engineer,质量保障工程师)负责人,该方向共3名QA同学,按双周对齐需求测试进展时发现,该方向有多个需求提测后需要等待几天时间,QA同学才能介入测试。

虽然出现这种情况,跟该方向近期的需求数量变多有直接关系,但依然有两个可持续的改进方向:

  • 需求测试效率的进一步提升;

  • 部分需求应推动RD(Research and Development Engineer,研发工程师)自测,实行QA免测。

小D是该方向的一名QA,工作3年左右,对于这两个改进方向,他能理解,但也有一点困惑。

需求测试效率提升很容易理解,因为效率提升后,QA资源能够尽快释放出来支撑新需求,这样就能减少需求的测试等待。具体如何提升,可以具体需求具体分析,先识别低效点,再进行针对性地改进。

部分需求推动RD自测,实行QA免测的意义也很明显,本质上也是减少QA资源的占用,从而减少需求的测试等待。

但对于如何实行QA免测,他完全没有思路,不知道该如何推动RD。因为需求实行QA免测,对PM的收益(需求能快速交付)和对QA的收益(减少资源投入、整体效率提升)是显而易见的,但是看不到对RD的收益,反而会增加RD一定的自测工作量。

小B针对小D的困惑给予了反馈:

推动他人协同时从他人的利益入手,思路是对的。但需要把站位进行拔高,眼光放长远,不能孤立地看待各个角色,也不能只盯着眼前的单一需求。

对于任意一个业务模块的研发测试团队来说,交付效率高且质量符合预期是大家共同的目标,而如果不进行持续的、体系化的建设,研发和测试工作中的痛点会层出不穷,最终效率和质量目标也难以达成。

因此,跟RD沟通时可以采取如下思路:

  • 意识宣导:推进需求QA免测所节省下来的QA资源会投入高杠杆率的事情,从而使该方向的体系性建设有资源保障;

  • 长期事项收益:针对该方向的研发效率和质量的挑战与痛点,输出相应的规划、里程碑等,推进过程中还需要让RD同学及时感知到阶段性的进展与收益;

  • 短期痛点解决:针对当前要免测的需求,QA需提供必要的支持,确保质量风险可控,且减少因为RD自测带来的额外工作量。

小D:懂了懂了,这个沟通视角不错,学到了。还有一点困惑,如何判断哪些需求应该免测呢?

小B:这个问题也很关键。

我过去在其他公司也推动过QA免测,效果不太理想。

当时调研了常见的判断标准,如开发工作量、功能重要程度、代码改动行数等,发现这些指标都有一些明显问题,比如:

  • 开发工作量小不代表改动的影响小、不代表改动的功能影响范围小,通过开发工作量小于1PD(Person Day,人日)或2PD,会漏掉很多需要QA测试的需求;

  • 代码改动行数跟开发工作量类似,改动行数少不代表改动的影响小,根据此标准也会漏掉很多需要QA测试的需求;

  • 功能重要程度,看似可以通过功能是否重要、是否容易产生重大缺陷来进行风险卡控。但实际上,需求难以轻松区分出重要还是不重要,像核心链路上的功能的确重要,很多功能是辅助作用,不太重要,但依然有很多需求不那么容易判断是否重要,这就导致研发和测试同学在判断时会花费很多时间讨论,且难以确定结果,如果无法确定结果,那默认就是需要QA测试了。

后来,重新调整了思路:根据日常协作中的认识和理解,把明确不需要QA测试的内容先明确下来,如为内部开发的工具、埋点需求、UI或文案的变更、日志相关需求等。

针对具体的需求具体沟通,刚开始会有一定的沟通成本,但也会慢慢地沉淀出一些经验和体感。

小D:那新的思路运行得如何呢?

小B:整体还可以。核心还是要让RD能够把研发和测试当成整体去思考,同时让研发感知到自身的收益,无论是短期痛点的解决,还是长期事项的收益上。

小D:好的好的,咱们也搞起来吧,我很期待。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Verilog代码如下: ``` module async_fifo ( input clk, input rst, input wr_en, input rd_en, input [7:0] wr_data, output reg [7:0] rd_data, output full, output empty ); parameter depth = 8; reg [7:0] mem [0:depth-1]; reg [3:0] wr_ptr, rd_ptr; always @ (posedge clk) begin if (rst) begin wr_ptr <= 0; rd_ptr <= 0; end else begin if (wr_en & ~full) begin mem[wr_ptr] <= wr_data; wr_ptr <= wr_ptr + 1; end if (rd_en & ~empty) begin rd_data <= mem[rd_ptr]; rd_ptr <= rd_ptr + 1; end end end assign full = (wr_ptr == rd_ptr + depth); assign empty = (wr_ptr == rd_ptr); endmodule ``` 以下是测试文件tb: ``` module async_fifo_tb; reg clk; reg rst; reg wr_en; reg [7:0] wr_data; wire [7:0] rd_data; wire full; wire empty; async_fifo dut ( .clk(clk), .rst(rst), .wr_en(wr_en), .rd_en(1'b1), .wr_data(wr_data), .rd_data(rd_data), .full(full), .empty(empty) ); initial begin clk = 0; rst = 1; #5 rst = 0; #5 wr_en = 1; #5 wr_data = 8'h01; #5 wr_en = 0; #5 $finish; end always #5 clk = ~clk; endmodule ``` 请注意,这仅仅是一个简单的例子,请根据实际需要进行更复杂的测试。 ### 回答2: 下面是一个简单的异步FIFO的Verilog代码,以及对应的测试bench文件: 异步FIFO代码(async_fifo.v): ```verilog module async_fifo( input wire clk, input wire reset, input wire write_en, input wire read_en, input wire [7:0] data_in, output reg [7:0] data_out, output reg empty, output reg full ); parameter DEPTH = 16; reg [7:0] memory [0:DEPTH-1]; reg [3:0] write_ptr; reg [3:0] read_ptr; always @(posedge clk or posedge reset) begin if (reset) begin write_ptr <= 0; read_ptr <= 0; empty <= 1; full <= 0; end else begin if (write_en && ~full) begin memory[write_ptr] <= data_in; write_ptr <= write_ptr + 1; if (write_ptr == DEPTH-1) write_ptr <= 0; empty <= 0; if (write_ptr == read_ptr) full <= 1; end if (read_en && ~empty) begin data_out <= memory[read_ptr]; read_ptr <= read_ptr + 1; if (read_ptr == DEPTH-1) read_ptr <= 0; full <= 0; if (read_ptr == write_ptr) empty <= 1; end end end endmodule ``` 测试bench文件(tb_async_fifo.v): ```verilog module tb_async_fifo; // Inputs reg clk; reg reset; reg write_en; reg read_en; reg [7:0] data_in; // Outputs wire [7:0] data_out; wire empty; wire full; // Instantiate the asynchronous FIFO async_fifo dut( .clk(clk), .reset(reset), .write_en(write_en), .read_en(read_en), .data_in(data_in), .data_out(data_out), .empty(empty), .full(full) ); // Clock generation always begin #5 clk = ~clk; end // Initialize inputs initial begin clk = 0; reset = 1; write_en = 0; read_en = 0; data_in = 8'h00; #10 reset = 0; end // Stimulus always @(posedge clk) begin // Write data into the FIFO if (empty) begin write_en = 1; data_in = 8'hFF; end else begin write_en = 0; end // Read data from the FIFO if (~empty) begin read_en = 1; end else begin read_en = 0; end end // Display outputs always @(posedge clk) begin $display("Data Out: %h, Empty: %b, Full: %b", data_out, empty, full); end // Stop simulation after some time initial begin #100; $finish; end endmodule ``` 这个异步FIFO模块使用了8位数据宽度,深度为16的内存阵列来存储数据。它有一个时钟输入(clk),复位输入(reset),以及写使能信号(write_en)、读使能信号(read_en)、数据输入(data_in)和数据输出(data_out)等。 测试bench文件对异步FIFO进行了简单的写入和读取操作,并在每个时钟周期显示了输出数据、空状态和满状态的情况。 请注意,上述代码只是一个简单示例,可能并不完全符合特定应用场景的需求。实际使用时,可能需要根据具体的设计规范和应用需求进行更多的优化和修改。 ### 回答3: 下面是一个使用Verilog语言实现异步FIFO的代码示例: ```verilog module async_fifo ( input wire clk, input wire rst, input wire wr_en, input wire rd_en, input wire [7:0] data_in, output wire [7:0] data_out ); reg [7:0] fifo [15:0]; reg [3:0] wr_addr; reg [3:0] rd_addr; always @(posedge clk or posedge rst) begin if (rst) begin wr_addr <= 0; rd_addr <= 0; end else if (wr_en) begin fifo[wr_addr] <= data_in; wr_addr <= wr_addr + 1; end else if (rd_en) begin data_out <= fifo[rd_addr]; rd_addr <= rd_addr + 1; end end endmodule ``` 上述代码实现了一个异步FIFO模块,其中包含了一个16个字节深度的FIFO。数据通过数据输入端口data_in写入FIFO,通过数据输出端口data_out读取FIFO的数据。wr_en和rd_en分别用于控制数据写入和读取的使能信号。模块中的rst信号用于复位FIFO的地址指针。时钟信号clk用于驱动FIFO内部逻辑的时钟。 你还需要一个测试bench模块来对上述FIFO模块进行测试。下面是一个可以用于测试的tb文件示例: ```verilog module async_fifo_tb; reg clk; reg rst; reg wr_en; reg rd_en; reg [7:0] data_in; wire [7:0] data_out; async_fifo dut ( .clk(clk), .rst(rst), .wr_en(wr_en), .rd_en(rd_en), .data_in(data_in), .data_out(data_out) ); initial begin clk = 0; forever #5 clk = ~clk; end initial begin rst = 1; wr_en = 0; rd_en = 0; data_in = 8'h00; #10 rst = 0; #10 wr_en = 1; data_in = 8'hAA; #10 wr_en = 0; rd_en = 1; #10 $display("Data out = %h", data_out); #10 $finish; end endmodule ``` 在上述测试bench中,通过设置不同的wr_en和rd_en信号控制数据的写入和读取操作。其中,rst信号在模块被激活之前先设为1,以确保FIFO处于复位状态。clk信号用于生成时钟信号。data_in用于写入FIFO的数据,data_out用于读取FIFO的数据。在测试bench中,我们首先对FIFO进行复位,然后写入一个字节的数据(0xAA),最后读出数据并打印到控制台上。 以上就是异步FIFO的Verilog代码和测试bench的简单示例。请注意,这只是一个最基本的实现测试框架,实际使用中可能需要更详细的测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值