I had a chance to attend a cloud conference recently and have some updates to share. Not that cloud computing is any new term though I wanted to attend from the cloud testing point-of-view and renewing my knowledge.
- The best definition of cloud computing can be found on the NIST website here.
- Attended the conference as an - Unconference sessions - its really an informal way and gives you the idea about what’s missing and what has to be learned as a developer.
- I attended the conference to understand about what skills I should have to be able to successfully test the cloud app, soon realized I am better at the development side due to my technical nature and understanding of tools.
- Cloud apps are highly connected type of apps or “connectedness" is primary characteristics.
- No versioning required for cloud apps since can be updated anytime.
- IT department is gone though system admin has now new set of tasks to perform.
- Amazon cloud service is most widely used though there are other available service.
- Everything is Service-Oriented. There is a service for each task and your application should start using/implementing these services to be able to deploy on cloud. Integration service will be an important service. A typical salesforce.com type of app consists of Marketing, Sales and Service integration is thus critical.
- All conference speakers were very confident of future quoting that its a $70b market by 2015.
- Application characteristics for which cloud apps are suitable are primarily defined by traffic. There are many other parameters to consider.
- Load and performance testing tools are required to gauge the performance and whether website application meets performance expectation. Mobile application on popular platforms is also usually developed simultaneously.
- Cloud apps are more suitable for social apps but there is no such rule as to what application can be developed. There is evaluation criteria.
- To consider if an app can be considered for deployment as a cloud app here are the following needs:
o Company infrastructure
o Application requirements
o Storage requirements
o Application options
o Vender slection
o Third party integration
o Usage requirements
o Security requirements
- Once you have a web app design ready answer the question whether:
o A SAAS solution
o Public or private cloud
o Cloud storage
o No cloud
on the checklist based on nature of application to decide for cloud application.
- Apps can be tested using Winrunner and jmeter scripts are supported.
- Cloud apps are required to be scalable, measurable, on – demand and self-service based.
- The type of tools available are for development community, Cloud management, Dataprocessing pre-packaged apps, plug-ins to fascilitate development as per the requirements.
- Popular tools are: StreamBase for event processing, Cloud Management:Cloudkick, Rightscale, Kaavo, enStratus. Data processing and BI: Cloudera, Greenplum, Good data, Zoho Reports, Hadoop, ScaleDB etc.. Reason for this discussion is once a tool is selected there is a lock-in, unless a abstraction layer in the code takes care of these issues.
Definitively wikipedia page is exhaustive source for Cloud Computing and lot more to learn in particular hands-on lab.
Views expressed on this blog are my own and for informational purposes only. No representations as to accuracy, completeness, currentness, suitability, or validity of any information and will not be liable for any errors or use.
Sunday, September 4, 2011
Monday, March 21, 2011
On being a better Tester
I am a software tester and have seen and met many software testers like me who want to make a accurate judgement about a test case if it has passed or failed. The obvious answer and the correct one is - compare the specification output of system to output that is observed for the test case being executed. Interesting thing to note here is that there are other influencing factors to change the decision of the tester.
Common factors include:
• Design discussion that is part of tester's knowledge base.
• Testing similar products and its output for somewhat similar test case.
• Heuristic output prediction that comes due to experience. e.g. if I have been testing many years I think you know the answer.
• Statistical characteristics judgement. e.g. I know this test case will work because it has worked most of the time.
• Changing product specs that influences comparison of results of one test execution to another.
• A model based approach is used because tester wants to be subjective and expect specific output set for specified input data set.
In all cases the tester is a voice of customer. I conclude that a better method is if tester and subject matter experts are two different people one working towards software specifications only and other towards functional specifications only.
Common factors include:
• Design discussion that is part of tester's knowledge base.
• Testing similar products and its output for somewhat similar test case.
• Heuristic output prediction that comes due to experience. e.g. if I have been testing many years I think you know the answer.
• Statistical characteristics judgement. e.g. I know this test case will work because it has worked most of the time.
• Changing product specs that influences comparison of results of one test execution to another.
• A model based approach is used because tester wants to be subjective and expect specific output set for specified input data set.
In all cases the tester is a voice of customer. I conclude that a better method is if tester and subject matter experts are two different people one working towards software specifications only and other towards functional specifications only.
Blogspot कीती छान आहे?
Now you can post in your regional language post on blogspot - here is sample snippet I have typed.
आपल्या मत्रुभाशेत ब्लॉग्गिंग करण्या सारखे दुसरे सुख नही बघा.. अखेर आम्ही मराठी अहोत हे स्वाभिमानाने सांगता येते आनी ते व्यक्ते पण करता येते. मस्त मजा मादी
चला दाम्लो अता लिहून
आपल्या मत्रुभाशेत ब्लॉग्गिंग करण्या सारखे दुसरे सुख नही बघा.. अखेर आम्ही मराठी अहोत हे स्वाभिमानाने सांगता येते आनी ते व्यक्ते पण करता येते. मस्त मजा मादी
चला दाम्लो अता लिहून
Wednesday, March 9, 2011
Designing Zero Knowledge System for Product Innovation
What is meant by being Zero Knowledge?
A Zero Knowledge System is the one who do not tell you anything if a. it has any knowledge about itself or b. its behavior and also c. its features. It is indeed an extreme condition of a high quality product. If you have a good quality product you will essentially find nothing wrong with it. The difference between quality product and a zero knowledge product is quality product will have a system that will highlight the various features by hints/tips so user can use them.
In a Zero knowledge system there is no highlight whatsoever e.g. if you install the product you get nothing out of it - at least at systemic level. Now take an example of accounting software. If you are an accountant and you install non-zero knowledge based software, the software will start creating a system by asking initial setup data input questions e.g. a company name and sales numbers, department etc...
In accounting software and many other software hypothetically it is possible to do nothing after the software is installed. A lot of software actually does so e.g. some Operating Systems, Word processing software etc... I think these are zero knowledge software and ideally a software should be a like that. E.g. for installing a browser you may need add-ons etc... these are now helping you create an incomplete system or not necessarily balanced set of usability. Though these are high quality products and there is nothing wrong with it you may be constrained due to its features and not take full benefit and innovative about its use. Note that if you are unable to use certain features intuitively that's also a problem because now you may report bugs. Such system is very much degraded and not zero knowledge compliant.
How does customer derive value of innovation?
By able to customize the data as per the need in zero knowledge based system the innovation is much more intuitive and predictable and need based thus giving a more value add for customer. If software are designed keeping this in mind and then tested the benefit will reach customer.
These are my thaughts and will be happy to know reader comments.
A Zero Knowledge System is the one who do not tell you anything if a. it has any knowledge about itself or b. its behavior and also c. its features. It is indeed an extreme condition of a high quality product. If you have a good quality product you will essentially find nothing wrong with it. The difference between quality product and a zero knowledge product is quality product will have a system that will highlight the various features by hints/tips so user can use them.
In a Zero knowledge system there is no highlight whatsoever e.g. if you install the product you get nothing out of it - at least at systemic level. Now take an example of accounting software. If you are an accountant and you install non-zero knowledge based software, the software will start creating a system by asking initial setup data input questions e.g. a company name and sales numbers, department etc...
In accounting software and many other software hypothetically it is possible to do nothing after the software is installed. A lot of software actually does so e.g. some Operating Systems, Word processing software etc... I think these are zero knowledge software and ideally a software should be a like that. E.g. for installing a browser you may need add-ons etc... these are now helping you create an incomplete system or not necessarily balanced set of usability. Though these are high quality products and there is nothing wrong with it you may be constrained due to its features and not take full benefit and innovative about its use. Note that if you are unable to use certain features intuitively that's also a problem because now you may report bugs. Such system is very much degraded and not zero knowledge compliant.
How does customer derive value of innovation?
By able to customize the data as per the need in zero knowledge based system the innovation is much more intuitive and predictable and need based thus giving a more value add for customer. If software are designed keeping this in mind and then tested the benefit will reach customer.
These are my thaughts and will be happy to know reader comments.
Monday, February 7, 2011
Human Resource Management role to enabling Total Quality Management
Quality Management in Software organizations is a considerable expense and consists of approximately 30-40% resource utilization. We discuss key aspects of Quality Management that can be integrated by Human Resource Management department to ensure a easy deployment and senior management support from a organization-wide initiative.
The goal of TQM is to have zero defects in the production system and service delivery. Quality Engineers who support the product development and customer support executives are responsible for product quality delivery can undertake regular training and development and adapting as a part of the company culture. In addition TQM require that all employees subscribe to the philosophy hence it's necessary for HR department to adopt certain practices to ensure smooth implementation of various initiatives undertaken by TQM. Let's call this a customer oriented service of HRM.
TQM require following principles to be adhered:
1. Focus on customer needs.
2. Focus on problem prevention.
3. Make continuous process improvements.
4. First time right and timely delivery.
5. Be flexible in the constantly changing requirements
Quality improvement initiatives require that team is of more important than individual. HR needs to provides the following:
1. Providing the resources who have the right capability.
2. Training the resources.
3. Managing the progress in achieving the quality goals.
3. Measuring the continuous improvement of individual and team.
To ensure this HR can develop a systemic approach rather than a role/function approach. The tools and techniques that can be used are:
1. Recruiting people who adhere and promote the TQM philosophy at middle and senior management level.
2. Value driven Team development using training, group exercise and quality awareness training.
3. Development of survey and employee feedback instruments for basic adherence to systems and procedures.
4. Ensuring smooth operations of self-managing teams by identifying and rectifying bottlenecks related to performance.
5. Measures of reward system to boast morale.
6. 360-degree feedback on a continual basis in addition to performance appraisal periods.
Special consideration need to be taken up for team formation. A Personality type assessment is needed to setup a 100% self-managed team and will surely be a key to success. For a stable organization further six sigma projects need to be undertaken to reduce the overhead and ensure better quality and these maybe from the Human resource department in addition to the other production specific areas.
The goal of TQM is to have zero defects in the production system and service delivery. Quality Engineers who support the product development and customer support executives are responsible for product quality delivery can undertake regular training and development and adapting as a part of the company culture. In addition TQM require that all employees subscribe to the philosophy hence it's necessary for HR department to adopt certain practices to ensure smooth implementation of various initiatives undertaken by TQM. Let's call this a customer oriented service of HRM.
TQM require following principles to be adhered:
1. Focus on customer needs.
2. Focus on problem prevention.
3. Make continuous process improvements.
4. First time right and timely delivery.
5. Be flexible in the constantly changing requirements
Quality improvement initiatives require that team is of more important than individual. HR needs to provides the following:
1. Providing the resources who have the right capability.
2. Training the resources.
3. Managing the progress in achieving the quality goals.
3. Measuring the continuous improvement of individual and team.
To ensure this HR can develop a systemic approach rather than a role/function approach. The tools and techniques that can be used are:
1. Recruiting people who adhere and promote the TQM philosophy at middle and senior management level.
2. Value driven Team development using training, group exercise and quality awareness training.
3. Development of survey and employee feedback instruments for basic adherence to systems and procedures.
4. Ensuring smooth operations of self-managing teams by identifying and rectifying bottlenecks related to performance.
5. Measures of reward system to boast morale.
6. 360-degree feedback on a continual basis in addition to performance appraisal periods.
Special consideration need to be taken up for team formation. A Personality type assessment is needed to setup a 100% self-managed team and will surely be a key to success. For a stable organization further six sigma projects need to be undertaken to reduce the overhead and ensure better quality and these maybe from the Human resource department in addition to the other production specific areas.
Friday, August 6, 2010
Limits of Software Evaluation Assurance
Its very common to test applications for Software Quality Assurance but there is a Software Evaluation Assurance that defines the Software assurance level that needs a equivalent consideration. The levels are of importance to all QA engineers: These levels starts with:
EAL1 - Functionally tested - Its suffice to ensure the functionality is consistent as per documentation. that's what most QA Engineers test and verify.
at EAL2 - Structurally tested - In this the users require a low to moderate level of Independently assured security in the absence of complete development record. (e.g. legacy systems)
at EAL3 - Methodically tested and checked - users require moderate level of independently assured security and require thorough investigation of TOE and its development without substantial re-engineering.
at EAL 4 - Methodically designed, tested and reviewed - users require moderate to high level of independently assured security in conventional commodity TOE and prepared to incur security specific engineering costs. examples are Windows, Linux operating systems.
EAL 5 is Semi-formally designed and tested, EAL 6 is Semi-formally verified design and tested, EAL 7 is Formally verified design and tested. EAL 7 is used for devices such as file systems, USB device, graphics and networking cards.
so if a software is at EAL 4 then EAL 2 would also be required and it would be part of the development process. Are there any automation tools can validate beyond EAL 1? In EAL 7 one would assume that the testing model is mathematically proven and guaranteed to work. That is definitely an ideal case. In some systems tools development projects it may be possible to develop a custom test automation software to do the verification that guarantee the outcome.
EAL1 - Functionally tested - Its suffice to ensure the functionality is consistent as per documentation. that's what most QA Engineers test and verify.
at EAL2 - Structurally tested - In this the users require a low to moderate level of Independently assured security in the absence of complete development record. (e.g. legacy systems)
at EAL3 - Methodically tested and checked - users require moderate level of independently assured security and require thorough investigation of TOE and its development without substantial re-engineering.
at EAL 4 - Methodically designed, tested and reviewed - users require moderate to high level of independently assured security in conventional commodity TOE and prepared to incur security specific engineering costs. examples are Windows, Linux operating systems.
EAL 5 is Semi-formally designed and tested, EAL 6 is Semi-formally verified design and tested, EAL 7 is Formally verified design and tested. EAL 7 is used for devices such as file systems, USB device, graphics and networking cards.
so if a software is at EAL 4 then EAL 2 would also be required and it would be part of the development process. Are there any automation tools can validate beyond EAL 1? In EAL 7 one would assume that the testing model is mathematically proven and guaranteed to work. That is definitely an ideal case. In some systems tools development projects it may be possible to develop a custom test automation software to do the verification that guarantee the outcome.
Using data integrity and data validity as drivers for data inTesting
Every time there is a need for functional testing of Software application the task at hand is clearly for verifying that application perform as per the specifications These specs are prepared by the Business Analyst and/or Customer and the other stakeholders defining the requirement.
The Data on which this application will be typically run when its in use cannot be defined 100% of the time beforehand because that's ideally what is being modeled by customer to generate the product/application/service. We attempt to go a step further in the requirements analysis where the predictive modeling that defines the requirements is the result of the inefficiencies of the data at hand with the current working set of data.
In trying to do ensure data integrity and the data validity of the delivered application, we then ask what could go wrong? The goal here is that the consistency of Data and Data Integrity be maintained only then the modeling will be a successful. A typical example is customer table will have 10 fields and all fields should be entered in order to generate a graph on a certain column. This example ensures that modeling requirement is acceptable. Its also the top priority to ensure a UAT(user acceptance testing).
A very appropriate explanation on the difference between Data Integrity and Data Validity here.
We need to assume that the customer will eventually use his own data although that is not shared 100% upfront most of the time. In such cases its essential to have all typed data applied to testing dataset in addition to the 100% coverage dataset. A brief primer on Data Modeling can be found here
The Data on which this application will be typically run when its in use cannot be defined 100% of the time beforehand because that's ideally what is being modeled by customer to generate the product/application/service. We attempt to go a step further in the requirements analysis where the predictive modeling that defines the requirements is the result of the inefficiencies of the data at hand with the current working set of data.
In trying to do ensure data integrity and the data validity of the delivered application, we then ask what could go wrong? The goal here is that the consistency of Data and Data Integrity be maintained only then the modeling will be a successful. A typical example is customer table will have 10 fields and all fields should be entered in order to generate a graph on a certain column. This example ensures that modeling requirement is acceptable. Its also the top priority to ensure a UAT(user acceptance testing).
A very appropriate explanation on the difference between Data Integrity and Data Validity here.
We need to assume that the customer will eventually use his own data although that is not shared 100% upfront most of the time. In such cases its essential to have all typed data applied to testing dataset in addition to the 100% coverage dataset. A brief primer on Data Modeling can be found here
Subscribe to:
Posts (Atom)