随想录(做自己代码的測试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消耗越高, ...
随机推荐
- UVA 10519 !! Really Strange !!
//ans=2*n+(n-1)(n-2) n>=2#include <map> #include <set> #include <list> #include ...
- HTML,DIV+CSS,js,JQ,UI-WEB前端设计经验
目前比较全的CSS重设(reset)方法总结 在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览 ...
- linux Centos7 安装Samba服务
1. 使用Samba服务器需要防火墙开放以下端口 UDP 137 UDP 138 TCP 139 TCP 445 如果碰到 “Unable to save xxxxxxxx 拒绝访问” 的提示,还有最 ...
- redis介绍与配置
redis 是什么 我们都知道 mysql.oracle 是关系型数据库,它们的特点就是像一个 Excel 表格一样,而且都是用 SQL 语句.但是你可能看到一种东西叫NoSQL.NoSQL 泛指非关 ...
- Nginx虚拟主机(Virtual Host)配置
虚拟主机(Virtual Host)可以在一台服务器上绑定多个域名,架设多个不同的网站,一般在开发机或者要部署多个小网站的服务器上需要配置虚拟主机.nginx的虚拟主机配置其实也挺简单,为了使得配置文 ...
- Reporting Service报表水印的添加
上一篇文章寫到了自帶報表的製作,現在來談談報表水印的添加 1:水印產生代碼 using System; using System.Data; using System.Configuration; u ...
- Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException
Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException reason:JDK与Scala的版本不 ...
- HDU 1847 【巴什博弈】
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- 51nod 1094 和为k的连续区间【前缀和/区间差/map】
1094 和为k的连续区间 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 一整数数列a1, a2, ... , an(有正有负),以及另一个整数k ...
- 离别在须臾——AFO
始于 2016-12-25 终于 2017-11-30 一开始就陷入了颓废的坑,然后,直至 2017 年暑假,颓废的气息一发不可收拾, 从 Q_fight 到 aoqi_baitian ,从 大主宰 ...