Software Testing, Development, Random Thoughts

Happened to write this for a reason; so just pasting it here

I watched a Talk probably Google Talk..
One developer from Adobe mentioned that they have 20 developers but 30 testers in their group….They must be terrible developers with all the terrible programmers’ taxonomy characteristics….Probably, I am slightly terrible in that way, my understanding is, if you want robust software; you should not fully depend on the testing that developers do/conduct while developing…..[ no matter how well the developer tested/checked the software, for reliability/robustness reasons, you need testing by other than developers ]

Probably a test phase by testers along with user acceptance test phase (by someone who is involved with requirements side) will result better products…But web-sites are not killing ppl; like one of the medical device software that caused to release more xrays or chemicals (do not remember exactly) that caused deaths…….developers are not to decide on what the customers want [they can definitely suggest alternatives, pros, and cons ] ….developers primarily develop on what their understanding about the requirements are….it is the BA or Customer who can decide if the developed stuff meet the needs [i.e requirements] or not. It’s not developers’ call..

[customers/or BA type [or even PM if the PM also did the BA work] people ideally can work on the acceptance tests]

The guy Joel, Owner of StackOverflow says something on Developers and Testers…Probably he is not a big fan of using software developers to test the software they themselves wrote…
http://www.joelonsoftware.com/searchResults.html?cx=partner-pub-7553644598686111%3Abl4i7p-y0o5&cof=FORID%3A9&ie=UTF-8&q=testing&sa=Search&siteurl=joelonsoftware.com%2F&ref=&ss=1781j561127j7

But Microsoft sees software testing is a complex activity and wants developers as testers….they want to hire developers in software testing positions…

Economics

A study conducted by NIST in 2002 reports that software bugs cost the U.S. economy $59.5 billion annually. More than a third of this cost could be avoided if better software testing was performed.[10]

Reference:

http://en.wikipedia.org/wiki/Software_testing

In many positions, I did not have testers, I had to do all the testing along with development, and write all ends of the software
In couple of positions I wrotes guides on testing [how to test software]: Also, created test cases for the testers…

Books on software testing: I read one; the last one [recommended reading for the interview for Microsoft], hope to read the other two [not to be a software tester [not really my interest] , but to understand it, and probably I do not mind writing software test cases or design software test]

One thing though, I have the experience that when as a developer, I wrote test cases and gave it to the testers, the testers only used my test cases; did not use their own; so they missed what I missed; better ideas could be testers could do all the testing they could think and then they could use my test cases to find out if there is anything they did not test…

http://kaner.com/?page_id=10

Some software testing Terminologies

Software Testing Basics

Note: Different testing strategies are described here. In practice, a detail test plan is helpful that may be formed with a subset of these strategies [and delivered to the testers] according to the need of the customers, and the company policies.

Five Fold Testing System

Any testing can be described in five dimensions:
1. Testers: Who does the testing?
2. Coverage: What needs to be tested? function, domain, extreme value?
3. Potential Problems: Why you are testing?
4. Activities: How you test?
5. Evaluation: How to measure the success of testing?

Some Forms of Testing

1. Function testing: Test all functions
2. Extreme Value Testing: Test for errors when extreme values of the variables are used
3. beta testing: make other people test your product

All testing involve five dimensions. When we tell to do function testing, we can list: who will do the test (programmers, testers, users of the product, internal employees), what needs to be tested like functions, what kind of problems they need to address such as pass by value or pass by reference, test method, evaluate your test

People Based Techniques

1. User Testing: Tests by the real users of the product
2. Alpha testing: By Test team, firendly insiders
3. Beta testing: Not insiders, not clients, but may be part of the target market, volunteers
Design Beta tests: appraise the design
marketing beta tests: to justify will customers buy the product?
compatibility beta tests: test hw/sw platform compatibility
4. bug bashes: in house testing, just before release one full day/half day testing
5. subject matter testing: give an expert on the subject to use and test the product
6. Paired testing: two person together do the tests and shares ideas
7. eat your own dog food: use the software in-house for your own purpose and check reliability

Coverage based testing

