随想录(做自己代码的測试project师)
【 声明:版权全部。欢迎转载,请勿用于商业用途。
联系信箱:feixiaoxing @163.com】
非常多project师都有一个不好的习惯,由于大多数itproject师都喜欢写代码。可是不喜欢測试代码。在他们眼里,把功能做出来是一件非常牛逼的事情,而软件測试则是一件低级、价值量不高的事情。
其实是否真的如此呢。恐怕未必。姑且不谈你写的这份代码是否真的会给用户或者消费者带来价值,可是一份极其不稳定甚至时常崩溃的软件,肯定不会带来什么好感。这也就意味着公司投资你作了这个劳动非常可能是个无用功。
这个问题其实不光小公司有。大公司也是如此。
(1)非常多朋友没有代码质量意识。一份软件的价值,一方面体如今能否够满足客户的需求。还有一方面也体如今它能否够稳定长久地执行。
代码执行的时间越长、越稳定和健壮,这样才干最大程度保留代码的价值。
(2)測试project师远没有开发project师了解代码的健康程度。非常多公司的測试project师仅仅是依照黑盒的方法对软件进行測试,这些測试的内容包含了功能、易用性、边界測试、兼容性、性能等等,可是这些測试都没有开发人员自己写的单元測试重要。大多数单元測试能够在第一时间发现问题、解决这个问题,而不是等到測试的时候来进行解决。
假设开发人员认为代码哪写的好像有问题。那么十有八九有问题。仅仅是个时间问题而已。
(3)好代码是不停改动和重构得来的。之前看了非常多的代码,这包含vxworks、gcc、linux、mysql等等,它们中的非常多代码从上个世纪八九十年代就已经存在了,到今天还在改动。有的是又一次调整流程。有的是为了适配新的cpu。还有的是为了兼容新的设备特性。
所以说。一份健康的代码须要重复的測试、重复的重构、重复的执行。没有什么是一层不变的。在server上执行的非常多系统代码。不知道经过了多少次推倒重来的改动,经过了多少次作者的代码检查,预计仅仅有真正经历的人才知道。
(4)现有的工具能够极大地帮助我们进行代码的各种測试,我有一篇文章谈到了这些工具。比方说,CUnit能够帮助我们进行单元測试;splint能够进行代码的静态检查;valgrind能够进行代码的泄漏測试;gcov能够进行覆盖率的測试;gprof能够进行代码性能的统计測试;gdb的watch功能能够直接帮助我们检查数据是否越界;core dump能够帮助我们保存程序的相关内存信息。为我们逆向调试提供了方便。当然,上面说的都是linux上面的工具。大家能够依据自己的环境,看看有没有什么合适的工具帮到自己提高一下代码的质量。
(5)有些错误是随机的,可是有一定的概率性。这就要求我们对相关数据的输入、输出进行记录和处理。
实现这个功能不难,用fprintf和fscanf就能够做到,以下是我自己写的一份简单代码,算是抛砖引玉之用。
#include <stdio.h> #define NAME "log.txt" int main(int argc, char* argv[]) { FILE* file;
char buf[32];
int data;
unsigned int udata;
char str;
unsigned int hex; // generate log txt file file = fopen(NAME, "rt");
if(NULL == file){ file = fopen(NAME, "w");
fprintf(file, "%d\n", 10);
fprintf(file, "%u\n", -1);
fprintf(file, "%s %c 0x%x\n", "china", 'c', 0x12345678);
fclose(file); return 1;
} // read file fseek(file, 0, SEEK_SET);
fscanf(file, "%d\n", &data);
fscanf(file, "%u\n", &udata);
fscanf(file, "%s %c 0x%x\n", buf, &str, &hex);
fclose(file); // output content to the screen printf("%d\n", data);
printf("%u\n", udata);
printf("%s %c 0x%x\n", buf, str, hex); return 1;
}
(6)对于代码中的日志、打印、告警要进行分开处理。有的时候,代码执行非常长时间才会错误发生,那么除了core dump和代码入库记录之外。你能看的就是打印日志了。所以写一份自己的print函数也是非常有必要的。由于换成自己的print函数后,这些log你能够显示出来,也能够保存到文件中面,同一时候也能够是一个空函数,真是太方便了。
#include <stdarg.h> void printk(char* fmt)
{
va_list args;
char buffer[256]; va_start(args, fmt);
vsnprintf(buffer, 256, fmt, args);
va_end(args); printf("%s", buffer);
}
上面的观点是我近期一段时间的感受,欢迎大家来交流。
随想录(做自己代码的測试project师)的更多相关文章
- 教你怎样做个有“钱”途的測试project师
百度百科说測试project师这一职业的待遇,薪酬上升空间很大.但測试project师也有自己的烦恼,比方在程序出错后,将问题反馈给程序猿,然后程序猿给的答复是:"oh,howisthatp ...
- 腾讯測试project师笔试面试记录
从3月29日參加腾讯笔试開始,開始了为期1周的腾讯之旅,尽管最后还是跪在了二面上,可是感觉收获非常多,至少明确了自己与向往的BAT公司的差距,明确了自己还是路漫漫其修远兮. 腾讯非常注 ...
- 用python做自己主动化測试--绘制系统性能趋势图和科学计算
在性能測试中.我们常常须要画出CPU memory 或者IO的趋势图. 预计大学里.大多数人都学习过matlib, 领略了matlib绘图的强大. python提供了强大的绘图模块matplotlib ...
- 用python做自己主动化測试--对server端的自己主动化測试(3)-很多其它http client实例
上一篇中仅仅是实现了一个非常easy的http client功能,request还提供了keep alive, SSL, 多文件上传,cookie 管理功能,http requests头管理等丰富的功 ...
- 如何做更好的Android驱动project师
随着智能手机的飞跃发展,特别是Android智能机的爆炸性发展,Android驱动project师是越来越受欢迎的一个职位,并且是一个非常值得人期待的职位,由于可能你參与研发的一款手机就能改变 ...
- 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)
作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...
- Android单元測试之JUnit
随着近期几年測试方面的工作慢慢火热起来.常常看见有招聘測试project师的招聘信息.在Java中有单元測试这么一个JUnit 方式,Android眼下主要编写的语言是Java,所以在Android开 ...
- 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践
这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...
- 系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式
PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...
随机推荐
- android hook 框架 ADBI 如何实现so函数挂钩
上一篇 android 5 HOOK 技术研究之 ADBI 项目 02 分析了hijack.c, 这个文件编译为一个可执行程序 hijack, 该程序实现了向目标进程注入一个动态库的功能.这一篇继续研 ...
- msvc/gcc:中用#pragma指令关闭特定警告(warning)
在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,更麻烦 ...
- inotify+rsync实现实时同步并邮件通知
服务器之间文件实时同步,监控文件的变化,发送邮件通知,并实时同步文件. 由于人工同步多台服务器的文件比较吃力,可以借助这样一套软件,自动化的实现这样的工作. 并且可以事实监控变化发送邮件给系统管理人员 ...
- J.U.C并发框架源码阅读(十四)ScheduledThreadPoolExecutor
基于版本jdk1.7.0_80 java.util.concurrent.ScheduledThreadPoolExecutor 代码如下 /* * ORACLE PROPRIETARY/CONFID ...
- java标识符与命名规则
标识符就是给变量.类或方法起的名字.可以用字母.下划线或美元符号开头,区分大小写,没有最大长度限制.(关键字除外) 关键字 访问控制 private protected public ...
- Tarjan缩点【p4819】[中山市选]杀人游戏
Description 一位冷血的杀手潜入Na-wiat,并假装成平民.警察希望能在\(N\)个人里面,查出谁是杀手.警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识的人,谁是杀 ...
- 日志采集客户端 filebeat 安装部署
linux----------------1. 下载wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.1- ...
- 洛谷 P4538 收集邮票
题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...
- [洛谷3796]【模板】AC自动机(加强版)
题目大意: 给定$n(n\leq150)$个模式串$p_i(|p_i|\le70)$和一个$t(|t|\le10^6)$,求$t$中被匹配次数最多的$p_i$. 思路: AC自动机.匹配时记录一下匹配 ...
- webpack2.x基础属性讲解
webpack作为构建工具平时作为前端作为优化.模块编程.和分片打包的重要组成部分,大家可能并不陌生,如果没有时刻的去关注文档,那么大家可能不太清楚webpack已经默默然的升级到2.x了,对比1.x ...