1. Function testing: Test each function
White box function testing: testing in respect of code
Black box function testing: test functions in respect of features and commands
2. Function integration testing: test several functions together
3. Menu tour: check all menu items, all available choices
4. Domain testing: Test variable domains and their effect on functions. Find the possible values that a variable can take, classify the value domain, take representative values from each domain, test the variables and related functions
5. Equivalence class analysis: find equivalent domains and tests for one of them
6.Boundary test: Check for smallest and largest values for a variable
7. best representative testing
8. input field test catalogs or matrices
9. Map and test all the ways to edit a field
10. Logic testing: use logics like if then else. cause effect graphing is used for logic based testing
11. state based testing:
12. Path testing: All possible paths to come/go to a state
13. Statement and branch coverage: execute all statements and all branching
14. Configuration coverage: test how many types of printers your software support
15. Specification based testing: Test all claims made in the manual/specification
16. Requirements-based testing: test if all requirements are met
17. combination testing: testing two or more variables in combination with each other

Problems based techniques

1. Input constraints Tests: Check what kinds of input the program can handle. Also check input error protection
2. Output constraints: The inputs are legal but check if they lead to corresponding out value
3. computation constraints : the program may fail while calculating a value
4. Storage constraints: out of memory tests, too big output file to process
5. timing: race condition, ordering of events

Activity based Testing

How you test?
1. Regression Testing: Test the same issue again.
a. Bug fix regression : bug is fixed but do the test again to prove the bug is not fixed
b. old bugs regression: new bug fix has unfixed old bugs. so test again
c. side effect regression/stability regression : the bug fix has created new bugs/side effects
2. Scripted Testing: execute step by step methods written by senior tester
3. smoke testing : kind of side effect regression testing. but test to prove that no side effect has come. show everything is working. assume may be some simple stuffs have caused the problems not the bug fix. if you can not prove then the new bug fix has created new errors
4. exploratory testing: keep the testers known about the project, product, market, risks. So new tests will be stronger than earlier ones as experience is more
5. Guerilla testing: a fast and extensive exploratory test done by senior tester. test whole day a particular part extensively and decide if that area needs much/more testing or can be ignored
6. scenario testing:
a. test what the customer will really do
b. complex feature testing
c. easy to decide success/failure

tests that come from use cases.

7. Installation testing: install in various platform, in different methods, check the files, check if the program works?, check uninstallation
8. Load testing: Test the system at high enough load
9. long sequence testing: run the program for days, weeks. problems like wild pointers, memory leaks, stack overflows, and bad interaction among multiple features are caught by this duration testing
10. Performance testing: test the speed/efficiency of the software. A significant change in speed from time to time is a bad indication and the software need to be optimized

Evaluation based testing

Methods to determine if a test has passed or failed
1. Self verifying data:
2. compare with saved results: if results vary over the week/day, something is wrong
3. compare with specification: mismatch with the specification, failure
4. consistency:
a. with history: software behaviour consistent with past behaviour?
b. with company image: matches with the image that company focuses on?
c. with claims: does what it is supposed to do
d. user’s expectations: meets users expectations
e. within product: consistent with other functions
f. purpose: consistent with it’s purpose?
— From: http://sitestree.com/?p=619
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-12-21 06:21:42

Learn Math and Check your Math Skills

And if you are from Bangladesh, why don’t you make such or better stuff in Bengali and help the Students in Bangladesh?

You can also check if there is a market for it in Bangladesh, if you want to do it as a business? or can you think of any game idea that can teach such skills? A list of games to teach Math skills can be found at the end of this post

Jr. Kindergarten

Counting, comparing groups, inside and outside, long and shortand more.

 

Kindergarten

Patterns, identifying shapes, skip-counting, sorting objectsand more.

 

Grade 1

Adding doubles, subtraction word problems, estimation and more.

Grade 2

Place-value models, even and odd, reading clocks, fractions and more.

 

Grade 3

Multiplication facts, line graphs, units of measure, propertiesand more.

Grade 4

Adding decimals, calculating probabilities, bar graphs, symmetryand more.

 

Grade 5

Quadrilaterals, adding fractions, converting measurements, areaand more.

 

Grade 6

Percentages, perimeter, variable expressions, exponents, anglesand more.

 

Grade 8

Pythagorean theorem, linear equations, square roots, surface areaand more.

 

Grade 10

Systems of equations, similar figures, cube roots, factoring and more.

 

Grade 11

Quadratic functions, trigonometry, radical expressions, sequencesand more.

 

Grade 9

Solving inequalities, multiplying polynomials, evaluating exponentsand more.

————–

You can find some simple math based games at : http://www.knowledgeadventure.com/subject/

Some math Game at BBC web-site: http://www.bbc.co.uk/skillswise/maths/games

Some more math based games: http://www.mathsisfun.com/games/

 

 

 

 

 

 

 

 

  From: http://sitestree.com/?p=610
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-12-15 18:03:35

Make Your Web-site Faster : Make WordPress Faster

Recommended Links and Plugins

Caching is only one part of making a website faster. Here are some other plugins that will help

  1. WPSCMin, a Supercache plugin that minifies cached pages by removing whitespaces and extra characters [the link does not work, did not find any other alternative link]
  2. Yahoo! Yslow is an extension for the Firefox add-on Firebug. It analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at GTMetrix.
  3. Use Google Libraries allows you to load some commonly used Javascript libraries from Google webservers. Ironically it may reduce your Yslow score.
  4. The CDN Sync Tool plugin will help upload files to Amazon S3/Cloudfront if you would rather not depend on origin pull. See the plugin support forum if you have any queries about this plugin.
  5. Advanced users only: Speed up your site with Caching and cache-control explains how to make your site more cacheable with .htaccess rules.
  6. Advanced users only: Install an object cache. Choose from Memcached, XCache, eAcccelerator and others.
  7. Cron View is a useful plugin to use when trying to debug garbage collection and preload problems.

From: http://sitestree.com/?p=606
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-12-14 21:27:07

Code Generator for Laravel Framework

JeffreyWay/Laravel-4-Generators is a tool that can generate code for you for Laravel based applications.

You can download it from:
https://github.com/JeffreyWay/Laravel-4-Generators

It needs php >= 5.3.3
You will need to install Composer before you install this generator. Composer is a dependency management tool; it will download and install all the pre-requisite tools/packages for you.

Configuration changes:
You have to update composer.json as comes with Laravel. You have to include this generator as a requirement for Laravel. Then you have to update composer with commands similar to: composer update. In Windows, you can run this command from right/context menu options.

You can find a text tutorial here:
https://medium.com/on-coding/c643022433ad

A video tutorial by the author can be checked at:

So far I can see that generate:resource is pretty useful. Also, generate form also.
From: http://sitestree.com/?p=575
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-12-02 07:44:05

DB Operations for Laravel (a MVC based PHP framework). The Model is also discussed

Different methods of DB operations are discussed.
How to model using the Eloquent ORM is also discussed.
DB operations are shown in Plain SQL, or Using the Query builder, and also using the Model.
In a later document, I will show the details of Laravel configurations and some MVC coding stuff.
You do not need 100 years of experience to be able to use Laravel. If you have experience with similar stuff (one or more) such as CodeIgniter, Symfony, Zend, and/or CakePHP (also in general you are good in programming, and also good in PHP, Database Design and Implementation, DB Modeling, ORM in other languages/frameworks), you will be good to go in matter of days [even if you never heard of Laravel]

From: http://sitestree.com/?p=570
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-11-26 02:10:23

Scraping HTML Content

HTML DOM Parser Works well: http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/
http://sourceforge.net/projects/simplehtmldom/

PHP XML parsers will work though the HTML needs to be perfect (XHTML) : http://www.php.net/manual/en/refs.xml.php

Example: http://www.php.net/manual/en/simplexml.examples.php

 

To grab HTML from a URL, you can use CURL

        // create a new cURL resource
	$ch = curl_init();

	// set URL and other appropriate options
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_USERPWD, "username:password");
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);	

	// grab URL and pass it to the browser
	$result = curl_exec($ch);

	// close cURL resource, and free up system resources
	curl_close($ch);

 

  From: http://sitestree.com/?p=556
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-11-18 02:03:36

One of the Parallel Computers that I used: You can just get an idea about a simple parallel computer configurations

You can just get an idea about a simple parallel computer configurations

SUN Ultra Sparc-III (used to run parallel random number generators, yes I wrote the code as well) : used long back though

The experiments were conducted on machines containing
24, 1050 MHz UltraSparc-III CPUs, 48 gigabytes of memory,
a terabyte of disk storage, L1 Cache, and L2 Cache. L1
cache consists of 64 KB 4-way data, 32 KB 4-way instruction,
2 KB Write, and 2 KB Prefetch. L2 Cache consists of
8 MB External On-chip controller and address tags.

 

  From: http://sitestree.com/?p=534
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-11-14 02:19:51

Lessons Learned and Opinions for Better Software Development

2. coming soon…

1. No matter what, if multiple programmers will be working on the same project, use version control. Well, you will find this opinion all over the internet. No doubt. That’s just a knowledge. However, if you work with different scenarios; with or without version control, you will feel it what really works, and what really is better. Nothing New.

However, sometimes right knowledge is better than bad experience (experience of doing thing in a wrong way….)

  From: http://sitestree.com/?p=531
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-11-10 00:14:58

Hadoop, NoSQL, PHP

MongoDB (from “humongous”) is an open-source document database, and the leading NoSQL database. Written in C++.
http://www.mongodb.org/

If you are in USA, Hadoop/NoSQL can pay you a lot…
http://www.indeed.com/salary/q-Hadoop-l-San-Jose,-CA.html

PHP Programming in the area:
http://developer.marklogic.com/labs/mlphp

Apache Hadoop
http://en.wikipedia.org/wiki/Apache_Hadoop

Facebook and Hadoop
http://gigaom.com/2013/11/06/facebook-open-sources-its-sql-on-hadoop-engine-and-the-web-rejoices/ From: http://sitestree.com/?p=519
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-11-07 05:16:53

Mobile Development, Responsive Design, and Related

You can download the Project ResponsiveRabbit from:
As I mentioned in an another article, I used CSS from ResponsiveRabbit to create mobile version of web-sites. http://www.justetc.net and http://www.justetc.org both have a mobile version. For resolution < 768 px the mobile responsive version is displayed. In the mobile version, the top menu is squeezed to the top. The width of the menu also changes based on screen resolution. For > 400 px width, menu width is 300px. At one point the width becomes 250, then 200, and then 150. It could be made percentage. However, based on the web-site structure, it could be little tricky/not-straight forward. So took the easier but more css codier way…
For mobile versions, the carousals are taken off, some of the box items are shown as plain text links. As for mobile version, the contents breakdown and arrange them one under another.
the css files, style.css the default mobile version; shown for width <= 767px.
style_desk.css is the desktop version shown for width >= 768px
responsive.css have the css classes that will be responsive
bootstrap-responsive.css has the media queries and defines the behavior for different resolutions
Some css from bootstrap-responsive.css
@media (max-width: 767px) {
/*sayed block starts */
#actualNavBar{
display: none;
}#responseNavBar{
position:absolute;
top:0px;
}.slider, .pagination{
display: none;
}.slider:after{
clear: both;
}

.box{
float:right;
padding:5px;
}

.nav-collapse{
max-width: 300px;
min-width: 300px;
float:right;
}

.container-fluid{
max-width: 50px;
float: right;
}

.navbar-inner{
width:40px;
height:40px;
float: right;
}
/*sayed block ends */

From style_desk.css
#responseNavBar{
float:right;
position:absolute;
top:0px;
display: none;
}#actualNavBar{
display: block;
}
/*sayed block starts*/
/*251 to 400px*/
@media (max-width: 400px) {
.nav-collapse{
max-width: 250px;
min-width: 250px;
float:right;
}
}
/*201 to 250*/
@media (max-width: 250px) {
.nav-collapse{
max-width: 200px;
min-width: 200px;
float:right;
}
}/*0 to 200*/
@media (max-width: 200px) {
.nav-collapse{
max-width: 150px;
min-width: 150px;
float:right;
}
}/*sayed block ends*/ 

I was looking for research work that eventually led to this CSS Media Queries, and responsive design…there must be some.. will see..now attaching one as I found…[not directly related …]

Responsive design in Higher Education

From: http://sitestree.com/?p=514
Categories:Web Development, Root, By Sayed Ahmed
Tags:
Post Data:2013-11-05 05:09:07